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 ceTe.DynamicPDF.PageElements.Charting;
using PDFGenerator.BusinessLayer;
using PDFGenerator.BusinessLayer.DataSection;
using PDFGenerator.Presentation.Section.Tables;
using PDFGenerator.Presentation.Section.Charts;
using PDFGenerator.BusinessLayer.Utils;


namespace PDFGenerator.Presentation.Section
{
    class S132 : 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 S132()
        {
            //
            // TODO: Add constructor logic here
            //
        }


        public void writeSezione(DataThread dataThread)
        {
            DocumentPDF document = dataThread.DocumentPDF;
            document.setSezTitolo(dataThread.SezioneReport.Titolo);
            string tempTesto = dataThread.SezioneReport.TestoIntroduttivo;
            string tempTestoAlt = dataThread.SezioneReport.TestoIntroduttivoAlternativo;

            if (dataThread.IsProffesionalClient)
            {
                tempTesto = "In questo capitolo si fornisce un’analisi sulla rischiosità del portafoglio attualmente da lei detenuto presso /$Banca$/, confrontandone il livello di rischio - in termini di Rischio Mercato (VaR) e di Rischio Credito - con i limiti massimi associati al suo profilo, individuato da Fideuram sulla base delle informazioni da lei rese nel questionario di profilatura.";
                tempTestoAlt = "Nel grafico l’area di adeguatezza (in bianco) individua i casi in cui i livelli di Rischio Mercato e di Rischio Credito sono inferiori ai livelli massimi associati al suo profilo finanziario. L’area di non adeguatezza è indicata in grigio. La classe di Rischio Credito viene attribuita soltanto ad alcune tipologie di strumenti finanziari: per gli altri strumenti viene rappresentata come “non applicabile”. Nel complesso, gli strumenti presenti nel suo portafoglio ai quali non è stata attribuita una classe di Rischio Credito mitigano la stima di Rischio Credito del portafoglio complessivo.";
            }

            //tempTesto = tempTesto.Replace("/$Banca$/", dataThread.NomeRete);
            //tempTestoAlt = tempTestoAlt.Replace("/$Banca$/", dataThread.NomeRete);
            tempTesto = tempTesto.Replace("/$Banca$/", dataThread.NomeRete).Replace("Sanpaolo Invest", "Fideuram S.p.A., commercializzato tramite la rete di private banker Sanpaolo Invest");
            tempTestoAlt = tempTestoAlt.Replace("/$Banca$/", dataThread.NomeRete).Replace("Sanpaolo Invest", "Fideuram S.p.A., commercializzato tramite la rete di private banker Sanpaolo Invest"); ;
            //string tempTestoAlt = SimpleTextGenerator.ProduceText(this, "PL_MP_S132ProfiloRischioAdeguatezza", dataThread, null);

            string variableReplacement = SimpleTextGenerator.GetVariableValue("s132_tempTestoAlt", dataThread);


            tempTestoAlt = tempTestoAlt.Replace("/$s132_tempTestoAlt$/", variableReplacement);

            //tempTestoAlt = (dataThread.Rete == "F") ? tempTestoAlt.Replace("/$Banca$/", "Fideuram") : tempTestoAlt.Replace("/$Banca$/", "Sanpaolo Invest");

            //********************************************Cecco modifiche dicitura IWBANK************************************************
            switch (dataThread.Rete)
            {
                case "F":
                    {
                        tempTestoAlt = tempTestoAlt.Replace("/$Banca$/", "Fideuram");
                        break;
                    }
                case "S":
                    {
                        //Rosaspina Andrea/
                        tempTestoAlt = tempTestoAlt.Replace("/$Banca$/", "Fideuram S.p.A., commercializzato tramite la rete di private banker Sanpaolo Invest");
                        // tempTestoAlt = tempTestoAlt.Replace("/$Banca$/", "Sanpaolo Invest");
                        break;
                    }
                case "W":
                    {
                        tempTestoAlt = tempTestoAlt.Replace("/$Banca$/", "IW Private Investments");
                        break;
                    }
            }

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



            //if (dataThread.Rete.ToUpper() == "S")
            //  {  
            //    tempTesto = tempTesto.Replace("Banca Fideuram", "Sanpaolo Invest");
            //    tempTestoAlt = tempTesto.Replace("Banca Fideuram", "Sanpaolo Invest");
            //  }
            //setChapterHeader(string label, int x, int width, float font)
            document.setChapterHeader(tempTesto, 0, 520, 8);


            DataSetS132 set = (DataSetS132)dataThread.Data.DatiSezione;
            string labelText2nd = SimpleTextGenerator.ProduceText(this, "S132BottomLabel", dataThread, null);//new object[1] { set.Indicatori[0].Complessita }

            # region profiloRischio
            DatiTabella profilofinanziarioDatiTab = new DatiTabella();
            profilofinanziarioDatiTab.table = set.Tables["ProfiloRischio"];
            profilofinanziarioDatiTab.setCell(200, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, false, 8);
            profilofinanziarioDatiTab.setCell(312, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false, 8);
            profilofinanziarioDatiTab.setX(document.getMargineLeft());
            Tabella profilofinanziarioTab = new Tabella();
            //profilofinanziarioTab.LineaFineTabella = true;
            //profilofinanziarioTab.
            # endregion

            # region profiloDate
            DatiTabella profiloDateDatiTab = new DatiTabella();
            profiloDateDatiTab.table = set.Tables["ProfiloDate"];
            //profilofinanziarioDatiTab.setIsLinee(1);
            profiloDateDatiTab.setCell(200, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, false, 8);
            profiloDateDatiTab.setCell(312, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false, 8);
            profiloDateDatiTab.setX(document.getMargineLeft());
            Tabella profiloDateTab = new Tabella();
            //profilofinanziarioTab.LineaFineTabella = true;
            //profilofinanziarioTab.
            # endregion


            profilofinanziarioDatiTab.setY(document.getLastPos() - 5);
            document.InsertTable(profilofinanziarioTab.getTabella(profilofinanziarioDatiTab));

            float ycolonneRed = document.getLastPos() + profilofinanziarioDatiTab.getNumRow();

            float ydatitab = ycolonneRed + 14;
            profiloDateDatiTab.setY(ydatitab);
            document.InsertTable(profiloDateTab.getTabella(profiloDateDatiTab));

            document.setHeaderSpace(35);

            document.writeText(document.getMargineLeft() - 5, document.getLastPos(), tempTestoAlt, 8, 520, ceTe.DynamicPDF.TextAlign.Justify);

            //document.setHeaderSpace(60);
            document.setLastPos(40);

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


            #region Grafico

            DataTable _datasource = set.Tables["DatiGrafico"];

            #region recupero dati frecce
            int classeRischio = 0;

            if (_datasource.Rows[0]["ClasseRischioCreditoStr"] != DBNull.Value)
            {
                if (_datasource.Rows[0]["ClasseRischioCreditoStr"].ToString().ToUpper() == "N.A.")
                    classeRischio = -1;
            }
            else
                classeRischio = Convert.ToInt32(_datasource.Rows[0]["ClasseRischioCredito"]);


            // Rischio Mercato/VarP
            double varP = 0;
            if (_datasource.Rows[0]["RischioMercatoStr"] != DBNull.Value)
            {
                if (_datasource.Rows[0]["RischioMercatoStr"].ToString().ToUpper() == "N.A.")
                    varP = -1;
            }
            else
                varP = Convert.ToInt32(_datasource.Rows[0]["RischioMercato"]);

            // Rischio Mercato Massimo
            decimal varMassimo = 0;
            if (_datasource.Rows[0]["RischioMercatoMaxStr"] != DBNull.Value)
            {
                if (_datasource.Rows[0]["RischioMercatoMaxStr"].ToString().ToUpper() == "N.A.")
                    varMassimo = -1;
            }
            else
                varMassimo = Convert.ToDecimal(_datasource.Rows[0]["RischioMercatoMax"]);


            // Rischio Credito Massimo
            int classeRiskCredMax = 0;
            if (_datasource.Rows[0]["RischioCreditoMaxStr"] != DBNull.Value)
            {
                if (_datasource.Rows[0]["RischioCreditoMaxStr"].ToString().ToUpper() == "N.A.")
                    classeRiskCredMax = -1;
            }
            else
                classeRiskCredMax = Convert.ToInt32(_datasource.Rows[0]["RischioCreditoMax"]);

            #endregion
            //document.setLastPos(420);

            GraficoS132 grafico = new GraficoS132();
            grafico.Datasource = _datasource;
            document.InsertGraficoS132(grafico.ToPage(dataThread), document.getMargineLeft() + 60, document.getLastPos());

            #endregion

            //
            // I marcatori sull'asse X e sull'asse Y non vengono visualizzati se il cliente
            // non e' mai stato profilato o se il profilo e' scaduto
            // Non vengono visualizzati se il rischio credito max o il rischio mercato max sono uguali ad "N.C."
            // se rischio credito max = n.a. ugualmente non facciamo vedere le frecce.
            //
            #region FRECCE
            if ((_datasource.Rows[0]["Profilo"].ToString() == "A") && (varMassimo > 0) && (classeRiskCredMax > 0))
            {

                #region Marcatore AsseY

                //Freccia
                float posZero = 157;//157;//259
                float fattIncr = 5;
                float offsetFreccia = 6;

               if (dataThread.IsProffesionalClient && dataThread.RiskArea == 5)
                {
                    fattIncr = (float) 3.20;
                    offsetFreccia = -9;
                    varMassimo = 50;
                }

            
                //float posVar1 = posZero - (fattIncr * (float.Parse(BusinessLayer.SoglieVar.sVar1)));
                //float posVar2 = posZero - (fattIncr * (float.Parse(BusinessLayer.SoglieVar.sVar2)));
                //float posVar3 = posZero - (fattIncr * (float.Parse(BusinessLayer.SoglieVar.sVar3)));
                //float posVar4 = posZero - (fattIncr * (float.Parse(BusinessLayer.SoglieVar.sVar4)));
                //float posVar5 = posZero - (fattIncr * (float.Parse(BusinessLayer.SoglieVar.sVar5)));
                //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("--" + posVar1, document.getMargineLeft() + 101, document.getLastPos() + posVar1, 50F, 50F));
                //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("--" + posVar2, document.getMargineLeft() + 101, document.getLastPos() + posVar2, 50F, 50F));
                //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("--" + posVar3, document.getMargineLeft() + 101, document.getLastPos() + posVar3, 50F, 50F));
                //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("--" + posVar4, document.getMargineLeft() + 101, document.getLastPos() + posVar4, 50F, 50F));
                //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("--" + posVar5, document.getMargineLeft() + 101, document.getLastPos() + posVar5, 50F, 50F));

                float yMarcatoreAsseYRettangolo = document.getLastPos() + posZero - (fattIncr * (float)varMassimo) - offsetFreccia;


                ceTe.DynamicPDF.PageElements.Rectangle FrecciaMarcatoreAsseY = new ceTe.DynamicPDF.PageElements.Rectangle(document.getMargineLeft() + 55, yMarcatoreAsseYRettangolo, 20, 20, new RgbColor(234, 234, 234), new RgbColor(234, 234, 234));
                FrecciaMarcatoreAsseY.Angle = 45;
                page.Elements.Add(FrecciaMarcatoreAsseY);

                // Rettangolo


                ceTe.DynamicPDF.PageElements.Rectangle RettangolomarcatoreAsseY = new ceTe.DynamicPDF.PageElements.Rectangle(document.getMargineLeft(), yMarcatoreAsseYRettangolo, 55, FrecciaMarcatoreAsseY.Width * 1.414F, new RgbColor(234, 234, 234), new RgbColor(234, 234, 234));
                page.Elements.Add(RettangolomarcatoreAsseY);
                FormatNum conv = new FormatNum();
                //Label
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Rischio Mercato", document.getMargineLeft() + 2, yMarcatoreAsseYRettangolo + 2, 80, FrecciaMarcatoreAsseY.Width * 1.414F, Globals.OpenTypeFontVerdana, 6));
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("(VaR) massimo", document.getMargineLeft() + 2, yMarcatoreAsseYRettangolo + 10, 80, FrecciaMarcatoreAsseY.Width * 1.414F, Globals.OpenTypeFontVerdana, 6));
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("(" + conv.ConvertNum(varMassimo) + "%)", document.getMargineLeft() + 14, yMarcatoreAsseYRettangolo + 18, 80, FrecciaMarcatoreAsseY.Width * 1.414F, Globals.OpenTypeFontVerdana, 6));

