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 S137 : ISezione
    {

        #region ISezione Members

        public void writeSezione_old(DataThread dataThread)   {
            DocumentPDF document = dataThread.DocumentPDF;
            DataSetS137 set = (DataSetS137)dataThread.Data.DatiSezione;

             

            document.setSezTitolo(dataThread.SezioneReport.Titolo);          
            document.setChapterHeader(dataThread.SezioneReport.TestoIntroduttivo.Replace("$/Prodotto/$",set.Tables["Bonus"].Rows[0]["DES_PROD"].ToString()), 0, 520, 8);
            
            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 = 40;
                if (document.checkMargin(((set.Bonus.Rows.Count + 1) * tabellaDati.AltezzaCella)+htestosotto)) 
                    document.addPage();
                tabellaDati.Header = true;
                tabellaDati.Y = document.getLastPos();
                tabellaDati.X = document.getMargineLeft();
                tabellaDati.Colonne.Add(new Colonna("DESCRIZIONE", "Descrizione", 312, TipoAllineamento.SINISTRA, false, 7, false));
                tabellaDati.Colonne.Add(new Colonna("CTV", "Controvalore (€)", 100, TipoAllineamento.DESTRA, false, 7, false));
                tabellaDati.Colonne.Add(new Colonna("DATARIF", "Data di riferimento", 100, TipoAllineamento.DESTRA, false, 7, false));  
                tabellaDati.Draw(new DatiTabella(TabellaBonus(riga)), document);
                document.setLastPos(tabellaDati.AltezzaTabella);
            }
            document.setChapterHeader(dataThread.SezioneReport.TestoIntroduttivoAlternativo, 0, 520, 8); 
        }

        public void writeSezione(DataThread dataThread)
        {
            DocumentPDF document = dataThread.DocumentPDF;
            DataSetS137 set = (DataSetS137)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.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;

                #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());
                #endregion

                testo = testo.Replace("$/QMaxPerc/$", set.Protetti.Rows[0]["QUOTA_MAX_PERC"].ToString());
                document.setChapterHeader(testo, 0, 520, 8);
                CapitaleProtetto(dataThread);
            }

            #region NUOVA GESTIONE FOI80 - 24/11/2015 - E_FOI80
            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.setChapterHeader("");
                document.setSezTitoloWithoutNumber(set.FOI80.Rows[0]["DESPRODTIT"].ToString());

                string testo = dataThread.SezioneReport.TestoIntroduttivoAlternativo;
                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


            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;
            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, 8);
        }
        private void CapitaleProtetto(DataThread dataThread)
        {

            DocumentPDF document = dataThread.DocumentPDF;
            DataSetS137 set = (DataSetS137)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", "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.NotaAlternativa;
            nota = nota.Replace("$/QMaxPerc/$", set.Protetti.Rows[0]["QUOTA_MAX_PERC"].ToString());
            document.setChapterHeader(nota, 0, 520, 8);
  
        }




        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;
            DataSetS137 set = (DataSetS137)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.NotaAlternativa;
            nota = nota.Replace("$/QMaxPerc/$", set.FOI80.Rows[0]["QUOTA_MAX_PERC"].ToString());
            document.setChapterHeader(nota, 0, 520, 8);
  
        }

        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


    }
}