using GMW_data;
using SteamWare;
using System;
using System.Web.UI;

namespace GMW.WebUserControls
{
    public partial class mod_bolle4odette : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            btnDoCreate.Text = "Associa bolla - etichette";
            lblDataBolla.Text = "Data Bolla";
            lblNumBolla.Text = "Num Bolla";
            lblWarning.Text = "";
            if (!Page.IsPostBack)
            {
                txtRaggMag.Text = memLayer.ML.confReadString("raggMagOdette");
            }
        }

        /// <summary>
        /// evento nuovo valore
        /// </summary>
        public event EventHandler eh_nuovoValore;
        /// <summary>
        /// crea le etichette odette controllando dati bolla ed associando parametri a UDC
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnDoCreate_Click(object sender, EventArgs e)
        {
            // cerco bolla sennò mostro errore...
            string CodLista = memLayer.ML.StringSessionObj("CodListaOd_sel");
            decimal NumBolla = Convert.ToDecimal(txtNumBolla.Text.Trim());
            decimal DatBolla = Convert.ToDecimal(txtDataBolla.Text.Trim());
            string RaggMag = txtRaggMag.Text.Trim();
            string GrpBolla = txtGrBolle.Text.Trim();
            string particolare = "";
            bool tuttoOk = false;
            try
            {
                particolare = MagClass.magazzino.taElencoListePrelievo.getByCodLista(CodLista)[0].Particolare;
            }
            catch
            {
                httpLog(string.Format("Particolare non trovato per codLista {0}", CodLista), tipoLog.ERROR);
            }
            if (Odette.mgr.checkCodBolla(RaggMag, GrpBolla, NumBolla, DatBolla, particolare))
            {
                // chiamo creazione etichette!
                tuttoOk = Odette.mgr.creaOdetteByBollaPackList(CodLista, RaggMag, GrpBolla, NumBolla, DatBolla, particolare, ddlLingua.SelectedValue);
                if (!tuttoOk)
                {
                    lblWarning.Visible = true;
                    lblWarning.Text = memLayer.ML.StringSessionObj("errCreazOdette");
                }
                else
                {
                    lblWarning.Visible = false;
                    lblWarning.Text = "";
                    // sollevo evento new!
                    if (eh_nuovoValore != null)
                    {
                        eh_nuovoValore(this, new EventArgs());
                    }
                }
            }
            else
            {
                lblWarning.Visible = true;
                if (Odette.mgr.taOdette.getByBolla(RaggMag, GrpBolla, NumBolla, DatBolla, particolare).Rows.Count > 0)
                {
                    lblWarning.Text = traduci("BollaGiaAssociata");
                }
                else if (Odette.mgr.taBORI.getByKeyPart(RaggMag, GrpBolla, NumBolla, DatBolla).Rows.Count > 0)
                {
                    lblWarning.Text = traduci("MismatchParticolare");
                }
                else
                {
                    lblWarning.Text = traduci("BollaNonTrovata");
                }
            }
        }
        /// <summary>
        /// wrapper per log con salvataggio dell'IP del chiamante
        /// </summary>
        /// <param name="_testoPre"></param>
        /// <returns></returns>
        public bool httpLog(string _testoPre)
        {
            bool answ = false;
            string postazione_IP = "";
            try
            {
                postazione_IP = string.Format(" | {0} | ", Request.UserHostName);
            }
            catch
            { }
            logger.lg.scriviLog(postazione_IP + _testoPre);
            return answ;
        }
        /// <summary>
        /// wrapper per log con salvataggio dell'IP del chiamante
        /// </summary>
        /// <param name="_testoPre"></param>
        /// <returns></returns>
        public bool httpLog(string testoLog, tipoLog tipo)
        {
            bool answ = false;
            string postazione_IP = "";
            try
            {
                postazione_IP = string.Format(" | {0} | ", Request.UserHostName);
            }
            catch
            { }
            logger.lg.scriviLog(postazione_IP + testoLog, tipo);
            return answ;
        }
        /// <summary>
        /// wrapper traduzione
        /// </summary>
        /// <param name="lemma"></param>
        /// <returns></returns>
        public string traduci(object lemma)
        {
            return user_std.UtSn.Traduci(lemma.ToString());
        }


    }
}