using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Text;
using PDFGenerator.Presentation.Section.Tables;
using PDFGenerator.BusinessLayer.DataSection;
using PDFGenerator.BusinessLayer;
using System.Threading;
using System.Globalization;
using NLog;

namespace PDFGenerator.Presentation.Section
{
    class S173 : ISezione
    {
        private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
        #region ISezione Members

        public void writeSezione(DataThread dataThread)
        {
            dataThread.SETDATA();
            DocumentPDF document = dataThread.DocumentPDF;
            DataSetS173 set = (DataSetS173)dataThread.Data.DatiSezione;
            if (dataThread.TipoContratto != TipoContratto.Private)
            {


                if ((set.Bonus.Rows.Count > 0) && (set.Protetti.Rows.Count == 1))

                {
                    if (document.checkMargin(280))
                        document.addPage();
                }
                else
                {

                    if (document.checkMargin(260))
                        document.addPage();
                }
            }

            document.setSezTitolo(dataThread.SezioneReport.Titolo);



            if (set.TipoProdotto.Rows[0]["TipoProdotto"].Equals("1"))
            {
                if (set.Protetti.Rows.Count > 0)
                {
                    if (document.checkMargin(100))
                        document.addPage();

                    #region E_FOI80
                    /*   Commento le linee sottostanti perché la scritta non vogliamo far uscire la scritta generica
                         "Dettaglio prodotti" ma il nome del prodotto
                    */
                    //E_FOI80 if (set.Bonus.Rows.Count > 0)  {
                    //E_FOI80    document.setChapterHeader("");
                    //E_FOI80    document.setSezTitoloWithoutNumber("Dettaglio prodotti");
                    //E_FOI80 }
                    //document.setChapterHeader("");
                    //document.setSezTitoloWithoutNumber(set.Protetti.Rows[0]["DES_PROD_TIT"].ToString());
                    #endregion

                    //string testo = dataThread.SezioneReport.TestoIntroduttivoAlternativo;
                    string testo = dataThread.SezioneReport.TestoIntroduttivo;


                    #region E_FOI80
                    //E_FOI80 testo = testo.Replace("$/Prodotto/$", set.Protetti.Rows[0]["DES_PROD"].ToString());
                    testo = testo.Replace("$/Prodotto/$", set.Protetti.Rows[0]["DES_PROD_TIT"].ToString());
                    testo = testo.Replace("$/QMaxPerc/$", set.Protetti.Rows[0]["QUOTA_MAX_PERC"].ToString());
                    document.setChapterHeader(testo, 0, 520, 8);
                    CapitaleProtetto(dataThread);
                }
            }
            #endregion



            #region NUOVA GESTIONE FOI80 - 24/11/2015 - E_FOI80
            if (set.TipoProdotto.Rows[0]["TipoProdotto"].Equals("2"))
            {
                if (set.FOI80.Rows.Count > 0)
                {
                    if ((set.Protetti.Rows.Count == 1) && (set.FOI80.Rows.Count > 0))
                    {
                        if (document.checkMargin(105)) //abbiamo aumentato da 100 a 105 per far andare a pagina nuova 
                            document.addPage();
                    }

                    //document.setSezTitoloWithoutNumber(set.FOI80.Rows[0]["DESPRODTIT"].ToString());

                    string testo = dataThread.SezioneReport.TestoIntroduttivo;
                    testo = testo.Replace("$/Prodotto/$", set.FOI80.Rows[0]["DESPRODTIT"].ToString());
                    testo = testo.Replace("$/QMaxPerc/$", set.FOI80.Rows[0]["QUOTA_MAX_PERC"].ToString());
                    document.setChapterHeader(testo, 0, 520, 8);
                    FonditaliaCrescitaProtetta80(dataThread);
                }
            }
            #endregion

            /*** TEST - Verifica Tempistica 09/11/2023 - Pino ****/
            /*** Inserimento log per verifica tempistica della sezione ***/
            //DateTimeOffset dateOffsetValueFin = DateTimeOffset.Parse(DateTime.Now.ToString("hh:mm:ss.ffff"));
            //var tDiff = dateOffsetValueFin - dateOffsetValueIni;
            //logger.Trace("S173 " + tDiff);
            /**************************************************************/
        }