                #endregion

                #region Marcatore AsseX

                // Recupero la X           
                float xMarcatoreAsseXRettangolo = 0; //classeRiskCredMax

                #region pecetta grafico

                //Legent
                //Title
                //int LastPosition = 380;
                float lastpos = document.getLastPos();

                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(437, lastpos + 100, 20, 8, ceTe.DynamicPDF.CmykColor.Black, new RgbColor(234, 234, 234), 0.3F));//RgbColor(255, 255, 255)));
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Area di non adeguatezza", 460, lastpos + 100, 160, 10, Globals.OpenTypeFontVerdana, 7, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(437, lastpos + 100 + 13, 20, 8, ceTe.DynamicPDF.CmykColor.Black, ceTe.DynamicPDF.CmykColor.White, 0.3F));//RgbColor(255, 255, 255)));
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Area di adeguatezza", 460, lastpos + 100 + 13, 160, 10, Globals.OpenTypeFontVerdana, 7, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));


                int lastpos_mod = 7 + ((dataThread.IsProffesionalClient && dataThread.RiskArea == 5) ? 80 : 0);


                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Rischio Mercato (VaR%)", document.getMargineLeft(), lastpos + lastpos_mod, 120, 12, Globals.OpenTypeFontVerdana, 7, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));

                //LastPosition = 427;
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Rischio Credito", 420, lastpos + 159, 100, 8, Globals.OpenTypeFontVerdana, 7, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                #endregion


                //classeRiskCredMax = 3; per fare test
                if (classeRiskCredMax == 1)
                    xMarcatoreAsseXRettangolo = document.getMargineLeft() + 152; // selezione su Classe 1
                else if (classeRiskCredMax == 2)
                    xMarcatoreAsseXRettangolo = document.getMargineLeft() + 222;// selezione su Classe 2
                else if (classeRiskCredMax == 3)
                    xMarcatoreAsseXRettangolo = document.getMargineLeft() + 296; // selezione su Classe 3


                // Recupero la Y
                float yMarcatoreAsseXRettangolo = document.getLastPos() + grafico.Height;

                // Rettangolo Base (principale)
                ceTe.DynamicPDF.PageElements.Rectangle FrecciaMarcatoreAsseX_Base = new ceTe.DynamicPDF.PageElements.Rectangle(xMarcatoreAsseXRettangolo, yMarcatoreAsseXRettangolo, 55, 25, new RgbColor(234, 234, 234), new RgbColor(234, 234, 234));
                page.Elements.Add(FrecciaMarcatoreAsseX_Base);

                // Rettangolo a destra (punta destra)
                ceTe.DynamicPDF.PageElements.Rectangle FrecciaMarcatoreAsseX_dx = new ceTe.DynamicPDF.PageElements.Rectangle(xMarcatoreAsseXRettangolo + (FrecciaMarcatoreAsseX_Base.Width / 2), yMarcatoreAsseXRettangolo - 10, 29, 10, new RgbColor(234, 234, 234), new RgbColor(234, 234, 234));
                FrecciaMarcatoreAsseX_dx.Angle = 19.3F;
                page.Elements.Add(FrecciaMarcatoreAsseX_dx);

                //Rettangolo a sinistra (punta sinistra)
                ceTe.DynamicPDF.PageElements.Rectangle FrecciaMarcatoreAsseX_sx = new ceTe.DynamicPDF.PageElements.Rectangle(xMarcatoreAsseXRettangolo, yMarcatoreAsseXRettangolo, 28.6F, 10, new RgbColor(234, 234, 234), new RgbColor(234, 234, 234));
                FrecciaMarcatoreAsseX_sx.Angle = 339.4F;
                page.Elements.Add(FrecciaMarcatoreAsseX_sx);

                //Label
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Rischio Credito", xMarcatoreAsseXRettangolo + 4, yMarcatoreAsseXRettangolo, 80, 12, Globals.OpenTypeFontVerdana, 6));
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("massimo", xMarcatoreAsseXRettangolo + 14, yMarcatoreAsseXRettangolo + 7, 80, 12, Globals.OpenTypeFontVerdana, 6));
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("(" + UtilityBusinessLayer.GetRiskCreditClassName(classeRiskCredMax.ToString()) + ")", xMarcatoreAsseXRettangolo + 12, yMarcatoreAsseXRettangolo + 14, 80, 12, Globals.OpenTypeFontVerdana, 6));


                #endregion
            }
            #endregion

            #region Tabella

            DatiTabella datitab = new DatiTabella();
            datitab.SetRowDim(15);



            float dimTabella = 0;
            float graficoHeightOffset = grafico.Height;
            float additionalOffset = 40;
            float additionalOffset2 = 35;

            if (!string.IsNullOrEmpty(labelText2nd) && document.checkMargin(graficoHeightOffset + additionalOffset + 70))
            {
                document.addPage();
                page = document.getCurrentPage();
                document.setPotenzialeLastPos(0, true);
                graficoHeightOffset = 0;
                additionalOffset = 0;
                additionalOffset2 = 0;
            }                

            #region Tabella Monitoraggio
            datitab.table = set.Tables["DatiTabellaMonitoraggio"];
            Tabella tabellaPatrimonio = new Tabella(document.getMargineLeft(), document.getLastPos() + graficoHeightOffset + additionalOffset);
            tabellaPatrimonio.Header = true;

            tabellaPatrimonio.Id = "TabellaPatrimonio";
            //tabellaPatrimonio.Datasource = _datasource;



            //V vedere come gestiore la leggenda nella tabella
            tabellaPatrimonio.Colonne.Add(new Colonna("DescrizionePatrimonio", "Patrimonio", 150, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.IMMAGINE_E_TESTO));
            tabellaPatrimonio.Colonne.Add(new Colonna("TotalePatrimonio", "Totale Patrimonio<BR>(€)", 110, TipoAllineamento.DESTRA, false, 9, false));
            tabellaPatrimonio.Colonne.Add(new Colonna("RischioCredito", "Rischio<BR>Credito", 70, TipoAllineamento.DESTRA, false, 9, false));
            tabellaPatrimonio.Colonne.Add(new Colonna("RischioMercato", "Rischio Mercato<BR>(VaR%)", 106, TipoAllineamento.DESTRA, false, 9, false));
            tabellaPatrimonio.Colonne.Add(new Colonna("Copertura", "Copertura<BR>(%)", 76, TipoAllineamento.DESTRA, false, 9, false));

            tabellaPatrimonio.Draw(datitab, document);


            #region Simboli del patrimonio
            //Monitoraggio avrà solo il dettaglio per patrimonio bf o spi (un rombo come simbolo)
            ceTe.DynamicPDF.PageElements.Rectangle rect = new ceTe.DynamicPDF.PageElements.Rectangle(document.getMargineLeft(), tabellaPatrimonio.Y + 18, 10 / 1.414F, 10 / 1.414F, 0, new RgbColor(0, 0, 0));
            rect.Angle = 45;
            page.Elements.Add(rect);

            #endregion

            #region Indicatore rischio mercato
            //Monitoraggio avrà solo il dettaglio per patrimonio bf o spi (un rombo come simbolo)
            string flagOK = WebConfigParameter.getParameter("FlagOK_RIDOTTA");
            string flagNO = WebConfigParameter.getParameter("FlagNO_RIDOTTA");

            System.Reflection.Assembly thisExe;
            thisExe = System.Reflection.Assembly.GetExecutingAssembly();
            System.IO.Stream fileOk = thisExe.GetManifestResourceStream(flagOK);
            System.IO.Stream fileNo = thisExe.GetManifestResourceStream(flagNO);

            // Indicatore Rischio Mercato
            if (!set.Indicatori[0].RischioCredito)
            { // INDICATORE "RischioMercato" NO
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Image(fileNo, document.getMargineLeft() + 331, tabellaPatrimonio.Y + 18, 0.15F));
            }
            else
            { // INDICATORE "RischioMercato" OK
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Image(fileOk, document.getMargineLeft() + 331, tabellaPatrimonio.Y + 18, 0.15F));
            }

            if (!set.Indicatori[0].RischioMercato)
            { // INDICATORE "RischioCredito" NO
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Image(fileNo, document.getMargineLeft() + 437, tabellaPatrimonio.Y + 18, 0.15F));
            }
            else
            { // INDICATORE "RischioMercato" OK
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Image(fileOk, document.getMargineLeft() + 437, tabellaPatrimonio.Y + 18, 0.15F));
            }

            #endregion


            if (dataThread.profiloIsAct == false)
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Resource.Nota_S96_Scaduto, datitab.getX(), datitab.getY() + datitab.GetRowDim() * (datitab.table.Rows.Count + 1), 500F, 30F, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.CmykColor.Red));

            dimTabella = tabellaPatrimonio.AltezzaTabella;
            #endregion

            #endregion

            #region indicatori Monitoraggio
            ////
            //// Inseriamo gli Indicatori: non vengono visualizzati se il cliente
            //// non e' mai stato profilato o se il profilo e' scaduto
            //// Non vengono visualizzati se il rischio credito max o il rischio mercato max sono uguali ad "N.C."
            //// se rischio credito max = n.a. ugualmente non facciamo vedere le frecce.
            ////

            float xIndicatore = document.getMargineLeft();
            float yIndicatore = document.getLastPos() + graficoHeightOffset + dimTabella + additionalOffset2;


            //if (dataThread.TipoReport.ToUpper() == "MONITORAGGIO" && dataThread.profiloIsAct && (varMassimo > 0) && (classeRiskCredMax > 0))
            //{
            //    string flagOK = WebConfigParameter.getParameter("FlagOK_RIDOTTA");
            //    string flagNO = WebConfigParameter.getParameter("FlagNO_RIDOTTA");

            //    System.Reflection.Assembly thisExe;
            //    thisExe = System.Reflection.Assembly.GetExecutingAssembly();
            //    System.IO.Stream fileOk = thisExe.GetManifestResourceStream(flagOK);
            //    System.IO.Stream fileNo = thisExe.GetManifestResourceStream(flagNO);

            //    // Indicatore Rischio Mercato
            //    if (!set.Indicatori[0].RischioMercato)
            //    { // INDICATORE "RischioMercato" NO
            //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Image(fileNo, document.getMargineLeft(), yIndicatore, 0.15F)); //0.2F
            //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Il livello di Rischio Mercato dei Suoi Investimenti è, oggi, NON coerente con il Suo profilo finanziario.", xIndicatore + 25, yIndicatore, 512, 12, Globals.OpenTypeFontVerdana, 7));
            //    }
            //    else
            //    { // INDICATORE "RischioMercato" OK
            //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Image(fileOk, document.getMargineLeft(), yIndicatore, 0.15F));
            //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Il livello di Rischio Mercato dei Suoi Investimenti è, oggi, coerente con il Suo profilo finanziario.", xIndicatore + 25, yIndicatore, 512, 12, Globals.OpenTypeFontVerdana, 7));
            //    }

            //    yIndicatore += 20;
            //    // Indicatore Rischio Credito
            //    if (!set.Indicatori[0].RischioCredito)
            //    { // INDICATORE "RischioCredito" NO
            //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Image(fileNo, xIndicatore, yIndicatore, 0.15F));
            //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Il livello di Rischio Credito dei Suoi Investimenti è, oggi, NON coerente con il Suo profilo finanziario.", xIndicatore + 25, yIndicatore, 512, 12, Globals.OpenTypeFontVerdana, 7));
            //    }
            //    else
            //    { // INDICATORE "RischioCredito" OK
            //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Image(fileOk, xIndicatore, yIndicatore, 0.15F));
            //        page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Il livello di Rischio Credito dei Suoi Investimenti è, oggi, coerente con il Suo profilo finanziario.", xIndicatore + 25, yIndicatore, 512, 12, Globals.OpenTypeFontVerdana, 7));
            //        // page.Elements.Add(new ceTe.DynamicPDF.PageElements.
            //    }
            //document.setLastPos(600);


            //V Spostare nel resource file
            //
            // Indicatore Complessita' 
            //
            //yIndicatore += 20;


            #region AdeguadezzaCompl

            string labelText = SimpleTextGenerator.ProduceText(this, "BottomLabel", dataThread, null);//new object[1] { set.Indicatori[0].Complessita }

         

            if (labelText == String.Empty)
            {
                throw new GeneratorException("missing label data for S132");
            }
            else
            {
                if (!dataThread.IsProffesionalClient)
                {
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(labelText, xIndicatore, yIndicatore, 512, 36, Globals.OpenTypeFontVerdana, 7));
                    yIndicatore += 36;
                }
            }

            if (!string.IsNullOrEmpty(labelText2nd))
            {
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(labelText2nd, xIndicatore, yIndicatore, 512, 70, Globals.OpenTypeFontVerdana, 7));
            }
            //commented by pk
            //if (set.Indicatori[0].Complessita)
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Tutti gli strumenti finanziari nel Suo portafoglio risultano avere una complessità coerente con il Suo livello di esperienza e conoscenza risultante dal questionario di profilatura.", xIndicatore, yIndicatore, 512, 24, Globals.OpenTypeFontVerdana, 7));
            //else
            //    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Alcuni strumenti finanziari nel suo portafoglio risultano avere una complessità elevata rispetto al Suo livello di esperienza e conoscenza risultante dal questionario di profilatura.", xIndicatore, yIndicatore, 512, 24, Globals.OpenTypeFontVerdana, 7));
            #endregion
            // }
            #endregion


            //aggiorno il puntatore alla posizione da cui si può scrivere
            //document.setLastPos(600);
            document.addPage();
        }



    }
}