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.BusinessLayer.DataSection;
using PDFGenerator.BusinessLayer;
using System.Collections.Generic;
using System.Linq;

namespace PDFGenerator.Presentation.Section
{
    public class S163 : SIstogramma, ISezione
    {


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

        #region ISezione Members

        public new void writeSezione(DataThread datathread)
        {
            document = datathread.DocumentPDF;

            DataSetS163 set = (DataSetS163)datathread.Data.DatiSezione;

            tabTortaTabella = set.Tables["MacroAssetClass"];
            tabTortaTotali = set.Tables["MacroAssetTotale"];

            tabTortaPatrimonioNonRappresentabile = set.Tables["PatrimonioNonRappresentabile"];

            tabTotale = set.Tables["Totale"];
            // ************************* Modifica Andrea per correzione ***********************************//
            // tabTortaTotali.Rows[0][1] = tabTotale.Rows[0][1];
            //tabTortaTotali.Rows[0][1] = datathread.PatrimonioBancaFideuramCtvAlNettoContoCorrente;
            tabTortaTotali.Rows[0][1] = datathread.Patrimonioterzictv;
            // ******************************************************************************************//
            /*************************** "Modifiche per Aladdin grafici a barre -- Pino"  ************************************/
            //base.writeSezione(datathread);

            //if (set.Tables["PatrimonioNonRappresentabile"].Rows.Count > 0)
            //{
            //    if (dim > ChartHeigth)
            //    {
            //        this.addNota(document, (int)dim);
            //    }
            //    else
            //    {
            //        this.addNota(document, ChartHeigth);
            //    }
            //}

            base.writeSezione163(datathread);

            if (dim > ChartHeigth)
            {
                this.addNota1(document, (int)dim, datathread);
            }
            else
            {
                this.addNota1(document, ChartHeigth, datathread);
            }
            /**************************************************************************************************/

            if (dim > ChartHeigth)
            {
                document.setLastPos(dim);
            }
            else
            {
                document.setLastPos(ChartHeigth);
            }

        }

        #endregion

        public void writeSezioneCombo(DataThread datathread)
        {

            document = datathread.DocumentPDF;

            DataSetS163 set = (DataSetS163)datathread.Data.DatiSezione;

            tabTortaTabella = set.Tables["MacroAssetClass"];
            tabTortaTotali = set.Tables["MacroAssetTotale"];

            tabTortaPatrimonioNonRappresentabile = set.Tables["PatrimonioNonRappresentabile"];

            tabTotale = set.Tables["Totale"];

            base.writeSezioneComboSX(datathread);

            if (salto)
                document.returnLastPage();

            document.setPotenzialeLastPos(datitab.GetRowDim() * datitab.getNumRow() + dim, salto);

        }

        private void addNota(DocumentPDF doc, int dim)
        {
            doc.setSezFooter("(*) Il dettaglio del Patrimonio non rappresentabile per Asset class viene riportato in fondo al documento.", dim);
        }

        private void addNota1(DocumentPDF doc, int dim, DataThread dataThread)
        {

            decimal PatrimonioTerzi = dataThread.PatrimonioTerziContoCorrente;
            decimal ProdottiNonRapp = dataThread.PatrimonioNonRappresentabileAI;
            decimal GradoCopertura = 100;
            if (dataThread.Patrimonioterzictv != 0)
                GradoCopertura = (dataThread.Patrimonioterzictv - dataThread.PatrimonioNonRappresentabileAI)/(dataThread.Patrimonioterzictv)* 100;
            decimal PatrimonioTerziNonRapp = dataThread.PatrimonioNonRappresentabileAI;
            List<string> notes = new List<string>();

            string nota = string.Empty;
            string nota1 = "";
            string token = "";

            //totalNegativeCurrentAccountValue = -1000.00M;
            //totaleSelfNegFO = -1000.00M;
            //totalePartiteViaggianti = 1000.00M;
            //GPEligoFondi = -500.00M;
            //GPEligoTitoli = -500.00M;
            //PatrimonioTerzi = -400.00M;
            //GradoCopertura = 70.00M;
            //PatrimonioTerziNonRapp = 100.00M;
            //ProdottiNonRapp = 20.00M;

            if (PatrimonioTerzi < 0 || ((GradoCopertura >= 0 && GradoCopertura < 100) && ProdottiNonRapp != 0))
                nota = "(*) ";

            if (PatrimonioTerzi < 0)
            {
                notes.Add("Il controvalore esclude il saldo negativo");
                token = " ";
                notes.Add(string.Format(token + "dei conti correnti ({0} €)", PatrimonioTerzi.ToString("N")));
                token = ". ";
            }
            if (PatrimonioTerziNonRapp != 0)
            { 
            if (GradoCopertura >= 0 && GradoCopertura < 100)
            {
                notes.Add(string.Format(token + "Grado di copertura (%) della rappresentazione grafica per macro asset class pari a {0}", GradoCopertura.ToString("N")));
                token = ": ";

                if (PatrimonioTerziNonRapp != 0)
                {
                    notes.Add(string.Format(token + "non sono considerati"));
                    token = " ";
                        if (PatrimonioTerziNonRapp != 0)
                        {
                            notes.Add(string.Format(token + "i prodotti non rappresentabili ({0} €)", PatrimonioTerziNonRapp.ToString("N")));
                            token = ", ";
                        }
                    notes.Add(string.Format("."));
                }

                nota1 += ".";
                token = " ";

                //int i = 0;
                nota += notes.FirstOrDefault<string>();
                if (notes.Count > 1)
                {
                    foreach (var s in notes.Skip(1))
                    {
                        nota += s;

                        //if (i == 0)
                        // nota += s;
                        //if (i > 0 && i < notes.Count - 1)
                        // nota += ", " + s;
                        //if (i == notes.Count - 1)
                        // nota += " e " + s;
                        //i++;
                    }
                }
                //else
                //    nota += notes.FirstOrDefault<string>();

                if (!nota.Equals(""))
                    //document.getCurrentPage().Elements.Add(new Label(nota, Xtable, Ytable, 512, 30F, Globals.OpenTypeFontVerdana, 7));
                    doc.setSezFooter(nota, dim-20);
            }
            }
        }

        }
}