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;

namespace PDFGenerator.Presentation.Section
{
    class S174 : ISezione
    {

        #region ISezione Members

        public void writeSezione(DataThread dataThread)
        {
            DocumentPDF document = dataThread.DocumentPDF;
            DataSetS174 set = (DataSetS174)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.Bonus.Rows.Count > 0)
            {
                //if (document.checkMargin(190))
                // document.addPage();

                #region E-FOI80
                //E-FOI80 if ((set.Bonus.Rows.Count == 1) && (set.Protetti.Rows.Count > 0))
                if ((set.Bonus.Rows.Count == 1) && (set.FOI80.Rows.Count > 0))
                #endregion
                {
                    if (document.checkMargin(280))
                        document.addPage();
                }
                else
                {

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

                #region E-FOI80
                //E-FOI80 if (set.Protetti.Rows.Count > 0) 
                if (set.FOI80.Rows.Count > 0)
                #endregion

                {
                    document.setChapterHeader("");
                    document.setSezTitoloWithoutNumber("Bonus");
                }
                string testo = dataThread.SezioneReport.TestoIntroduttivo;
                testo = testo.Replace("$/Prodotto/$", set.Bonus.Rows[0]["DES_PROD"].ToString());
                document.setChapterHeader(testo, 0, 520, 8);
                Bonus(dataThread);
            }



        }



        #endregion
        private void Bonus(DataThread dataThread)
        {

            DocumentPDF document = dataThread.DocumentPDF;
            DataSetS174 set = (DataSetS174)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", "Contratto " + riga["cod_conf"], 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;
            DataSetS174 set = (DataSetS174)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"];
            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;
            DataSetS174 set = (DataSetS174)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


    }
}