using System;

namespace GMW_data.Type
{
    /// <summary>
    /// classe che rappresenta l'intero UDC
    /// </summary>
    public class Cartellino
    {
        public Cartellino()
        {
        }
        public Cartellino(DS_Applicazione.ElencoCartelliniRow riga)
        {
            setFromTabRow(riga);
        }

        /// <summary>
        /// Codice UDC
        /// </summary>
        public string UDC { get; set; }
        /// <summary>
        /// Codice company
        /// </summary>
        public string CodCS { get; set; }
        /// <summary>
        /// Codice Cliente
        /// </summary>
        public string CodCliente { get; set; }
        /// <summary>
        /// Ragione sociale cliente
        /// </summary>
        public string RagSociale { get; set; }
        /// <summary>
        /// Codice della Famiglia del particolare (se presente)
        /// </summary>
        public string CodFamiglia { get; set; }
        /// <summary>
        /// Famiglia del particolare (se presente)
        /// </summary>
        public string DescFamiglia { get; set; }
        /// <summary>
        /// Particolare
        /// </summary>
        public string Particolare { get; set; }
        /// <summary>
        /// Descrizione particolare
        /// </summary>
        public string DescParticolare { get; set; }
        /// <summary>
        /// Disegno Grezzo
        /// </summary>
        public string DisegnoGrezzo { get; set; }
        /// <summary>
        /// Esponente
        /// </summary>
        public string Esponente { get; set; }
        /// <summary>
        /// Codice impianto
        /// </summary>
        public string CodImpianto { get; set; }
        /// <summary>
        /// Descrizione impianto
        /// </summary>
        public string DescImpianto { get; set; }
        /// <summary>
        /// Codice Stampo
        /// </summary>
        public string CodStampo { get; set; }
        /// <summary>
        /// Figura
        /// </summary>
        public string Figura { get; set; }
        /// <summary>
        /// Data fusione
        /// </summary>
        public DateTime DataFus { get; set; }
        /// <summary>
        /// Turno Fusione
        /// </summary>
        public int TurnoFus { get; set; }
        /// <summary>
        /// Codice Imballo associato all'UDC
        /// </summary>
        public string CodImballo { get; set; }
        /// <summary>
        /// Descrizione Imballo associato all'UDC
        /// </summary>
        public string DescImballo { get; set; }
        /// <summary>
        /// Codice operatore della dichiarazione
        /// </summary>
        public string CodSoggetto { get; set; }
        /// <summary>
        /// Cognome operatore della dichiarazione
        /// </summary>
        public string Cognome { get; set; }
        /// <summary>
        /// Nome operatore della dichiarazione
        /// </summary>
        public string Nome { get; set; }
        /// <summary>
        /// Numero contenitore (PROGRESSIVO)
        /// </summary>
        public int NumCont { get; set; }
        /// <summary>
        /// Tara dell'UDC
        /// </summary>
        public double Tara { get; set; }
        /// <summary>
        /// Quantità associata all'UDC
        /// </summary>
        public decimal Quantita { get; set; }
        /// <summary>
        /// Codice Stato pezzo (sabbiato, smaterozzato, ...)
        /// </summary>
        public string CodStato { get; set; }
        /// <summary>
        /// Descrizione Stato pezzo (sabbiato, smaterozzato, ...)
        /// </summary>
        public string DescStato { get; set; }
        /// <summary>
        /// Codice Posizione associato all'UDC
        /// </summary>
        public int IdxPosizione { get; set; }
        /// <summary>
        /// Peso totale rilevato
        /// </summary>
        public double PesoTot { get; set; }
        /// <summary>
        /// Peso totale rilevato
        /// </summary>
        public double PesoCad { get; set; }
        /// <summary>
        /// Data di creazione dell'UDC
        /// </summary>
        public DateTime CreateDate { get; set; }
        /// <summary>
        /// Data ultima modifica UDC
        /// </summary>
        public DateTime ModDate { get; set; }
        /// <summary>
        /// inizializza a partire da una riga statoOdpUdc
        /// </summary>
        /// <param name="riga"></param>
        public void setFromTabRow(DS_Applicazione.ElencoCartelliniRow riga)
        {
            UDC = riga.UDC.Trim();
            CodCS = riga.CodCS.Trim();
            CodCliente = riga.CodCliente.Trim();
            RagSociale = riga.RagSociale.Trim();
            Particolare = riga.Particolare.Trim();
            DescParticolare = riga.DescParticolare.Trim();
            DisegnoGrezzo = riga.DisegnoGrezzo.Trim();
            Esponente = riga.Esponente.Trim();
            CodImpianto = riga.CodImpianto.Trim();
            DescImpianto = riga.DescImpianto.Trim();
            CodCliente = riga.CodCliente.Trim();
            CodStampo = riga.CodStampo.Trim();
            Figura = riga.Figura.Trim();
            DataFus = riga.DataFus;
            TurnoFus = riga.TurnoFus;
            CodImballo = riga.CodImballo.Trim();
            CodSoggetto = riga.CodSoggetto.Trim();
            NumCont = riga.NumCont;
            Tara = riga.Tara;
            Quantita = riga.Qta;
            CodStato = riga.CodStato.Trim();
            IdxPosizione = riga.IdxPosizione;
            PesoTot = riga.PesoTot;
            PesoCad = riga.PesoCad;
            CreateDate = riga.CreateDate;
            ModDate = riga.ModDate;
            // campi calcolati
            DS_Applicazione.AnagOperatoriRow rigaOper = GMW_data.DataProxy.obj.taAnagOperatore.getByCodSoggetto(riga.CodSoggetto)[0];
            try
            {
                Cognome = rigaOper.Cognome;
            }
            catch
            {
                Cognome = "n.d.";
            }
            try
            {
                Nome = rigaOper.Nome;
            }
            catch
            {
                Nome = "n.d.";
            }
            try
            {
                DescImballo = DataProxy.obj.taAnagImballi.stp_getImballoByCod(riga.CodImballo)[0].DescImballo;
            }
            catch
            {
                DescImballo = "n.d.";
            }
            try
            {
                DescStato = DataProxy.obj.taStatiProd.getByCodStato(riga.CodStato)[0].DescStato;
            }
            catch
            {
                DescStato = "n.d.";
            }
            try
            {
                CodFamiglia = DataProxy.obj.taAnagParticolari.getByParticolare(riga.Particolare)[0].CodFamiglia;
            }
            catch
            {
                CodFamiglia = "n.d.";
            }
            try
            {
                if (CodFamiglia != "n.d.")
                {
                    DescFamiglia = DataProxy.obj.taAnagFamiglie.getByCodFamiglia(CodFamiglia)[0].DescFamiglia;
                }
                else
                {
                    DescFamiglia = "n.d.";
                }
            }
            catch
            {
                DescFamiglia = "n.d.";
            }
        }
    }
}
