using System;
using System.Collections.Generic;
using System.Text;
using ceTe.DynamicPDF.Text;
using System.Collections;
using ceTe.DynamicPDF;
using PDFGenerator.Presentation.Section.Tables;
using PDFGenerator.Presentation.Section.Charts;
using PDFGenerator.BusinessLayer.DataSection;
using System.Data;
using PDFGenerator.BusinessLayer;
using ceTe.DynamicPDF.PageElements;


namespace PDFGenerator.Presentation.Section
{
    class S143 : ISezione
    {
        public void writeSezione(DataThread dataThread)
        {
            DocumentPDF document = dataThread.DocumentPDF;
            DataSetS143 set = (DataSetS143)dataThread.Data.DatiSezione;
            

            float Xtable = document.getMargineLeft();
            float Ytable = document.getLastPos();
            int dFont = 9;
            int wCol1 = 100;
            int wCol2 = 95;
            int wCol3 = 65;
            int hGrafico = 190; //150;

            if (document.checkMargin(250))
                            document.addPage();


            document.setSezTitolo(dataThread.SezioneReport.Titolo);
            document.setChapterHeader(dataThread.SezioneReport.TestoIntroduttivo.Replace("/$Banca$/", dataThread.NomeRete).Replace("Sanpaolo Invest", "Fideuram S.p.A., commercializzati tramite la rete di private banker Sanpaolo Invest"), 0, 520, 8);


            Ytable = document.getLastPos();

            #region  GRAFICO
            //DatiGrafico dati = new DatiGrafico();
            //dati.dataTab = set.Emittente;
            //dati.setHeight(hGrafico);
            //dati.setWidth(hGrafico);
            //Torta isto = new Torta();
            //document.InsertGrafico(isto.getGrafico(dati), Xtable + wCol1 + wCol2 + wCol3 + 50, Ytable - 11);

            #endregion

            #region Tabella Rating


             if (set.EmittenteRap.Rows.Count > 0)
            {
                DatiTabella datitabRap = new DatiTabella(set.EmittenteRap);
                Tabella tabellaDatiRap = new Tabella(Xtable, Ytable);
                tabellaDatiRap.Header = true;
                tabellaDatiRap.Colonne.Add(new Colonna("tipoEmittente", "Emittente", wCol1, TipoAllineamento.SINISTRA, false, dFont, false, TipoColonna.IMMAGINE_E_TESTO));
                tabellaDatiRap.Colonne.Add(new Colonna("Controvalore", "Controvalore €", wCol2, TipoAllineamento.DESTRA, false, dFont, false));
                tabellaDatiRap.Colonne.Add(new Colonna("Percentage", "Peso %", wCol3, TipoAllineamento.DESTRA, false, dFont, false));
                tabellaDatiRap.Draw(datitabRap, document);
                //SIMBOLI
                int nPallino = 1;
                float yPallino = Ytable + tabellaDatiRap.AltezzaCella;
                float xPallino = Xtable;
                ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();
                foreach (DataRow drSimbolo in tabellaDatiRap.Datasource.Rows)
                {
                    RgbColor color =
                        new RgbColor(byte.Parse(drSimbolo["Red"].ToString()), byte.Parse(drSimbolo["Green"].ToString()), byte.Parse(drSimbolo["Blue"].ToString()));
                    ceTe.DynamicPDF.PageElements.Circle simbolo =
                        new ceTe.DynamicPDF.PageElements.Circle(xPallino, yPallino, 10 / 1.8F, color, color);
                    page.Elements.Add(simbolo);
                    yPallino += tabellaDatiRap.AltezzaCella;
                    nPallino++;
                }
                Ytable += (datitabRap.GetRowDim() * (datitabRap.getNumRow() + 1)) + document.getSectionSpace();


                /************************ Modifiche per Aladdin grafici a barre -- Pino**********************/
                DatiGrafico dati = new DatiGrafico();
                dati.dataTab = set.Emittente;
                //dati.setHeight(Convert.ToSingle(datitab.getHeaderDim()) + (datitab.GetRowDim()));
                dati.setHeight(Convert.ToSingle(datitabRap.getHeaderDim()) + (datitabRap.GetRowDim() * (datitabRap.getNumRow() + 1)));
                dati.setWidth(hGrafico);
                Istogramma isto = new Istogramma();
                document.InsertGrafico(isto.getGrafico(dati), 320, document.getLastPos() - (datitabRap.getHeaderDim() / 2));

                // Barra suil grafico
                document.getCurrentPage().Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(320, (document.getLastPos() + (datitabRap.GetRowDim() * (datitabRap.getNumRow()) + (datitabRap.getHeaderDim() / 2)) + 2), 190, 23, 0, new RgbColor(232, 236, 237)));

                //// Scrittura del footer sul grafico
                FormatNum format = new FormatNum();
                ArrayList Labels = format.CreateCustomPerc148(dati.getValMax(),dati.getValMin());
                float passo = 40.0F;
                for (int ii = 0; ii <= Labels.Count - 1; ++ii)
                    if (ii == 0)
                        document.getCurrentPage().Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[ii].ToString(), 235F + ii, (document.getLastPos() + (datitabRap.GetRowDim() * (datitabRap.getNumRow()) + (datitabRap.getHeaderDim() / 2)) + 5), 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                    else
                        document.getCurrentPage().Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[ii].ToString(), 245F + (passo * ii), (document.getLastPos() + (datitabRap.GetRowDim() * (datitabRap.getNumRow()) + (datitabRap.getHeaderDim() / 2)) + 5), 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));

