using System;
using System.Data;
using System.Text;
using System.Collections.Generic;
//using it.bancafideuram.nac;
namespace PDFGenerator.BusinessLayer.DataSection
{
    public class DS25Anagrafica : IDataSection
    {



        public DataSectionResult getDataSection(List<SessionStruct> tabelleSessione, string querySql, DataThread dataThread)
        {
            try
            {
                DataSectionResult dsr = new DataSectionResult();

                FormatNum MAmi = new FormatNum();

                // Ritorna i dati per la sezione 
                DataTable dt = SectionManager.GetDataSection(tabelleSessione, querySql, dataThread);

                DatasetS25 ds25 = new DatasetS25();
                DataRow rowAnag = ds25.DatiAnagrafici.NewRow();
                DataRow dr = ds25.DatiAnagrafici.NewRow();

                if (dt.Rows.Count > 0)
                {
                    rowAnag = dt.Rows[0];

                    dr = ds25.DatiAnagrafici.NewRow();
                    dr["Descrizione"] = "Cliente";
                    if (dataThread.CodiceFiscale.Length == 11 || dataThread.CodiceFiscale.Contains("@"))
                    {
                        //persone giuridiche
                        if (dataThread.CodiceFiscale.Contains("@"))
                        {
                            string[] codiceMandato = dataThread.CodiceFiscale.Split('@');
                            dr["Valore"] = MAmi.CapitalizeText(dataThread.CognomeCliente) + " " + MAmi.CapitalizeText(dataThread.NomeCliente) + " - " + codiceMandato[1];

                        }
                        else
                            dr["Valore"] = MAmi.CapitalizeText(dataThread.CognomeCliente) + " " + MAmi.CapitalizeText(dataThread.NomeCliente) + " (" + rowAnag["CodiceFiscale"].ToString() + ")";

                    }
                    else
                    {
                        //persone fisiche
                        dr["Valore"] = MAmi.CapitalizeText(dataThread.NomeCliente) + " " + MAmi.CapitalizeText(dataThread.CognomeCliente) + " (" + rowAnag["CodiceFiscale"].ToString() + ")";

                        //dr["Valore"] = CapitalizeText(rowAnag["cliente"].ToString()) + " (" + rowAnag["CodiceFiscale"].ToString() + ")";
                    }

                    ds25.DatiAnagrafici.Rows.Add(dr);

                    if (!rowAnag.IsNull("DatadiNascita"))
                    {
                        //Se � una persona giuridica non mostro la data
                        if (dataThread.CodiceFiscale.Length != 11 || dataThread.CodiceFiscale.Contains("@"))
                        {
                            dr = ds25.DatiAnagrafici.NewRow();
                            dr["Descrizione"] = "Data di nascita";
                            //strAppo = new StringBuilder(rowAnag["DataNascita"].ToString());
                            //strAppo.Append(" (");
                            //System.TimeSpan eta = DateTime.Now - Convert.ToDateTime(rowAnag["DataNascita"]);
                            //strAppo.Append((int)Math.Round(eta.Days / 365.25F, 0));
                            //strAppo.Append(" anni)");
                            if (!rowAnag.IsNull("Eta"))
                                dr["Valore"] = rowAnag["DatadiNascita"].ToString() + " (" + rowAnag["Eta"].ToString() + " anni)";
                            else
                                dr["Valore"] = rowAnag["DatadiNascita"].ToString();

                            ds25.DatiAnagrafici.Rows.Add(dr);
                        }

                    }

                    //if (!rowAnag.IsNull("Professione")) {
                    //    dr = ds25.DatiAnagrafici.NewRow();
                    //    dr["Descrizione"] = "Professione";
                    //    dr["Valore"] = rowAnag["Professione"].ToString();
                    //    ds25.DatiAnagrafici.Rows.Add(dr);
                    //}
                    //verificare lo stato civile
                    //if (!rowAnag.IsNull("statoCivile")) {
                    //    dr = ds25.DatiAnagrafici.NewRow();
                    //    dr["Descrizione"] = "Stato civile";
                    //    dr["Valore"] = rowAnag["statoCivile"].ToString();
                    //    ds25.DatiAnagrafici.Rows.Add(dr);
                    //}

                    if (!dataThread.CodiceFiscale.Contains("@"))
                    {
                        if (!rowAnag.IsNull("nucleoFamiliare"))
                        {
                            dr = ds25.DatiAnagrafici.NewRow();
                            dr["Descrizione"] = "Nucleo familiare";
                            //strAppo = new StringBuilder(rowAnag["NumeroComponenti"].ToString());
                            //strAppo.Append(" (");
                            //strAppo.Append(rowAnag["NumeroFigli"].ToString());
                            //if (Convert.ToInt16(rowAnag["NumeroFigli"].ToString()) == 1)
                            //    strAppo.Append(" figlio)");
                            //else
                            //    strAppo.Append(" figli)");
                            dr["Valore"] = rowAnag["nucleoFamiliare"].ToString();
                            //ds25.DatiAnagrafici.Rows.Add(dr);
                        }

                        if (!rowAnag.IsNull("Residenza"))
                        {
                            dr = ds25.DatiAnagrafici.NewRow();
                            dr["Descrizione"] = "Indirizzo";
                            ////CORSO VITTORIO EMANUELE II 154, 00186 ROMA (RM)
                            //string temp = ClsFunzioniGeneriche.FormattaIndirizzo(rowAnag["Indirizzo"].ToString().Trim());
                            //dr["Valore"] = temp + ", " + MAmi.CapitalizeText(rowAnag["Cap"].ToString()) + MAmi.CapitalizeText(rowAnag["Citta"].ToString()) + "(" + rowAnag["Provincia"].ToString().Trim() + ")";
                            //dr["Valore"] = MAmi.CapitalizeText(rowAnag["Indirizzo"].ToString()).Trim() + ", " + MAmi.CapitalizeText(rowAnag["Cap"].ToString()) + MAmi.CapitalizeText(rowAnag["Citta"].ToString()) + "(" + rowAnag["Provincia"].ToString().Trim() + ")";

                            string indirizzo = rowAnag["Indirizzo"].ToString().Trim();
                            if (indirizzo.EndsWith(","))
                                indirizzo = indirizzo.Remove(indirizzo.Length - 1, 1);

                            string presso = rowAnag["Presso"] == DBNull.Value ? string.Empty + " " : "<BR>C/O " + rowAnag["Presso"].ToString().Trim() + ", ";

                            //dr["Valore"] = indirizzo + ", " + (dataThread.Periodico ? presso : string.Empty) + rowAnag["Cap"].ToString() + " " + rowAnag["Citta"].ToString() + " (" + rowAnag["Provincia"].ToString().Trim() + ")";
                            dr["Valore"] = indirizzo + ", " + presso + rowAnag["Cap"].ToString() + " " + rowAnag["Citta"].ToString() + " (" + rowAnag["Provincia"].ToString().Trim() + ")";
                            dr["Valore"] = dr["Valore"].ToString().Replace("()", string.Empty);

                            //dr["Valore"] = rowAnag["Indirizzo"].ToString();
                            ds25.DatiAnagrafici.Rows.Add(dr);
                        }
                    }

                    //if (!rowAnag.IsNull("CodicePB"))
                    //{
                    //    dr = ds25.DatiAnagrafici.NewRow();
                    //    dr["Descrizione"] = "Codice PB";
                    //    dr["Valore"] = MAmi.CapitalizeText(rowAnag["CodicePB"].ToString());
                    //    ds25.DatiAnagrafici.Rows.Add(dr);
                    //}

                    //if (!rowAnag.IsNull("CodiceRete"))
                    //{
                    //    dr = ds25.DatiAnagrafici.NewRow();
                    //    dr["Descrizione"] = "Codice Rete";
                    //    dr["Valore"] = MAmi.CapitalizeText(rowAnag["CodiceRete"].ToString());
                    //    ds25.DatiAnagrafici.Rows.Add(dr);
                    //}

                    //if (!rowAnag.IsNull("CodiceContratto"))
                    //{
                    //    dr = ds25.DatiAnagrafici.NewRow();
                    //    dr["Descrizione"] = "Codice Contratto";
                    //    dr["Valore"] = MAmi.CapitalizeText(rowAnag["CodiceContratto"].ToString());
                    //    ds25.DatiAnagrafici.Rows.Add(dr);
                    //}

                    //if (!rowAnag.IsNull("StatoContratto"))
                    //{
                    //    dr = ds25.DatiAnagrafici.NewRow();
                    //    dr["Descrizione"] = "Stato Contratto";
                    //    dr["Valore"] = MAmi.CapitalizeText(rowAnag["StatoContratto"].ToString());
                    //    ds25.DatiAnagrafici.Rows.Add(dr);
                    //}

                    //if (!rowAnag.IsNull("DataSottoscrizione"))
                    //{
                    //    dr = ds25.DatiAnagrafici.NewRow();
                    //    dr["Descrizione"] = "Data Sottoscrizione";
                    //    dr["Valore"] = MAmi.CapitalizeText(rowAnag["DataSottoscrizione"].ToString());
                    //    ds25.DatiAnagrafici.Rows.Add(dr);
                    //}

                    //if (!rowAnag.IsNull("DataPerfezionamento"))
                    //{
                    //    dr = ds25.DatiAnagrafici.NewRow();
                    //    dr["Descrizione"] = "Data Perfezionamento";
                    //    dr["Valore"] = MAmi.CapitalizeText(rowAnag["DataPerfezionamento"].ToString());
                    //    ds25.DatiAnagrafici.Rows.Add(dr);
                    //}

                    //if (!rowAnag.IsNull("FasciaCPP"))
                    //{
                    //    dr = ds25.DatiAnagrafici.NewRow();
                    //    dr["Descrizione"] = "Fascia CPP";
                    //    dr["Valore"] = MAmi.CapitalizeText(rowAnag["FasciaCPP"].ToString());
                    //    ds25.DatiAnagrafici.Rows.Add(dr);
                    //}

                    //if (!rowAnag.IsNull("Indirizzoemail"))
                    //{
                    //    dr = ds25.DatiAnagrafici.NewRow();
                    //    dr["Descrizione"] = "Indirizzo e-mail";
                    //    dr["Valore"] = MAmi.CapitalizeText(rowAnag["Indirizzoemail"].ToString());
                    //    ds25.DatiAnagrafici.Rows.Add(dr);
                    //}

                    //if (!rowAnag.IsNull("ProduzioneReport"))
                    //{
                    //    dr = ds25.DatiAnagrafici.NewRow();
                    //    dr["Descrizione"] = "Produzione Report";
                    //    dr["Valore"] = MAmi.CapitalizeText(rowAnag["ProduzioneReport"].ToString());
                    //    ds25.DatiAnagrafici.Rows.Add(dr);
                    //}   
                }


                dsr.DatiSezione = ds25;
                dsr.Esito = dt.Rows.Count;
                return dsr;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }


    }
}