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;


namespace PDFGenerator.Presentation.Section
{
    /// <summary>
    /// Summary description for S96
    /// </summary>
    //public abstract class S96 : ISezione
    public class S96 : ISezione
    {

        private string _titolo = string.Empty;
        private string _testointroduttivo = string.Empty;
        private TipoReport _tipologiareport;



        /// <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;
            }
        }

        /// <summary>
        /// Imposta o recupera il tipo di report.
        /// </summary>
        public TipoReport TipologiaReport
        {
            get
            {
                return _tipologiareport;
            }
            set
            {
                _tipologiareport = value;
            }
        }


        /// <summary>
        /// Costruttore
        /// </summary>
        public S96 ()
        {
        }

        /// <summary>
        /// Disegna la S96
        /// </summary>
        /// <param name="paramSez"></param>
        public void writeSezione (DataThread dataThread)
        {
            DocumentPDF document = dataThread.DocumentPDF;
            
            DataSetS96 set = (DataSetS96)dataThread.Data.DatiSezione;
            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

            // La sezione andrà stampata sempre in una nuova pagina.
            //Per diagnosi non serve in quanto la sezione è la prima del capitolo
            if(dataThread.TipoReport.ToUpper() == "MONITORAGGIO")
                document.addPage();

            ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();
           
            if (dataThread.TipoReport.ToUpper() == "DIAGNOSI")
                document.setSezTitoloDiagnosi(_titolo);
            else
                document.setSezTitolo(_titolo); // Titolo della sezione
            document.setSezHeader(_testointroduttivo); // testo introduttivo
            document.setHeaderSpace(10);

            #region Grafico

            GraficoS96 grafico = new GraficoS96();
            grafico.Datasource = _datasource;
            document.InsertGraficoS96(grafico.ToPage(), document.getMargineLeft() + 50, 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 = 259;//259
                float fattIncr = 7;
                float offsetFreccia = 6;
                //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);

                //Label
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Rischio Mercato", document.getMargineLeft() + 2, yMarcatoreAsseYRettangolo + 4, 80, FrecciaMarcatoreAsseY.Width * 1.414F, Globals.OpenTypeFontVerdana, 7));
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("(VaR) massimo", document.getMargineLeft() + 2, yMarcatoreAsseYRettangolo + 14, 80, FrecciaMarcatoreAsseY.Width * 1.414F, Globals.OpenTypeFontVerdana, 7));

                #endregion

                #region Marcatore AsseX

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

                #region pecetta grafico

                if (dataThread.TipoReport.ToUpper() == "MONITORAGGIO")
                {
                    //Legent
                    //Title
                    int LastPosition = 200;
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(383, LastPosition + 95, 160, 30, 0, new RgbColor(255, 255, 255)));

                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Area di non adeguatezza", 383, LastPosition + 95, 160, 10, Globals.OpenTypeFontVerdana, 10, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Area di adeguatezza", 383, LastPosition + 108, 160, 10, Globals.OpenTypeFontVerdana, 10, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));

                    ////Title
                    //LastPosition = 200;
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(138, LastPosition + 119, 160, 13, 0, new RgbColor(255, 255, 255)));

                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Rischio Mercato (VaR%)", 128, LastPosition + 120, 160, 12, Globals.OpenTypeFontVerdana, 9, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));

                    //Added by mebaid 
                    // Y - Axis

                    LastPosition = 200;
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(112, LastPosition + 135, 24, 400, 0, new RgbColor(255, 255, 255)));


                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("23%", 112, LastPosition + 188, 24, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("12%", 112, LastPosition + 260, 24, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("7,5%", 112, LastPosition + 293, 24, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("3,5%", 112, LastPosition + 318, 27, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("1,5%", 112, LastPosition + 328, 27, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));


                    //Added by mebaid
                    // X - Axis
                    LastPosition = 427;
                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(480, LastPosition + 131, 400, 23, 0, new RgbColor(255, 255, 255)));


                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Classe 1", 181, LastPosition + 130, 50, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    ////page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("|", 250, LastPosition + 124, 50, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));

                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Classe 2", 271, LastPosition + 130, 50, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    ////page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("|", 324, LastPosition + 124, 50, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));

                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Classe 3", 363, LastPosition + 130, 50, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    ////page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("|", 434, LastPosition + 124, 50, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));

                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Rischio Credito", 470, LastPosition + 130, 100, 10, Globals.OpenTypeFontVerdana, 9, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                }
                else //DIAGNOSI
                {
                    //Legent
                    //Title
                    int LastPosition = 185;
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(383, LastPosition + 95, 160, 30, 0, new RgbColor(255, 255, 255)));

                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Area di non adeguatezza", 383, LastPosition + 95, 160, 10, Globals.OpenTypeFontVerdana, 10, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Area di adeguatazza", 383, LastPosition + 108, 160, 10, Globals.OpenTypeFontVerdana, 10, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));

                    //Title
                    //LastPosition = 200;
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(138, LastPosition + 120, 160, 13, 0, new RgbColor(255, 255, 255)));

                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Rischio Mercato (VaR%)", 128, LastPosition + 120, 160, 13, Globals.OpenTypeFontVerdana, 9, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));

                    //Added by mebaid 
                    // Y - Axis

                    //LastPosition = 200;
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(112, LastPosition + 135, 24, 400, 0, new RgbColor(255, 255, 255)));


                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("23%", 112, LastPosition + 188, 24, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("12%", 112, LastPosition + 260, 24, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("7,5%", 112, LastPosition + 293, 24, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("3,5%", 112, LastPosition + 318, 27, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("1,5%", 112, LastPosition + 328, 27, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));


                    //Added by mebaid
                    // X - Axis
                    LastPosition = 412;
                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(150, LastPosition + 131, 400, 23, 0, new RgbColor(255, 255, 255)));


                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Classe 1", 181, LastPosition + 130, 50, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    ////page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("|", 250, LastPosition + 124, 50, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));

                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Classe 2", 271, LastPosition + 130, 50, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    ////page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("|", 324, LastPosition + 124, 50, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));

                    //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Classe 3", 363, LastPosition + 130, 50, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                    ////page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("|", 434, LastPosition + 124, 50, 10, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));

                    page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Rischio Credito", 470, LastPosition + 130, 100, 10, Globals.OpenTypeFontVerdana, 9, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
                }
                #endregion
                //classeRiskCredMax = 3; per fare test
                if (classeRiskCredMax == 1)
                    xMarcatoreAsseXRettangolo = document.getMargineLeft() + 178; //210; //188; // selezione su Classe 1
                else if (classeRiskCredMax == 2)
                    xMarcatoreAsseXRettangolo = document.getMargineLeft() + 277; //262; // selezione su Classe 2
                else if (classeRiskCredMax == 3)
                    xMarcatoreAsseXRettangolo = document.getMargineLeft() + 375; //315; // 368; // 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 + 1, yMarcatoreAsseXRettangolo + 4, 80, 12, Globals.OpenTypeFontVerdana, 7));
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("massimo", xMarcatoreAsseXRettangolo + 12, yMarcatoreAsseXRettangolo + 14, 80, 12, Globals.OpenTypeFontVerdana, 7));

                #endregion
            }
            #endregion

            #region Tabella

            DatiTabella datitab = new DatiTabella();
           
      

            float dimTabella = 0;

            #region Tabella Monitoraggio
            if (dataThread.TipoReport == "MONITORAGGIO")
            {
                datitab.table = set.Tables["DatiTabellaMonitoraggio"];
                Tabella tabellaPatrimonio = new Tabella(document.getMargineLeft(), document.getLastPos() + grafico.Height + 40);
                if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") tabellaPatrimonio.HeaderFont = 8;
                tabellaPatrimonio.Header = true;

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

                //V vedere come gestiore la leggenda nella tabella
                tabellaPatrimonio.Colonne.Add(new Colonna("DescrizionePatrimonio", "Patrimonio", 212, TipoAllineamento.SINISTRA, false, 8, false, TipoColonna.IMMAGINE_E_TESTO));
                //tabellaPatrimonio.Colonne.Add(new Colonna("DescrizionePatrimonio", "Patrimonio", 212, TipoAllineamento.SINISTRA, false, 8, false, TipoColonna.TESTO));
                tabellaPatrimonio.Colonne.Add(new Colonna("RischioCredito", "Rischio<BR>Credito", 100, TipoAllineamento.SINISTRA, false, 8, false));
                tabellaPatrimonio.Colonne.Add(new Colonna("RischioMercato", "Rischio Mercato<BR>(VaR%)", 100, TipoAllineamento.DESTRA, false, 8, false));
                tabellaPatrimonio.Colonne.Add(new Colonna("Copertura", "Copertura<BR>(%)", 100, TipoAllineamento.DESTRA, false, 8, 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

                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
            else if (dataThread.TipoReport == "DIAGNOSI")
            {
                datitab.table = set.Tables["DatiTabellaDiagnosi"];
                Tabella tabellaPatrimonio = new Tabella(document.getMargineLeft(), document.getLastPos() + grafico.Height + 40);
                if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") tabellaPatrimonio.HeaderFont = 8;
                tabellaPatrimonio.Header = true;

                float xLabelControvalore = document.getMargineLeft() + 183 + 25;
                float yLabelControvalore = document.getLastPos() + grafico.Height + 40 - 10;
                tabellaPatrimonio.Id = "TabellaPatrimonio";
                //tabellaPatrimonio.Datasource = _datasource;

                
                tabellaPatrimonio.Colonne.Add(new Colonna("DescrizionePatrimonio", "Patrimonio", 120, TipoAllineamento.SINISTRA, false, 8, false, TipoColonna.IMMAGINE_E_TESTO));
                tabellaPatrimonio.Colonne.Add(new Colonna("Controvalore", "Controvalore*<br>(€)", 76, TipoAllineamento.DESTRA, false, 8, false, TipoColonna.TESTO));
                tabellaPatrimonio.Colonne.Add(new Colonna("Percentuale", "Controvalore*<br>(%)", 76, TipoAllineamento.DESTRA, false, 8, false, TipoColonna.TESTO));
                tabellaPatrimonio.Colonne.Add(new Colonna("RischioCredito", "Rischio<BR>Credito", 70, TipoAllineamento.DESTRA, false, 8, false));
                tabellaPatrimonio.Colonne.Add(new Colonna("RischioMercato", "Rischio Mercato<BR>(VaR%)", 100, TipoAllineamento.DESTRA, false, 8, false));
                tabellaPatrimonio.Colonne.Add(new Colonna("Copertura", "Copertura<BR>(%)", 70, TipoAllineamento.DESTRA, false, 8, false));

                tabellaPatrimonio.Draw(datitab, document);

                //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Controvalore *", xLabelControvalore, yLabelControvalore, 80, 9, Globals.OpenTypeFontVerdanaB, 8, ceTe.DynamicPDF.CmykColor.Red));
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Resource.Nota_S96, datitab.getX(), datitab.getY() + datitab.GetRowDim() * (datitab.table.Rows.Count +1), 500F, 30F, Globals.OpenTypeFontVerdana, 8));

                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) + 20, 500F, 30F, Globals.OpenTypeFontVerdana, 8, ceTe.DynamicPDF.CmykColor.Red));
                
                #region Simboli del patrimonio
                int numSimboli = 18;

                float y = datitab.GetRowDim();
                float yTabella = tabellaPatrimonio.Y;
                ceTe.DynamicPDF.PageElements.Rectangle rect;
                foreach (DataRow drSimbolo in datitab.table.Rows)
                {
                    string tempDescrizPatrim = drSimbolo["DescrizionePatrimonio"].ToString().ToLower().Trim();

                    if (tempDescrizPatrim == "PATRIMONIO SANPAOLO INVEST")
                        //FC 26062015 Aggionamento nuova Ragione Sociale
                        tempDescrizPatrim = "PATRIMONIO FIDEURAM";
                    

                    switch (tempDescrizPatrim)
                    {
                        //EN 27-01-2016: 
                        case "patrimonio banca fideuram":
                        case "patrimonio fideuram":
                        case "patrimonio sanpaolo invest":
                        case "patrimonio san paolo invest":
                        case "patrimonio attuale":
                            //Marker 1
                            rect = new ceTe.DynamicPDF.PageElements.Rectangle(document.getMargineLeft(), yTabella - 5 + y, 10 / 1.414F, 10 / 1.414F, 0, new RgbColor(0, 0, 0));
                            rect.Angle = 45;
                            page.Elements.Add(rect);
                            y += datitab.GetRowDim();
                            break;

                        case "patrimonio complessivo":
                            //Marker 2
                            rect = new ceTe.DynamicPDF.PageElements.Rectangle(document.getMargineLeft() - 4, yTabella - 4 + y, 8, 8, 0, new RgbColor(0, 0, 0));
                            //rect.CornerRadius = 5;
                            page.Elements.Add(rect);
                            y += datitab.GetRowDim();
                            break;

                        case "patrimonio altri istituti":
                        case "patrimonio prospettico":
                            //Marker 3
                            rect = new ceTe.DynamicPDF.PageElements.Rectangle(document.getMargineLeft() - 5, yTabella - 5 + y, 10, 10, 0, new RgbColor(0, 0, 0));
                            rect.CornerRadius = 5;
                            page.Elements.Add(rect);
                            y += datitab.GetRowDim();
                            break;

                        default:
                            break;

                    }
                    numSimboli += 27;
                }
                //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

                dimTabella = tabellaPatrimonio.AltezzaTabella;
                
            }
            #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() + grafico.Height + dimTabella + 35;



            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;
                
                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
            
         
            //aggiorno il puntatore alla posizione da cui si può scrivere
            document.setLastPos(600);
        }

    }
}