        #endregion
        private void Bonus(DataThread dataThread)
        {

            DocumentPDF document = dataThread.DocumentPDF;
            DataSetS137 set = (DataSetS137)dataThread.Data.DatiSezione;

            float htestosotto = 0;

            for (int r = 0; r < set.Bonus.Rows.Count; r++)
            {
                Tabella tabellaDati = new Tabella();
                tabellaDati.HeaderFont = 8;
                DataRow riga = set.Bonus.Rows[r];
                if (r == set.Bonus.Rows.Count - 1) htestosotto = 100;
                if (document.checkMargin((tabellaDati.AltezzaCella * 5) + htestosotto))
                    document.addPage();
                tabellaDati.Header = true;
                tabellaDati.Y = document.getLastPos();
                tabellaDati.X = document.getMargineLeft();
                tabellaDati.Colonne.Add(new Colonna("DESCRIZIONE", "Descrizione", 352, TipoAllineamento.SINISTRA, false, 7, false));
                tabellaDati.Colonne.Add(new Colonna("CTV", "Controvalore (€)", 90, TipoAllineamento.DESTRA, false, 7, false));
                tabellaDati.Colonne.Add(new Colonna("DATARIF", "Data di riferimento", 70, TipoAllineamento.DESTRA, false, 7, false));
                tabellaDati.Draw(new DatiTabella(TabellaBonus(riga)), document);
                document.setLastPos(tabellaDati.AltezzaTabella - 15);
            }
            document.setChapterHeader(dataThread.SezioneReport.Nota, 0, 520, 7);
        }

        private void CapitaleProtetto(DataThread dataThread)
        {

            DocumentPDF document = dataThread.DocumentPDF;
            DataSetS173 set = (DataSetS173)dataThread.Data.DatiSezione;

            float htestosotto = 0;


            for (int r = 0; r < set.Protetti.Rows.Count; r++)
            {
                Tabella tabellaDati = new Tabella();
                tabellaDati.HeaderFont = 8;
                DataRow riga = set.Protetti.Rows[r];
                if (r == set.Protetti.Rows.Count - 1) htestosotto = 100;
                if (document.checkMargin((tabellaDati.AltezzaCella * 4) + htestosotto))
                    document.addPage();
                tabellaDati.Header = true;
                tabellaDati.Y = document.getLastPos();
                tabellaDati.X = document.getMargineLeft();

                #region FOI80
                //E-FOI80 tabellaDati.Colonne.Add(new Colonna("DESCRIZIONE", "Descrizione", 232, TipoAllineamento.SINISTRA, false, 7, false));
                tabellaDati.Colonne.Add(new Colonna("DESCRIZIONE", riga["DES_PROD_TIT"] + "<br>Contratto " + riga["COD_CONF"], 232, TipoAllineamento.SINISTRA, false, 7, false));
                #endregion

                tabellaDati.Colonne.Add(new Colonna("QUOTA", "Quota (€)", 60, TipoAllineamento.DESTRA, false, 7, false));
                tabellaDati.Colonne.Add(new Colonna("NUMEROQUOTE", "Numero Quote", 60, TipoAllineamento.DESTRA, false, 7, false));
                tabellaDati.Colonne.Add(new Colonna("CONTROVALORE", "Controvalore (€)", 90, TipoAllineamento.DESTRA, false, 7, false));
                tabellaDati.Colonne.Add(new Colonna("DATARIF", "Data di riferimento", 70, TipoAllineamento.DESTRA, false, 7, false));
                tabellaDati.Draw(new DatiTabella(TabellaCapitaleProtetto(riga)), document);
                document.setLastPos(tabellaDati.AltezzaTabella - 15);
            }
            string nota = dataThread.SezioneReport.Nota;
            nota = nota.Replace("$/QMaxPerc/$", set.Protetti.Rows[0]["QUOTA_MAX_PERC"].ToString());
            document.setChapterHeader(nota, 0, 520, 7);

        }




        private DataTable TabellaBonus(DataRow riga)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("DESCRIZIONE");
            dt.Columns.Add("CTV");
            dt.Columns.Add("DATARIF");
            DataRow dr = dt.NewRow();
            dr["DESCRIZIONE"] = riga["DES_PROD"] + " " + riga["COD_CONF"];
            dr["CTV"] = riga["CTV"];
            dr["DATARIF"] = riga["DT_TRIM"];
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr["DESCRIZIONE"] = riga["DESBONUS_M"];
            dr["CTV"] = riga["BONUS_M"];
            dr["DATARIF"] = riga["DTDEC_M"];
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr["DESCRIZIONE"] = riga["DESBONUS_5"];
            dr["CTV"] = riga["BONUS_5"];
            dr["DATARIF"] = riga["DTDEC_5"];
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr["DESCRIZIONE"] = riga["DESBONUS_10"];
            dr["CTV"] = riga["BONUS_10"];
            dr["DATARIF"] = riga["DTDEC_10"];
            dt.Rows.Add(dr);
            return dt;
        }

        private DataTable TabellaCapitaleProtetto(DataRow riga)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("DESCRIZIONE");
            dt.Columns.Add("QUOTA");
            dt.Columns.Add("NUMEROQUOTE");
            dt.Columns.Add("CONTROVALORE");
            dt.Columns.Add("DATARIF");
            DataRow dr = dt.NewRow();

