using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PDFGenerator.BusinessLayer.DataSection;
using PDFGenerator.BusinessLayer;
using PDFGenerator.Presentation.Section.Tables;
using System.Data;

namespace PDFGenerator.Presentation.Section
{
    class S333 : ISezione
    {
        private string _titolo = string.Empty;
        private string _testointroduttivo = string.Empty;

        /// <summary>
        /// Titolo della sezione
        /// </summary>
        public string Titolo
        {
            get
            {
                return _titolo;
            }
            set
            {
                _titolo = value;
            }

        }


        /// <summary>
        /// Testo introduttivo della Sezione.
        /// </summary>
        public string TestoIntroduttivo
        {
            get
            {
                return _testointroduttivo;
            }
            set
            {
                _testointroduttivo = value;
            }
        }


        public S333()
        {
            //
            // TODO: Add constructor logic here
            //
        }


        public void writeSezione(DataThread dataThread)
        {
            DocumentPDF document = dataThread.DocumentPDF;
            document.setSezTitolo(dataThread.SezioneReport.Titolo);

            DataSetS333 set = (DataSetS333)dataThread.Data.DatiSezione;
            
            if (set.Protetti.Rows.Count > 0)
            {
                if (document.checkMargin(100))
                    document.addPage();

                //set.ProfiloVersatoNetto.Rows.Count
              
                    string testo = dataThread.SezioneReport.TestoIntroduttivo.Replace("/$Banca$/", dataThread.NomeRete);
                    testo = testo.Replace("$/Prodotto/$", set.Protetti.Rows[0]["DES_PROD"].ToString());
                    testo = testo.Replace("$/QMaxPerc/$", set.Protetti.Rows[0]["QUOTA_MAX_PERC"].ToString());
                    document.setChapterHeader(testo, 0, 520, 8);
                    CapitaleProtetto(dataThread);

                    //addNota(document);
              
            }
        }
        private void CapitaleProtetto(DataThread dataThread)
        {

            DocumentPDF document = dataThread.DocumentPDF;

            DataSetS333 set = (DataSetS333)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();
                tabellaDati.Colonne.Add(new Colonna("DESCRIZIONE","Contratto " + riga["COD_CONF"], 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(TabellaCapitaleProtetto(riga)), document);
                document.setLastPos(tabellaDati.AltezzaTabella - 15);
            }
            string nota = dataThread.SezioneReport.NotaAlternativa;
            nota = "(*) La quota protetta è pari all’80% della quota massima giornaliera raggiunta dal fondo dalla data di partenza: la quota massima potrebbe variare in funzione delle condizioni di mercato. Il controvalore protetto è calcolato ipotizzando che il numero delle quote si mantenga costante nel tempo e sia quindi uguale a quello disponibile alla data di produzione del report: il numero delle quote potrebbe variare nel tempo in seguito a movimentazione da parte del cliente o in seguito ad attività di ribilanciamento, prevista dal contratto";
            //nota = nota.Replace("$/QMaxPerc/$", set.Protetti.Rows[0]["QUOTA_MAX_PERC"].ToString());
            document.setChapterHeader(nota, 0, 520, 8);

        }

        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();
            //dr["DESCRIZIONE"] = riga["DES_PROD"] +" " + riga["COD_CONF"];
            dr["DESCRIZIONE"] = riga["DES_PROD"];
            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;
        }
    }
}