                /********************************************************************************************/


            }


            if (set.EmittenteRap.Rows.Count > 0 && set.EmittenteNoRap.Rows.Count > 0) {
                DatiTabella datitabRapT = new DatiTabella(set.TotaleRap);
                Tabella tabellaDatiRapT = new Tabella(Xtable, Ytable);
                tabellaDatiRapT.Header = false;
                tabellaDatiRapT.Colonne.Add(new Colonna("Descrizione", "", wCol1, TipoAllineamento.SINISTRA, true, dFont, true));
                tabellaDatiRapT.Colonne.Add(new Colonna("Controvalore", "", wCol2, TipoAllineamento.DESTRA, true, dFont, true));
                tabellaDatiRapT.Colonne.Add(new Colonna("Percentage", "", wCol3, TipoAllineamento.DESTRA, true, dFont, true));
                tabellaDatiRapT.Draw(datitabRapT, document);
                Ytable += (datitabRapT.GetRowDim() * (datitabRapT.getNumRow()));
                set.Totale[0]["Percentage"] = DBNull.Value;



                /************************ Modifiche per Aladdin grafici a barre -- Pino**********************/
                //DatiGrafico dati = new DatiGrafico();
                //dati.dataTab = set.Emittente;
                ////dati.setHeight(Convert.ToSingle(datitab.getHeaderDim()) + (datitab.GetRowDim()));
                //dati.setHeight(Convert.ToSingle(datitabRapT.getHeaderDim()) + (datitabRapT.GetRowDim() * (datitabRapT.getNumRow() + 1)));
                //dati.setWidth(hGrafico);
                //Istogramma isto = new Istogramma();
                //document.InsertGrafico(isto.getGrafico(dati), 320, document.getLastPos() - (datitabRapT.getHeaderDim() / 2));

                //// Barra suil grafico
                //document.getCurrentPage().Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(320, (document.getLastPos() + (datitabRapT.GetRowDim() * (datitabRapT.getNumRow()) + (datitabRapT.getHeaderDim() / 2)) + 2), 190, 23, 0, new RgbColor(232, 236, 237)));

                ////// Scrittura del footer sul grafico
                //FormatNum format = new FormatNum();
                //ArrayList Labels = format.CreateCustomPerc148(dati.getValMax(),dati.getValMin());
                //float passo = 40.0F;
                //for (int ii = 0; ii <= Labels.Count - 1; ++ii)
                //    if (ii == 0)
                //        document.getCurrentPage().Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[ii].ToString(), 235F + ii, (document.getLastPos() + (datitabRapT.GetRowDim() * (datitabRapT.getNumRow()) + (datitabRapT.getHeaderDim() / 2)) + 5), 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                //    else
                //        document.getCurrentPage().Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[ii].ToString(), 245F + (passo * ii), (document.getLastPos() + (datitabRapT.GetRowDim() * (datitabRapT.getNumRow()) + (datitabRapT.getHeaderDim() / 2)) + 5), 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));

                /********************************************************************************************/
            }


            if (set.EmittenteNoRap.Rows.Count > 0)
            {
                DatiTabella datitabNoRap = new DatiTabella(set.EmittenteNoRap);
                Tabella tabellaDatiNoRap = new Tabella(Xtable, Ytable);
                tabellaDatiNoRap.Header = set.EmittenteRap.Rows.Count > 0 ? false : true;
                tabellaDatiNoRap.Colonne.Add(new Colonna("tipoEmittente", "Emittente", wCol1, TipoAllineamento.SINISTRA, false, dFont, false, TipoColonna.IMMAGINE_E_TESTO));
                tabellaDatiNoRap.Colonne.Add(new Colonna("Controvalore", "Controvalore €", wCol2, TipoAllineamento.DESTRA, false, dFont, false));
                tabellaDatiNoRap.Colonne.Add(new Colonna("Percentage", "Peso %", wCol3, TipoAllineamento.DESTRA, false, dFont, false));
                tabellaDatiNoRap.Draw(datitabNoRap, document);
                //SIMBOLI
                int nPallino = 1;
                float yPallino = Ytable + tabellaDatiNoRap.AltezzaCella - (set.EmittenteRap.Rows.Count > 0 ? datitabNoRap.GetRowDim() + document.getSectionSpace() : 0); 
                float xPallino = Xtable;
                ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();
                foreach (DataRow drSimbolo in tabellaDatiNoRap.Datasource.Rows)
                {
                    RgbColor color =
                        new RgbColor(byte.Parse(drSimbolo["Red"].ToString()), byte.Parse(drSimbolo["Green"].ToString()), byte.Parse(drSimbolo["Blue"].ToString()));
                    ceTe.DynamicPDF.PageElements.Circle simbolo =
                        new ceTe.DynamicPDF.PageElements.Circle(xPallino, yPallino, 10 / 1.8F, color, color);
                    page.Elements.Add(simbolo);
                    yPallino += tabellaDatiNoRap.AltezzaCella;
                    nPallino++;
                }
                Ytable += (datitabNoRap.GetRowDim() * (datitabNoRap.getNumRow()));
                Ytable += set.EmittenteRap.Rows.Count > 0 ? 0 : datitabNoRap.GetRowDim() + document.getSectionSpace();


                /************************ Modifiche per Aladdin grafici a barre -- Pino**********************/
                //DatiGrafico dati = new DatiGrafico();
                //dati.dataTab = set.Emittente;
                ////dati.setHeight(Convert.ToSingle(datitab.getHeaderDim()) + (datitab.GetRowDim()));
                //dati.setHeight(Convert.ToSingle(datitabNoRap.getHeaderDim()) + (datitabNoRap.GetRowDim() * (datitabNoRap.getNumRow() + 1)));
                //dati.setWidth(hGrafico);
                //Istogramma isto = new Istogramma();
                //document.InsertGrafico(isto.getGrafico(dati), 320, document.getLastPos() - (datitabNoRap.getHeaderDim() / 2));

                //// Barra suil grafico
                //document.getCurrentPage().Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(320, (document.getLastPos() + (datitabNoRap.GetRowDim() * (datitabNoRap.getNumRow()) + (datitabNoRap.getHeaderDim() / 2)) + 2), 190, 23, 0, new RgbColor(232, 236, 237)));

                ////// Scrittura del footer sul grafico
                //FormatNum format = new FormatNum();
                //ArrayList Labels = format.CreateCustomPerc148(dati.getValMax(), dati.getValMin());
                //float passo = 40.0F;
                //for (int ii = 0; ii <= Labels.Count - 1; ++ii)
                //    if (ii == 0)
                //        document.getCurrentPage().Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[ii].ToString(), 235F + ii, (document.getLastPos() + (datitabNoRap.GetRowDim() * (datitabNoRap.getNumRow()) + (datitabNoRap.getHeaderDim() / 2)) + 5), 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
                //    else
                //        document.getCurrentPage().Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[ii].ToString(), 245F + (passo * ii), (document.getLastPos() + (datitabNoRap.GetRowDim() * (datitabNoRap.getNumRow()) + (datitabNoRap.getHeaderDim() / 2)) + 5), 100, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));

                /********************************************************************************************/
            }



            //TOTALE
            DatiTabella datitabT = new DatiTabella(set.Totale);
            Tabella tabellaDatiT = new Tabella(Xtable, Ytable);
            tabellaDatiT.Header = false;
            tabellaDatiT.Colonne.Add(new Colonna("Descrizione", "", wCol1, TipoAllineamento.SINISTRA, true, dFont, true));
            tabellaDatiT.Colonne.Add(new Colonna("Controvalore", "", wCol2, TipoAllineamento.DESTRA, true, dFont, true));
            tabellaDatiT.Colonne.Add(new Colonna("Percentage", "", wCol3, TipoAllineamento.DESTRA, true, dFont, true));
            tabellaDatiT.Draw(datitabT, document);


            #endregion

            document.setLastPos(hGrafico);



        }
    }
}