            #region FOI80
            //E-FOI80 dr["DESCRIZIONE"] =  riga["DES_PROD"] + " " + riga["COD_CONF"];
            dr["DESCRIZIONE"] = riga["DES_PROD"];
            #endregion

            dr["QUOTA"] = riga["QUOTA"];
            dr["NUMEROQUOTE"] = riga["NUMEROQUOTE"];
            dr["CONTROVALORE"] = riga["CONTROVALORE"];
            dr["DATARIF"] = riga["DATARIF"];
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr["DESCRIZIONE"] = riga["DES_MAX"];
            dr["QUOTA"] = riga["QUOTA_MAX"];
            dr["NUMEROQUOTE"] = "-";
            dr["CONTROVALORE"] = "-";
            dr["DATARIF"] = riga["DATARIF_MAX"];
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr["DESCRIZIONE"] = riga["DES_PROT"];
            dr["QUOTA"] = riga["QUOTA_PROT"];
            dr["NUMEROQUOTE"] = riga["NUMEROQUOTE_PROT"];
            dr["CONTROVALORE"] = riga["CONTROVALORE_PROT"];
            dr["DATARIF"] = "-";
            dt.Rows.Add(dr);
            return dt;
        }

        #region NUOVA GESTIONE FOI80 - 24/11/2015 - E_FOI80 
        private void FonditaliaCrescitaProtetta80(DataThread dataThread)
        {
            DocumentPDF document = dataThread.DocumentPDF;
            DataSetS173 set = (DataSetS173)dataThread.Data.DatiSezione;

            float htestosotto = 0;


            for (int r = 0; r < set.FOI80.Rows.Count; r++)
            {
                Tabella tabellaDati = new Tabella();
                tabellaDati.HeaderFont = 8;
                DataRow riga = set.FOI80.Rows[r];
                if (r == set.FOI80.Rows.Count - 1) htestosotto = 100;
                if (document.checkMargin((tabellaDati.AltezzaCella * 4) + htestosotto))
                    document.addPage();
                tabellaDati.Header = true;
                tabellaDati.Y = document.getLastPos();
                tabellaDati.X = document.getMargineLeft();
                tabellaDati.Colonne.Add(new Colonna("DESCRIZIONE", "Contratto " + riga["CODCONF"], 232, TipoAllineamento.SINISTRA, false, 7, false));
                tabellaDati.Colonne.Add(new Colonna("QUOTA", "Quota (€)", 60, TipoAllineamento.DESTRA, false, 7, false));
                tabellaDati.Colonne.Add(new Colonna("NUMEROQUOTE", "Numero Quote", 60, TipoAllineamento.DESTRA, false, 7, false));
                tabellaDati.Colonne.Add(new Colonna("CONTROVALORE", "Controvalore (€)", 90, TipoAllineamento.DESTRA, false, 7, false));
                tabellaDati.Colonne.Add(new Colonna("DATARIF", "Data di riferimento", 70, TipoAllineamento.DESTRA, false, 7, false));
                tabellaDati.Draw(new DatiTabella(TabellaFOI80(riga)), document);
                document.setLastPos(tabellaDati.AltezzaTabella - 15);
            }
            string nota = dataThread.SezioneReport.Nota;
            nota = nota.Replace("$/QMaxPerc/$", set.FOI80.Rows[0]["QUOTA_MAX_PERC"].ToString());
            document.setChapterHeader(nota, 0, 520, 7);

        }

        private DataTable TabellaFOI80(DataRow riga)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("DESCRIZIONE");
            dt.Columns.Add("QUOTA");
            dt.Columns.Add("NUMEROQUOTE");
            dt.Columns.Add("CONTROVALORE");
            dt.Columns.Add("DATARIF");
            DataRow dr = dt.NewRow();
            //dr["DESCRIZIONE"] = riga["DESPROD"] + " " + riga["CODCONF"];
            dr["DESCRIZIONE"] = riga["DESPROD"];
            dr["QUOTA"] = riga["PREZZO"];
            dr["NUMEROQUOTE"] = riga["QUOTE"];
            dr["CONTROVALORE"] = riga["CTV"];
            dr["DATARIF"] = riga["DTRIFE"];
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr["DESCRIZIONE"] = riga["DESMAX"];
            dr["QUOTA"] = riga["PREZZOMAX"];
            dr["NUMEROQUOTE"] = "-";
            dr["CONTROVALORE"] = "-";
            dr["DATARIF"] = riga["DTPREZZOMAX"];
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr["DESCRIZIONE"] = riga["DESPROT"];
            dr["QUOTA"] = riga["PREZZOPROT"];
            dr["NUMEROQUOTE"] = riga["QUOTE"];
            dr["CONTROVALORE"] = riga["CTRVIMPPROT"];
            dr["DATARIF"] = "-";
            dt.Rows.Add(dr);
            return dt;
        }
        #endregion


    }
}