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 ContrattoSei.Utilities;
using ceTe.DynamicPDF.PageElements;
using System.Linq;

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


        private string _header = "";

        public string Header
        {
            get { return _header; }
            set { _header = value; }
        }


        private TipoReport _tipologiaReport;
        public TipoReport TipologiaReport
        {
            get { return _tipologiaReport; }
            set { _tipologiaReport = value; }
        }

        private string _testoIntroduttivo = string.Empty;
        public string TestoIntroduttivo
        {
            get { return _testoIntroduttivo; }
            set { _testoIntroduttivo = value; }
        }

        private string _testoChiusura = string.Empty;
        public string TestoChiusura
        {
            get { return _testoChiusura; }
            set { _testoChiusura = value; }
        }


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

        #region ISezione Members

        public void writeSezione(DataThread dataThread)
        {
            DatiTabella datitab = new DatiTabella();

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

            if (!set.TabellaCoerenzaESG.Rows[0]["percESG"].ToString().Equals("n.d.", StringComparison.OrdinalIgnoreCase))
            {

                document.LastSectionCheckIn = "S184";
                float fontSize = 5;


                document.changePage();

                ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();


                document.setSezTitoloDiagnosi(dataThread.SezioneReport.Titolo);

                //string nota = dataThread.SezioneReport.Nota;

                // string tempTesto = dataThread.SezioneReport.TestoIntroduttivo;
                //if (dataThread.Rete.ToUpper() == "S")
                //    tempTesto = tempTesto.Replace("Fideuram", "Sanpaolo Invest");

                //document.setChapterHeader(tempTesto.Replace("$/Banca/$", dataThread.NomeRete).Replace("nel patrimonio Sanpaolo Invest", "nel portafoglio"), 0, 520, 8);

                //document.setHeaderSpace(5);

                //Header: non ho usato quello standard perché dovevo farlo su due righe
                //Sfondo
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(document.getMargineLeft() - 5, document.getLastPos() - 18, 520 + 10, 23, 0, new RgbColor(232, 236, 237)));

                //Leone: eliminata come da requisiti 20230509_Report Diagnosi Sei_FID_MUA+ESG.pptx
                //Prima riga: Obbligazioni - Azioni
                //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Obbligazioni", document.getMargineLeft() + 5 + 132 + 90 -10, document.getLastPos() - 16, 520, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
                //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Azioni", document.getMargineLeft() + 5 + 132 + 90 + 95 + 90 +10, document.getLastPos() - 16, 520, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));

                //Seconda riga: intestazioni colonne tabella
                //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Emittente", document.getMargineLeft(), document.getLastPos() - 12, 132, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
                //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Controvalore (€)", document.getMargineLeft() + 5 + 132 + 30+2, document.getLastPos() - 6, 132, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
                //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Concentrazione (%)", document.getMargineLeft() + 5 + 132 + 30 + 90-3+2, document.getLastPos() - 6, 132, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
                //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Controvalore (€)", document.getMargineLeft() + 5 + 132 + 30 + 90 + 97+10, document.getLastPos() - 6, 132, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
                //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Concentrazione (%)", document.getMargineLeft() + 5 + 132 + 30 + 90 + 97 + 90 +8, document.getLastPos() - 6, 132, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));

                //Leone: Modificate come da requisiti 20230509_Report Diagnosi Sei_FID_MUA+ESG.pptx
                //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Emittente", document.getMargineLeft(), document.getLastPos() - 12, 132, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
                //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Controvalore (€)", document.getMargineLeft() + 5 + 132 + 30 + 2 - 20, document.getLastPos() - 6, 132, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
                //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Concentrazione (%)", document.getMargineLeft() + 5 + 132 + 30 + 90 - 3 + 2 - 20, document.getLastPos() - 6, 132, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
                //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Controvalore (€)", document.getMargineLeft() + 5 + 132 + 30 + 90 + 97 + 10 - 20, document.getLastPos() - 6, 132, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
                //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Concentrazione (%)", document.getMargineLeft() + 5 + 132 + 30 + 90 + 97 + 90 + 8 - 20, document.getLastPos() - 6, 132, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));

                var currentX = document.getMargineLeft();
                //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Prodotti che soddisfano almeno un obiettivo ESG (%)", currentX, document.getLastPos() - 16, 150, 25, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Prodotti in linea con le preferenze di sostenibilità (%)", currentX, document.getLastPos() - 16, 150, 25, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
                currentX += 200;
                //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Soglia di sostenibilità", currentX, document.getLastPos() - 12, 150, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Percentuale di sostenibilità", currentX, document.getLastPos() - 12, 150, 10, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));
                currentX += 200;
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Esito di coerenza ESG", currentX, document.getLastPos() - 12, 150, 20, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Red));



                document.setLastPos(20);

                Tabella tab = new Tabella(document.getMargineLeft(), document.getLastPos());
                if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") tab.HeaderFont = 8;
                tab.Header = false;
                tab.LineaFineTabella = true;
                tab.Datasource = datitab.table;

                datitab.table = set.Tables["TabellaCoerenzaESG"];

                tab.Colonne.Add(new Colonna("pesoSostESG", "", 150, TipoAllineamento.CENTRATO, false, 7, false));
                tab.Colonne.Add(new Colonna("percESG", "", 200, TipoAllineamento.CENTRATO, false, 7, false));
                tab.Colonne.Add(new Colonna("Coerenza", "", 170, TipoAllineamento.CENTRATO, false, 7, false));

                tab.AltezzaCella = 23;

                datitab.setCellSpace(0);

                //setta posizione tabella
                tab.Draw(datitab, document);

                document.setLastPos(tab.AltezzaTabella - 43);

                //Discolsure Adeguatezza Dinamico
                string NotaDisclosure, notapieTabella = string.Empty;

                bool isCoerente = set.Tables["TabellaCoerenzaESG"].Rows[0]["Coerenza"].ToString().Equals("COERENTE", StringComparison.OrdinalIgnoreCase);

                if (isCoerente)
                {
                    NotaDisclosure = $"La percentuale di prodotti finanziari ESG presenti nel portafoglio è COERENTE rispetto alla percentuale minima di Portafoglio che Lei ha scelto di destinare a investimenti volti a soddisfare le Preferenze di Sostenibilità - ambientale, sociale, di buona governance – dichiarata nel questionario di Profilatura. Il suo private banker è a disposizione per ogni ulteriore chiarimento o approfondimento. Per maggiori dettagli in merito alle modalità e ai criteri di valutazione dell’adeguatezza del suo portafoglio si rimanda alla sezione «Avvertenze e Glossario».";
                }
                else
                {
                    NotaDisclosure = $"La percentuale di prodotti finanziari ESG presenti nel portafoglio NON E’ COERENTE rispetto alla percentuale minima di Portafoglio che Lei ha scelto di destinare a investimenti volti a soddisfare le Preferenze di Sostenibilità - ambientale, sociale, di buona governance – dichiarata nel questionario di Profilatura. La invitiamo a contattare il prima possibile il suo private banker per valutare le azioni necessarie a rendere coerente il suo portafoglio. Il suo private banker è a disposizione per ogni ulteriore chiarimento o approfondimento.";
                }

                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(NotaDisclosure, datitab.getX(), document.getLastPos() - 25, 500F, 40F, Globals.OpenTypeFontVerdana, fontSize + 1f));


                //if (S178.isAdeguato.HasValue)
                //{
                //    if (S178.isAdeguato.Value == true)
                //    {
                //        notapieTabella = $"Il suo private banker è a disposizione per ogni ulteriore chiarimento o approfondimento. Per maggiori dettagli in merito alle modalità e ai criteri di valutazione dell’adeguatezza del suo portafoglio si rimanda alla sezione «Avvertenze e Glossario».";
                //    }
                //    else
                //    {
                //        notapieTabella = $"La invitiamo a contattare il prima possibile il suo private banker per valutare le azioni necessarie a rendere coerente il suo portafoglio. Il suo private banker è a disposizione per ogni ulteriore chiarimento o approfondimento.";
                //    }

                //    //Nota a piè di tabella

                //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(notapieTabella, datitab.getX(), document.getLastPos() - 5, 500F, 30F, Globals.OpenTypeFontVerdana, fontSize + 1f));

                //}


                //COntrollo se la sezione successiva
                //int currentId = Array.IndexOf(dataThread.SequenzaSezioniDaStampare, "S184");
                //string nexIsS179 = dataThread.SequenzaSezioniDaStampare.ElementAtOrDefault(currentId + 1);

                //if (!string.IsNullOrEmpty(nexIsS179) && nexIsS179.Equals("S170"))
                //    document.setLastPos(document.getLastPos() * -1);
                //else
                //    document.setLastPos(tab.AltezzaTabella + 20);

                //dataThread.AltezzaS184 = tab.AltezzaTabella + 20;

                document.setLastPos((document.getLastPos() * -1));
                document.setLastPos(document.getLastPos() + tab.AltezzaTabella + 150);
                //document.setLastPos(document.getLastPos() - 230);
                //document.setLastPos(document.getLastPos() *-1);




                //if(dataThread.TipoReport.ToUpper().Equals("DIAGNOSI"))
                document.nextPage(document.getMargineLeft());

            }
        }

        #endregion
    }
}