using System;
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using Consulenza.ReportWriter.Business;
using Consulenza.ReportWriter.Business.OBJ_PDF;
using System.Data;
using System.Collections.Generic;
using System.Web;
using Consulenza.ReportCommon;
using Consulenza.ReportWriter.Business.CHART_PDF;
using Consulenza.ReportWriter.Business.Entity;
using System.Linq;

namespace Consulenza.ReportWriter.Manager.Section.Unica
{
    /// <summary>
    /// Scheda 3. Sintesi Nucleo. IdSezione 46
    /// </summary>
    public class S3 : Entity.Section
    {
        public S3(EnvironmentFacade environmentFacade, int idSection)
            : base(environmentFacade, idSection)
        {
            try
            {
                Draw();
            }
            catch (Exception ex)
            {
                SectionLogger.Write("S3", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment);
            }
        }


        //protected override sealed void Draw()
        //{
        //    var dati = GetDataSet();
        //    if (getTestoTabella().Length > 0)
        //    {
        //        AddElement(new SpacePDF(20));
        //        AddElement(new FormattedTextAreaPDF(getTestoTabella(), EnvironmentFacade.RendererFacade.XLeftLimit) { TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, FontSize=7});
        //        AddElement(new SpacePDF(15));
        //    }
        //    if (dati.Tables["infoNucleo"].Rows.Count > 0)
        //    {
        //        var tabellaInfoCliente = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["infoNucleo"])
        //        {
        //            Style = Style.ConsulenzaUnica,
        //            Header = false,
        //            Footer = false,
        //            AlternateRow = false,
        //            RowHeight = 25
        //        };
        //        tabellaInfoCliente.Columns.Add(new ColumnPDF("descrizione", 150, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo, "descrizione", string.Empty) { HeaderFontSize=7});

        //        tabellaInfoCliente.Columns.Add(new ColumnPDF("valore", 370, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "valore", string.Empty) { PaddingLeft = 5, HeaderFontSize = 7 });
        //        tabellaInfoCliente.Cells[1, 0].FontBold = true;

        //        AddElement(tabellaInfoCliente);
        //    }
        //    float tablesHeight = 0;
        //    if (dati.Tables["clientiNucleo"].Rows.Count > 0)
        //    {
        //        TablePDF tabellaclientiNucleo = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["clientiNucleo"])
        //        {
        //            Style = Style.ConsulenzaUnica,
        //            Footer = false,
        //            AlternateRow = false,
        //            ShowBorderLastLine = false,
        //            HeaderHeight = 27
        //        };
        //        tabellaclientiNucleo.Columns.Add(new ColumnPDF("CognomeMandato", 104, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Cognome", "Cognome/<br> Mandato") { HeaderFontSize = 7 });
        //        tabellaclientiNucleo.Columns.Add(new ColumnPDF("Nome", 84, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Nome", "Nome") { HeaderFontSize = 7 });
        //        tabellaclientiNucleo.Columns.Add(new ColumnPDF("CodiceFiscalePIVA", 104, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "CodiceFiscale", "Codice Fiscale/<br>P.IVA") { HeaderFontSize = 7 });
        //        tabellaclientiNucleo.Columns.Add(new ColumnPDF("Profilofinanziario", 104, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Profilofinanziario", "Profilo finanziario") { HeaderFontSize = 7 });
        //        tabellaclientiNucleo.Columns.Add(new ColumnPDF("Contrattoconsulenza", 124, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Contrattoconsulenza", "Contratto consulenza") { HeaderFontSize = 7 });

        //        AddElement(new SpacePDF(15));
        //        AddElement(tabellaclientiNucleo);
        //        AddElement(new SpacePDF(0)); // dont remove

        //        //tablesHeight = 15f + tabellaclientiNucleo.RowHeight * tabellaclientiNucleo.RowsCount + tabellaclientiNucleo.HeaderHeight;
        //        tablesHeight += tabellaclientiNucleo.Height;
        //    }
        //    if (dati.Tables["patrimonioComplessivo"].Rows.Count > 0)
        //    {
        //        if (dati.Tables["distribuzionePatrimonio"].Rows.Count > 0)
        //        {
        //            if (getTestoGrafico().Length > 0)
        //            {
        //                AddElement(new SpacePDF(20));
        //                AddElement(new FormattedTextAreaPDF(getTestoGrafico(), EnvironmentFacade.RendererFacade.XLeftLimit) { TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, FontSize = 7 });
        //                AddElement(new SpacePDF(20));
        //                tablesHeight += 60;
        //            }
        //        }
        //        var tabellapatrimonioComplessivo = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables[2])
        //        {
        //            Style = Style.ConsulenzaUnica,
        //            Header = false,
        //            Footer = false,
        //            AlternateRow = false,
        //            RowHeight = 25
        //        };
        //        tabellapatrimonioComplessivo.Columns.Add(new ColumnPDF("descrizione", 150, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo, "descrizione", string.Empty));
        //        tabellapatrimonioComplessivo.Columns.Add(new ColumnPDF("valore", 370, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "valore", string.Empty) { PaddingLeft = 5 });

        //        AddElement(tabellapatrimonioComplessivo);
        //        tablesHeight += 25;
        //    }
        //    int c = 0;

        //    bool FirstTwoRowsSumLinked = true;
        //    bool canUseFirstTwoRowsSumLinked = dati.Tables["distribuzionePatrimonio"].AsEnumerable().Where(o => o.Field<string>("Patrimonio").ToString().Contains("Istituti")) != null;
        //    foreach (DataRow item in dati.Tables["distribuzionePatrimonio"].Rows)
        //    {
        //        if (c < 2 && canUseFirstTwoRowsSumLinked)
        //        {
        //            if (Convert.ToDouble(item.ItemArray[4].ToString()) == 0)
        //            {
        //                FirstTwoRowsSumLinked = false;
        //                break;
        //            }
        //        }
        //        c++;
        //    }
        //    if (dati.Tables["distribuzionePatrimonio"].Rows.Count > 0)
        //    {

        //        var graficoBarre = new StackedPDF(EnvironmentFacade.RendererFacade.XLeftLimit + 100, 1F)
        //           {
        //               HeightSingleBar = 40,
        //               Width = 400,
        //               MinorGridAxisY = true,
        //               ShowLineAxisX = true,
        //               ShowLineAxisY = true,
        //               LabelFormatAxisY = FormatType.Intero,
        //               DinamicFloatXEtichettaLateraleBarra = true,
        //               FirstTwoRowsSumLinked = FirstTwoRowsSumLinked,
        //               RemoveWhiteSpaceBetweenChartAndAxisX = true,
        //               MarginAxisY = 0,
        //               MarginAxisYFromTop = 0
        //           };


        //        var serieCollezione = new List<Serie> { new Serie { Name = "Patrimoni", Border = true} };

        //        foreach (DataRow item in dati.Tables[3].Rows)
        //        {
        //            serieCollezione[0].Points.Add(new Point
        //            {

        //                ShowLabelAxisY = true,
        //                LabelAxisY = Helper.FormatCurrency(item["Controvalore"].ToString()),
        //                FontSizeLabelAxisY = 7,

        //                Color = new ColorPDF(Convert.ToInt32(item["Red"]), Convert.ToInt32(item["Green"]), Convert.ToInt32(item["Blue"])),
        //                Value = Convert.ToDouble(item["Controvalore"]),

        //                ShowLabelAxisX = true,
        //                LabelAxisX = string.Format("{0}<BR/><i>({1})<i>", item["Patrimonio"].ToString(), Helper.FormatPercentage(Convert.ToDecimal(item["Percentuale"]), 2)),
        //                FontSizeLabelAxisX = 7,
        //                FontBoldLabelAxisY = false
        //            });
        //        }

        //        graficoBarre.SeriesCollection = serieCollezione;
        //        AddElement(new SpacePDF(20));
        //        tablesHeight += 20;

        //        List<ObjectPDF> newPageElements = new List<ObjectPDF>();
        //        newPageElements.Add(new ImagePDF(435, 0.15F, "changepage.png") { AutoIncrementYWritable = false, Y = EnvironmentFacade.RendererFacade.YLowerLimit - 5 });
        //        newPageElements.Add(new FormattedTextAreaPDF("continua alla pagina successiva", 450, 200) { FontSize = 6, AutoIncrementYWritable = false, Y = EnvironmentFacade.RendererFacade.YLowerLimit - 5, AbsolutePosition = true });
        //        newPageElements.Add(new PagePDF(PagePDF.PagePDFType.Generic));
        //        newPageElements.Add(new SpacePDF(2));
        //        newPageElements.Add(new ImagePDF(EnvironmentFacade.RendererFacade.XLeftLimit, 0.15F, "changepage.png") { Y = EnvironmentFacade.RendererFacade.YUpperLimit + 2, AutoIncrementYWritable = false });
        //        newPageElements.Add(new FormattedTextAreaPDF("continua dalla pagina precedente", EnvironmentFacade.RendererFacade.XLeftLimit + 15, 200) { Y = EnvironmentFacade.RendererFacade.YUpperLimit + 2, FontSize = 6, AutoIncrementYWritable = true, AbsolutePosition = true });
        //        //newPageElements.Add(new SpacePDF(20));
        //        newPageElements.Reverse();


        //        var availableSpace = 495;
        //        var stackedBarHeight = graficoBarre.GetHeight() + 25; // + 25 axis X labels

        //        if (availableSpace - stackedBarHeight - tablesHeight < 0) // missing space, new page needed
        //        {
        //            for (int i = 0; i< Elements.Count; i++)
        //            {
        //                if (Elements[i] is SpacePDF && ((SpacePDF)Elements[i]).Height == 0)
        //                {
        //                    //Elements[i] = new PagePDF(PagePDF.PagePDFType.Generic);
        //                    foreach (var element in newPageElements)
        //                    {
        //                        Elements.Insert(i, element);
        //                    }
        //                    break;
        //                }
        //            }                  
        //        }
        //        AddElement(graficoBarre);
        //    }



        //    #region Nota del PatrimonioCasa

        //    if (GetNote1().Length > 0)
        //    {
        //        AddElement(new SpacePDF(30));
        //        AddElement(new FormattedTextAreaPDF(GetNote1(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = TextAlign.Justify });
        //    }
        //    #endregion
        //}

        protected override sealed void Draw()
        {
            var dati = GetDataSet();
            if (getTestoTabella().Length > 0)
            {
                AddElement(new SpacePDF(20));
                AddElement(new FormattedTextAreaPDF(getTestoTabella(), EnvironmentFacade.RendererFacade.XLeftLimit) { TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, FontSize = 7 });
                AddElement(new SpacePDF(15));
            }
            if (dati.Tables["infoNucleo"].Rows.Count > 0)
            {
                var tabellaInfoCliente = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["infoNucleo"])
                {
                    Style = Style.ConsulenzaUnica,
                    Header = false,
                    Footer = false,
                    AlternateRow = false,
                    RowHeight = 25
                };
                tabellaInfoCliente.Columns.Add(new ColumnPDF("descrizione", 150, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo, "descrizione", string.Empty) { HeaderFontSize = 7 });

                tabellaInfoCliente.Columns.Add(new ColumnPDF("valore", 370, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "valore", string.Empty) { PaddingLeft = 5, HeaderFontSize = 7 });
                tabellaInfoCliente.Cells[1, 0].FontBold = true;

                AddElement(tabellaInfoCliente);
            }
            float tablesHeight = 0;
            Int16 iNumeroClienti = Convert.ToInt16(dati.Tables["clientiNucleo"].Rows.Count);
            if (dati.Tables["clientiNucleo"].Rows.Count > 0)
            {
                foreach (DataRow cliente in dati.Tables["clientiNucleo"].Rows)
                {
                    String contrattoConsulenza = (String) cliente[4];
                    if (contrattoConsulenza.ToLower().Contains("sei"))
                    {//verifico se è sospeso
                        DataTable dtSospeso = null;
                        String query = "Select chiaveCliente from vRfaMinusPerPB where codFis = '" + (String)cliente[2] + "'";
                        dtSospeso = DataAccess.ExecuteDataTableSqlStatement(DBProvider.SqlServerConsulenzaUnica, query, null);
                        if (dtSospeso.Rows.Count > 0 && !DBNull.Value.Equals(dtSospeso.Rows[0][0]))
                        {//è sospeso aggiorno la descrizione del contratto
                            if (contrattoConsulenza.IndexOf("del") != -1) {
                                cliente[4] = contrattoConsulenza.Substring(0, contrattoConsulenza.IndexOf("del")) + " sospeso " + contrattoConsulenza.Substring(contrattoConsulenza.IndexOf("del"));
                            }
                            else
                            {
                                cliente[4] = contrattoConsulenza + " sospeso";
                            }
                        }
                    }
                }
                TablePDF tabellaclientiNucleo = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["clientiNucleo"])
                {
                    Style = Style.ConsulenzaUnica,
                    Footer = false,
                    AlternateRow = false,
                    ShowBorderLastLine = false,
                    HeaderHeight = 27
                };
                tabellaclientiNucleo.Columns.Add(new ColumnPDF("CognomeMandato", 104, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Cognome", "Cognome/<br> Mandato") { HeaderFontSize = 7 });
                tabellaclientiNucleo.Columns.Add(new ColumnPDF("Nome", 84, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Nome", "Nome") { HeaderFontSize = 7 });
                tabellaclientiNucleo.Columns.Add(new ColumnPDF("CodiceFiscalePIVA", 104, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "CodiceFiscale", "Codice Fiscale/<br>P.IVA") { HeaderFontSize = 7 });
                tabellaclientiNucleo.Columns.Add(new ColumnPDF("Profilofinanziario", 104, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Profilofinanziario", "Profilo finanziario") { HeaderFontSize = 7 });
                tabellaclientiNucleo.Columns.Add(new ColumnPDF("Contrattoconsulenza", 124, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Contrattoconsulenza", "Contratto consulenza") { HeaderFontSize = 7 });

                AddElement(new SpacePDF(15));
                AddElement(tabellaclientiNucleo);
                AddElement(new SpacePDF(0)); // dont remove

                //tablesHeight = 15f + tabellaclientiNucleo.RowHeight * tabellaclientiNucleo.RowsCount + tabellaclientiNucleo.HeaderHeight;
                tablesHeight += tabellaclientiNucleo.Height;
            }
            if (dati.Tables["patrimonioComplessivo"].Rows.Count > 0)
            {
                if (dati.Tables["distribuzionePatrimonio"].Rows.Count > 0)
                {
                    if (getTestoGrafico().Length > 0)
                    {
                        AddElement(new SpacePDF(20));
                        AddElement(new FormattedTextAreaPDF(getTestoGrafico(), EnvironmentFacade.RendererFacade.XLeftLimit) { TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, FontSize = 7 });
                        AddElement(new SpacePDF(20));
                        tablesHeight += 60;
                    }
                }
                var tabellapatrimonioComplessivo = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables[2])
                {
                    Style = Style.ConsulenzaUnica,
                    Header = false,
                    Footer = false,
                    AlternateRow = false,
                    RowHeight = 25
                };
                tabellapatrimonioComplessivo.Columns.Add(new ColumnPDF("descrizione", 150, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo, "descrizione", string.Empty));
                tabellapatrimonioComplessivo.Columns.Add(new ColumnPDF("valore", 370, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "valore", string.Empty) { PaddingLeft = 5 });

                AddElement(tabellapatrimonioComplessivo);
                tablesHeight += 25;
            }
            int c = 0;

            bool FirstTwoRowsSumLinked = true;
            bool canUseFirstTwoRowsSumLinked = dati.Tables["distribuzionePatrimonio"].AsEnumerable().Where(o => o.Field<string>("Patrimonio").ToString().Contains("Istituti")) != null;
            foreach (DataRow item in dati.Tables["distribuzionePatrimonio"].Rows)
            {
                if (c < 2 && canUseFirstTwoRowsSumLinked)
                {
                    if (Convert.ToDouble(item.ItemArray[4].ToString()) == 0)
                    {
                        FirstTwoRowsSumLinked = false;
                        break;
                    }
                }
                c++;
            }

            Int64 iTotale = 0;
            string sTotale = "";
            string sProquota = "";
            bool _RemoveWhiteSpaceToTheRightAxisX = true;

            if (dati.Tables["distribuzionePatrimonio"].Rows.Count > 0)
            {

                var graficoBarre = new StackedPDF(EnvironmentFacade.RendererFacade.XLeftLimit + 100, 1F)
                {
                    HeightSingleBar = 40,
                    Width = 400,
                    MinorGridAxisY = true,
                    ShowLineAxisX = true,
                    ShowLineAxisY = true,
                    LabelFormatAxisY = FormatType.Intero,
                    DinamicFloatXEtichettaLateraleBarra = true,
                    FirstTwoRowsSumLinked = FirstTwoRowsSumLinked,
                    RemoveWhiteSpaceBetweenChartAndAxisX = _RemoveWhiteSpaceToTheRightAxisX,
                    MarginAxisY = 0,
                    MarginAxisYFromTop = 0
                };


                //var serieCollezione = new List<Serie> { new Serie { Name = "Patrimoni", Border = true} };
                var serieCollezione = new List<Serie> { new Serie { Name = "Patrimoni", Border = true }, new Serie { Name = "ProQuota", Border = true } };
                double dDelta = 0;
                foreach (DataRow item in dati.Tables[3].Rows)
                {
                    if (item["Patrimonio"].ToString().ToUpper() == "IMMOBILIARE" && (Convert.ToDouble(item["Controvalore"]) != Convert.ToDouble(item["Proquota"])))
                    {
                        dDelta = Convert.ToDouble(item["Controvalore"]) - Convert.ToDouble(item["Proquota"]);
                        iTotale = Convert.ToInt64(item["Controvalore"]);
                        sTotale = Helper.FormatCurrency((Convert.ToDouble(item["Controvalore"])).ToString());

                        serieCollezione[0].Points.Add(new Point
                        {
                            // Proquota
                            Color = new ColorPDF(148, 180, 198),
                            Value = Convert.ToDouble(item["Proquota"]),

                            ShowLabelAxisY = false,

                            LabelAxisY = Helper.FormatCurrency((Convert.ToDouble(item["Controvalore"])).ToString()),
                            FontSizeLabelAxisY = 7,
                            FontBoldLabelAxisY = false,
                            //FontColorLabelAxisY = ColorPDF.Grigio_TitoloPiccoloImmobiliare

                            ShowLabelAxisX = true,
                            LabelAxisX = string.Format("{0}<BR/><i>({1})<i>", item["Patrimonio"].ToString(), Helper.FormatPercentage(Convert.ToDecimal(item["Percentuale"]), 2)),
                            FontSizeLabelAxisX = 7,

                            //FontColorLabelAxisX = ColorPDF.Grigio_TitoloPiccoloImmobiliare,                    
                        });

                        sProquota = Helper.FormatCurrency(item["Proquota"].ToString());

                        serieCollezione[1].Points.Add(new Point
                        {
                            // Totale - Proquota
                            Color = new ColorPDF(Convert.ToInt32(item["Red"]), Convert.ToInt32(item["Green"]), Convert.ToInt32(item["Blue"])),
                            Value = (Convert.ToDouble(item["Controvalore"]) - Convert.ToDouble(item["Proquota"])),

                            ShowLabelAxisY = false,

                            LabelAxisY = Helper.FormatCurrency((Convert.ToDouble(item["Proquota"])).ToString()),

                            FontSizeLabelAxisY = 7,
                            FontBoldLabelAxisY = false,
                            //FontColorLabelAxisY = ColorPDF.Grigio_TitoloPiccoloImmobiliare

                            ShowLabelAxisX = false,
                            LabelAxisX = string.Format("{0}<BR/><i>({1})<i>", item["Patrimonio"].ToString(), Helper.FormatPercentage(Convert.ToDecimal(item["Percentuale"]), 2)),
                            FontSizeLabelAxisX = 7,
                            //FontColorLabelAxisX = ColorPDF.Grigio_TitoloPiccoloImmobiliare,                    
                        });
                    }
                    else
                    {
                        serieCollezione[0].Points.Add(new Point
                        {
                            Color = new ColorPDF(Convert.ToInt32(item["Red"]), Convert.ToInt32(item["Green"]), Convert.ToInt32(item["Blue"])),
                            Value = Convert.ToDouble(item["Controvalore"]),

                            ShowLabelAxisY = true,

                            LabelAxisY = Helper.FormatCurrency(Convert.ToDouble(item["Controvalore"]).ToString()),
                            FontSizeLabelAxisY = 7,
                            FontBoldLabelAxisY = false,
                            //FontColorLabelAxisY = ColorPDF.Grigio_TitoloPiccoloImmobiliare

                            ShowLabelAxisX = true,
                            LabelAxisX = string.Format("{0}<BR/><i>({1})<i>", item["Patrimonio"].ToString(), Helper.FormatPercentage(Convert.ToDecimal(item["Percentuale"]), 2)),
                            FontSizeLabelAxisX = 7,
                            //FontColorLabelAxisX = ColorPDF.Grigio_TitoloPiccoloImmobiliare,                    
                        });

                        serieCollezione[1].Points.Add(new Point
                        {
                            Color = new ColorPDF(148, 180, 198),
                            Value = 0,

                            ShowLabelAxisY = false,
                            LabelAxisY = Helper.FormatCurrency("0,00"),

                            FontSizeLabelAxisY = 7,
                            FontBoldLabelAxisY = false,
                            //FontColorLabelAxisY = ColorPDF.Grigio_TitoloPiccoloImmobiliare

                            ShowLabelAxisX = false,
                            LabelAxisX = string.Format("{0}<BR/><i>({1})<i>", item["Patrimonio"].ToString(), Helper.FormatPercentage(Convert.ToDecimal(item["Percentuale"]), 2)),
                            FontSizeLabelAxisX = 7,
                            //FontColorLabelAxisX = ColorPDF.Grigio_TitoloPiccoloImmobiliare,                    
                        });

                    }

                }


                // Riprende Originale
                graficoBarre.SeriesCollection = serieCollezione;
                AddElement(new SpacePDF(20));
                tablesHeight += 20;

                List<ObjectPDF> newPageElements = new List<ObjectPDF>();
                newPageElements.Add(new ImagePDF(435, 0.15F, "changepage.png") { AutoIncrementYWritable = false, Y = EnvironmentFacade.RendererFacade.YLowerLimit - 5 });
                newPageElements.Add(new FormattedTextAreaPDF("continua alla pagina successiva", 450, 200) { FontSize = 6, AutoIncrementYWritable = false, Y = EnvironmentFacade.RendererFacade.YLowerLimit - 5, AbsolutePosition = true });
                newPageElements.Add(new PagePDF(PagePDF.PagePDFType.Generic));
                newPageElements.Add(new SpacePDF(2));
                newPageElements.Add(new ImagePDF(EnvironmentFacade.RendererFacade.XLeftLimit, 0.15F, "changepage.png") { Y = EnvironmentFacade.RendererFacade.YUpperLimit + 2, AutoIncrementYWritable = false });
                newPageElements.Add(new FormattedTextAreaPDF("continua dalla pagina precedente", EnvironmentFacade.RendererFacade.XLeftLimit + 15, 200) { Y = EnvironmentFacade.RendererFacade.YUpperLimit + 2, FontSize = 6, AutoIncrementYWritable = true, AbsolutePosition = true });
                //newPageElements.Add(new SpacePDF(20));
                newPageElements.Reverse();


                var availableSpace = 495;
                var stackedBarHeight = graficoBarre.GetHeight() + 25; // + 25 axis X labels

                if (availableSpace - stackedBarHeight - tablesHeight < 0) // missing space, new page needed
                {
                    for (int i = 0; i < Elements.Count; i++)
                    {
                        if (Elements[i] is SpacePDF && ((SpacePDF)Elements[i]).Height == 0)
                        {
                            //Elements[i] = new PagePDF(PagePDF.PagePDFType.Generic);
                            foreach (var element in newPageElements)
                            {
                                Elements.Insert(i, element);
                            }
                            break;
                        }
                    }
                }

                AddElement(graficoBarre);

                // Riprende Modifica 20181123
                //double maxValue = Helper.Round(graficoBarre.GetMaximumValuePoints(), false);
                //double percentuale_Y = (graficoBarre.GetMaximumValuePoints() * 100) / maxValue;

                double maxValue = Convert.ToDouble(sTotale);
                double percentuale_Y = (Convert.ToDouble(sTotale) * 100) / maxValue;

                Int32 iLabel_X = Convert.ToInt32((percentuale_Y * graficoBarre.Width) / 100) + Convert.ToInt16(EnvironmentFacade.RendererFacade.XLeftLimit) + 70; //450;   
                if (iLabel_X > 435)
                    iLabel_X = 435;

                Int32 iLabel_Y = 0;
                if (GetOption<Opzione1>().ReportAnonimo)
                    iLabel_Y = 430;
                else
                    switch (iNumeroClienti)
                    {
                        case 1:
                            iLabel_Y = 482;
                            break;
                        case 2:
                            iLabel_Y = 502;
                            break;
                        case 3:
                            iLabel_Y = 521;
                            break;
                        case 4:
                            iLabel_Y = 540;
                            break;
                        case 5:
                            iLabel_Y = 560;
                            break;
                        default:
                            iLabel_Y = 580;
                            break;
                    }

                #region Immagini e Label per Proquota
                if (dDelta > 0 && dDelta != Convert.ToDouble(sTotale))
                { 
                    var imageLabelTotale = new ImagePDF(iLabel_X, 0.8F, "LabelTotale.png", Align.Left, iLabel_Y);
                    var imageLabelProquota = new ImagePDF(iLabel_X, 0.8F, "LabelProquota.png", Align.Left, iLabel_Y + 12);

                    AddElement(imageLabelProquota);
                    AddElement(imageLabelTotale);

                    AddElement(new FormattedTextAreaPDF("Totale: " + sTotale, iLabel_X + 13)
                    {
                        FontSize = 7,
                        Y = iLabel_Y,
                    });

                    AddElement(new FormattedTextAreaPDF("Pro quota: " + sProquota, iLabel_X + 13)
                    {
                        FontSize = 7,
                        Y = iLabel_Y + 12,
                    });
                }
                else
                    AddElement(new FormattedTextAreaPDF(sTotale, iLabel_X + 13)
                    {
                        FontSize = 7,
                        Y = iLabel_Y,
                        //Y = 700
                    });

                #endregion
            }

            // Commento 20181123 - TEST per Evolutiva ProQuota
            //if (dati.Tables["distribuzionePatrimonio"].Rows.Count > 0)
            //{

            //    var graficoBarre = new StackedPDF(EnvironmentFacade.RendererFacade.XLeftLimit + 100, 1F)
            //       {
            //           HeightSingleBar = 40,
            //           Width = 400,
            //           MinorGridAxisY = true,
            //           ShowLineAxisX = true,
            //           ShowLineAxisY = true,
            //           LabelFormatAxisY = FormatType.Intero,
            //           DinamicFloatXEtichettaLateraleBarra = true,
            //           FirstTwoRowsSumLinked = FirstTwoRowsSumLinked,
            //           RemoveWhiteSpaceBetweenChartAndAxisX = _RemoveWhiteSpaceToTheRightAxisX,
            //           MarginAxisY = 0,
            //           MarginAxisYFromTop = 0
            //       };


            //    var serieCollezione = new List<Serie> { new Serie { Name = "Patrimoni", Border = true} };

            //    foreach (DataRow item in dati.Tables[3].Rows)
            //    {
            //        serieCollezione[0].Points.Add(new Point
            //        {

            //            ShowLabelAxisY = true,
            //            LabelAxisY = Helper.FormatCurrency(item["Controvalore"].ToString()),
            //            FontSizeLabelAxisY = 7,

            //            Color = new ColorPDF(Convert.ToInt32(item["Red"]), Convert.ToInt32(item["Green"]), Convert.ToInt32(item["Blue"])),
            //            Value = Convert.ToDouble(item["Controvalore"]),

            //            ShowLabelAxisX = true,
            //            LabelAxisX = string.Format("{0}<BR/><i>({1})<i>", item["Patrimonio"].ToString(), Helper.FormatPercentage(Convert.ToDecimal(item["Percentuale"]), 2)),
            //            FontSizeLabelAxisX = 7,
            //            FontBoldLabelAxisY = false
            //        });
            //    }

            //    graficoBarre.SeriesCollection = serieCollezione;
            //    AddElement(new SpacePDF(20));
            //    tablesHeight += 20;

            //    List<ObjectPDF> newPageElements = new List<ObjectPDF>();
            //    newPageElements.Add(new ImagePDF(435, 0.15F, "changepage.png") { AutoIncrementYWritable = false, Y = EnvironmentFacade.RendererFacade.YLowerLimit - 5 });
            //    newPageElements.Add(new FormattedTextAreaPDF("continua alla pagina successiva", 450, 200) { FontSize = 6, AutoIncrementYWritable = false, Y = EnvironmentFacade.RendererFacade.YLowerLimit - 5, AbsolutePosition = true });
            //    newPageElements.Add(new PagePDF(PagePDF.PagePDFType.Generic));
            //    newPageElements.Add(new SpacePDF(2));
            //    newPageElements.Add(new ImagePDF(EnvironmentFacade.RendererFacade.XLeftLimit, 0.15F, "changepage.png") { Y = EnvironmentFacade.RendererFacade.YUpperLimit + 2, AutoIncrementYWritable = false });
            //    newPageElements.Add(new FormattedTextAreaPDF("continua dalla pagina precedente", EnvironmentFacade.RendererFacade.XLeftLimit + 15, 200) { Y = EnvironmentFacade.RendererFacade.YUpperLimit + 2, FontSize = 6, AutoIncrementYWritable = true, AbsolutePosition = true });
            //    //newPageElements.Add(new SpacePDF(20));
            //    newPageElements.Reverse();


            //    var availableSpace = 495;
            //    var stackedBarHeight = graficoBarre.GetHeight() + 25; // + 25 axis X labels

            //    if (availableSpace - stackedBarHeight - tablesHeight < 0) // missing space, new page needed
            //    {
            //        for (int i = 0; i< Elements.Count; i++)
            //        {
            //            if (Elements[i] is SpacePDF && ((SpacePDF)Elements[i]).Height == 0)
            //            {
            //                //Elements[i] = new PagePDF(PagePDF.PagePDFType.Generic);
            //                foreach (var element in newPageElements)
            //                {
            //                    Elements.Insert(i, element);
            //                }
            //                break;
            //            }
            //        }                  
            //    }
            //    AddElement(graficoBarre);
            //}



            #region Nota del PatrimonioCasa

            if (GetNote1().Length > 0)
            {
                AddElement(new SpacePDF(30));
                AddElement(new FormattedTextAreaPDF(GetNote1(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = TextAlign.Justify });
            }
            #endregion
        }

        protected sealed override DataTable GetDataTable()
        {
            return null;
        }

        /// <summary>
        /// Recupera i dati necessari alla Section restituendo un DataSet.
        /// </summary>
        /// <returns></returns>
        //protected sealed override DataSet GetDataSet()
        //{
        //    var ds = new DataSet();
        //    ds.Tables.Add(new DataTable("infoNucleo"));
        //    ds.Tables.Add(new DataTable("clientiNucleo"));
        //    ds.Tables.Add(new DataTable("patrimonioComplessivo"));
        //    ds.Tables.Add(new DataTable("distribuzionePatrimonio"));

        //    var nucleo = datiSeiUnico.nucleiUnit().anagrafica;
        //    var patrimonioElenco = datiSeiUnico.patrimonioUnit().patrimonioComplessivo;
        //    decimal patrimoniocomplessivo = patrimonioElenco.totale;

        //    bool profiloProfessionale;
        //    bool profiloAggressivo;
        //    bool profiloProfessionaleAggressivo;

        //    var profiler = new Profiler(nucleo);

        //    profiloProfessionale = profiler.ProfiloProfessionale;
        //    profiloAggressivo = profiler.ProfiloAggressivo;
        //    profiloProfessionaleAggressivo = profiler.ProfiloProfessionaleAggressivo;    

        //    var displayInfo = datiSeiUnico.displayInfos().tipoPatrimonioDisplayInfos;
        //    ds.Tables["infoNucleo"].Columns.Add(new DataColumn("Descrizione", typeof(string)));
        //    ds.Tables["infoNucleo"].Columns.Add(new DataColumn("Valore", typeof(string)));
        //    ds.Tables["infoNucleo"].Rows.Add("Nucleo", string.Format("{0}", nucleo.nomeNucleo));
        //   // ds.Tables["infoNucleo"].Rows.Add("Profilo finanziario", string.Format("{0}", nucleo.codProfiloNucleoSpecified ? nucleo.codProfiloNucleo != -1 ? nucleo.codProfiloNucleo.ToString() + " - " + nucleo.profiloNucleo.ToString() : nucleo.profiloNucleo.ToString() : nucleo.profiloNucleo.ToString()));

        //    ds.Tables["clientiNucleo"].Columns.Add(new DataColumn("Cognome", typeof(string)));
        //    ds.Tables["clientiNucleo"].Columns.Add(new DataColumn("Nome", typeof(string)));
        //    ds.Tables["clientiNucleo"].Columns.Add(new DataColumn("CodiceFiscale", typeof(string)));
        //    ds.Tables["clientiNucleo"].Columns.Add(new DataColumn("Profilofinanziario", typeof(string)));
        //    ds.Tables["clientiNucleo"].Columns.Add(new DataColumn("Contrattoconsulenza", typeof(string)));

        //    foreach (var item in nucleo.listaClientiNucleo)
        //     {   
        //        //string contrattoDiConsulenza = "";
        //        //if ("Nessun Contratto".Equals(item.contratto))
        //        //    contrattoDiConsulenza = item.contratto;
        //        //else
        //        //    contrattoDiConsulenza = item.contratto + " del " + item.dtSottoscrizione.ToString("dd/MM/yyyy");

        //        ds.Tables["clientiNucleo"].Rows.Add(
        //                item.cognome,
        //                item.nome,
        //                item.codiceFiscale,
        //                item.codProfiloSpecified ? item.codProfilo != -1 ? item.codProfilo.ToString() + " - " + item.profilo : item.profilo : item.profilo,
        //                //Adriano
        //                item.contratto // dovrebbe già contenere la descrizione del contratto + "Professionale", come nella scheda 2

        //            //originale
        //            //item.contratto
        //            );
        //    }


        //    // tmp Patryk
        //    //ds.Tables["clientiNucleo"].Rows.RemoveAt(ds.Tables["clientiNucleo"].Rows.Count - 1);
        //    //ds.Tables["clientiNucleo"].Rows.Add("test", "test", "test", "test", "test");
        //    //ds.Tables["clientiNucleo"].Rows.Add("test", "test", "test", "test", "test");
        //    //ds.Tables["clientiNucleo"].Rows.Add("test", "test", "test", "test", "test");
        //    //ds.Tables["clientiNucleo"].Rows.Add("test", "test", "test", "test", "test");
        //    //ds.Tables["clientiNucleo"].Rows.Add("test", "test", "test", "test", "test");
        //    #region Patrimonio complessivo

        //    ds.Tables["patrimonioComplessivo"].Columns.Add(new DataColumn("Descrizione", typeof(string)));
        //    ds.Tables["patrimonioComplessivo"].Columns.Add(new DataColumn("Valore", typeof(string)));

        //    var testoPatrimonio = "Patrimonio complessivo (€)"+ (GetNote1().Length > 0 ? "*" : string.Empty);
        //    ds.Tables["patrimonioComplessivo"].Rows.Add(testoPatrimonio, Helper.FormatCurrency(Helper.FormatCurrency(datiSeiUnico.CMP_TOTALEPOSITIVO.ToString())));

        //    #endregion

        //    #region distribuzione patrimonio
        //    ds.Tables["distribuzionePatrimonio"].Columns.Add(new DataColumn("Patrimonio", typeof(string)));
        //    ds.Tables["distribuzionePatrimonio"].Columns.Add(new DataColumn("Red", typeof(int)));
        //    ds.Tables["distribuzionePatrimonio"].Columns.Add(new DataColumn("Green", typeof(int)));
        //    ds.Tables["distribuzionePatrimonio"].Columns.Add(new DataColumn("Blue", typeof(int)));
        //    ds.Tables["distribuzionePatrimonio"].Columns.Add(new DataColumn("Controvalore", typeof(decimal)));
        //    ds.Tables["distribuzionePatrimonio"].Columns.Add(new DataColumn("Percentuale", typeof(decimal)));
        //    //dtPatrimoni.Rows.Add("Altro", 196, 138, 137, 20000, 1.33);
        //    if (patrimonioElenco.elencoSlice != null)
        //    {
        //        foreach (var valore in from c in displayInfo
        //                               join l in patrimonioElenco.elencoSlice on c.key equals l.codice
        //                               orderby c.value.order
        //                               select new
        //                               {
        //                                   l.descrizione,
        //                                   new ColorPDF(c.value.fill).Red,
        //                                   new ColorPDF(c.value.fill).Green,
        //                                   new ColorPDF(c.value.fill).Blue,
        //                                   l.ctv,
        //                                   l.peso,
        //                                   l.codice
        //                               })
        //        {
        //            ds.Tables["distribuzionePatrimonio"].Rows.Add(
        //                valore.descrizione + (valore.codice.Equals("PTBF") ? GetNotaCasa() : valore.codice.Equals("PTTZ")?GetNotaTerzi():""),
        //                valore.Red,
        //                valore.Green,
        //                valore.Blue,
        //                valore.ctv,
        //                valore.peso * 100

        //            );
        //        }
        //    }
        //    #endregion
        //    return ds;
        //}

        protected sealed override DataSet GetDataSet()
        {
            var ds = new DataSet();
            ds.Tables.Add(new DataTable("infoNucleo"));
            ds.Tables.Add(new DataTable("clientiNucleo"));
            ds.Tables.Add(new DataTable("patrimonioComplessivo"));
            ds.Tables.Add(new DataTable("distribuzionePatrimonio"));

            var nucleo = datiSeiUnico.nucleiUnit().anagrafica;
            var patrimonioElenco = datiSeiUnico.patrimonioUnit().patrimonioComplessivo;
            decimal patrimoniocomplessivo = patrimonioElenco.totale;

            bool profiloProfessionale;
            bool profiloAggressivo;
            bool profiloProfessionaleAggressivo;

            var profiler = new Profiler(nucleo);

            profiloProfessionale = profiler.ProfiloProfessionale;
            profiloAggressivo = profiler.ProfiloAggressivo;
            profiloProfessionaleAggressivo = profiler.ProfiloProfessionaleAggressivo;

            var displayInfo = datiSeiUnico.displayInfos().tipoPatrimonioDisplayInfos;
            ds.Tables["infoNucleo"].Columns.Add(new DataColumn("Descrizione", typeof(string)));
            ds.Tables["infoNucleo"].Columns.Add(new DataColumn("Valore", typeof(string)));
            ds.Tables["infoNucleo"].Rows.Add("Nucleo", string.Format("{0}", nucleo.nomeNucleo));
            // ds.Tables["infoNucleo"].Rows.Add("Profilo finanziario", string.Format("{0}", nucleo.codProfiloNucleoSpecified ? nucleo.codProfiloNucleo != -1 ? nucleo.codProfiloNucleo.ToString() + " - " + nucleo.profiloNucleo.ToString() : nucleo.profiloNucleo.ToString() : nucleo.profiloNucleo.ToString()));

            ds.Tables["clientiNucleo"].Columns.Add(new DataColumn("Cognome", typeof(string)));
            ds.Tables["clientiNucleo"].Columns.Add(new DataColumn("Nome", typeof(string)));
            ds.Tables["clientiNucleo"].Columns.Add(new DataColumn("CodiceFiscale", typeof(string)));
            ds.Tables["clientiNucleo"].Columns.Add(new DataColumn("Profilofinanziario", typeof(string)));
            ds.Tables["clientiNucleo"].Columns.Add(new DataColumn("Contrattoconsulenza", typeof(string)));

            foreach (var item in nucleo.listaClientiNucleo)
            {
                //string contrattoDiConsulenza = "";
                //if ("Nessun Contratto".Equals(item.contratto))
                //    contrattoDiConsulenza = item.contratto;
                //else
                //    contrattoDiConsulenza = item.contratto + " del " + item.dtSottoscrizione.ToString("dd/MM/yyyy");

                ds.Tables["clientiNucleo"].Rows.Add(
                        item.cognome,
                        item.nome,
                        item.codiceFiscale,
                        item.codProfiloSpecified ? item.codProfilo != -1 ? item.codProfilo.ToString() + " - " + item.profilo : item.profilo : item.profilo,
                        //Adriano
                        item.contratto // dovrebbe già contenere la descrizione del contratto + "Professionale", come nella scheda 2

                    //originale
                    //item.contratto
                    );
            }


            // tmp Patryk
            //ds.Tables["clientiNucleo"].Rows.RemoveAt(ds.Tables["clientiNucleo"].Rows.Count - 1);
            //ds.Tables["clientiNucleo"].Rows.Add("test", "test", "test", "test", "test");
            //ds.Tables["clientiNucleo"].Rows.Add("test", "test", "test", "test", "test");
            //ds.Tables["clientiNucleo"].Rows.Add("test", "test", "test", "test", "test");
            //ds.Tables["clientiNucleo"].Rows.Add("test", "test", "test", "test", "test");
            //ds.Tables["clientiNucleo"].Rows.Add("test", "test", "test", "test", "test");
            #region Patrimonio complessivo

            ds.Tables["patrimonioComplessivo"].Columns.Add(new DataColumn("Descrizione", typeof(string)));
            ds.Tables["patrimonioComplessivo"].Columns.Add(new DataColumn("Valore", typeof(string)));

            var testoPatrimonio = "Patrimonio complessivo (€)" + (GetNote1().Length > 0 ? "*" : string.Empty);
            ds.Tables["patrimonioComplessivo"].Rows.Add(testoPatrimonio, Helper.FormatCurrency(Helper.FormatCurrency(datiSeiUnico.CMP_TOTALEPOSITIVO.ToString())));

            #endregion

            #region distribuzione patrimonio
            ds.Tables["distribuzionePatrimonio"].Columns.Add(new DataColumn("Patrimonio", typeof(string)));
            ds.Tables["distribuzionePatrimonio"].Columns.Add(new DataColumn("Red", typeof(int)));
            ds.Tables["distribuzionePatrimonio"].Columns.Add(new DataColumn("Green", typeof(int)));
            ds.Tables["distribuzionePatrimonio"].Columns.Add(new DataColumn("Blue", typeof(int)));
            ds.Tables["distribuzionePatrimonio"].Columns.Add(new DataColumn("Controvalore", typeof(decimal)));
            ds.Tables["distribuzionePatrimonio"].Columns.Add(new DataColumn("ProQuota", typeof(decimal)));
            ds.Tables["distribuzionePatrimonio"].Columns.Add(new DataColumn("Percentuale", typeof(decimal)));

            if (patrimonioElenco.elencoSlice != null)
            {
                foreach (var valore in from c in displayInfo
                                       join l in patrimonioElenco.elencoSlice on c.key equals l.codice
                                       orderby c.value.order
                                       select new
                                       {
                                           l.descrizione,
                                           new ColorPDF(c.value.fill).Red,
                                           new ColorPDF(c.value.fill).Green,
                                           new ColorPDF(c.value.fill).Blue,
                                           l.ctv,
                                           l.proQuota,
                                           l.peso,
                                           l.codice
                                       })
                {
                    ds.Tables["distribuzionePatrimonio"].Rows.Add(
                        valore.descrizione + (valore.codice.Equals("PTBF") ? GetNotaCasa() : valore.codice.Equals("PTTZ") ? GetNotaTerzi() : ""),
                        valore.Red,
                        valore.Green,
                        valore.Blue,
                        valore.ctv,
                        valore.proQuota,
                        valore.peso * 100

                    );
                }
            }
            #endregion
            return ds;
        }

        public virtual string getTestoTabella()
        {
            //Adriano 20180129
            // Modificato testo sulla base del documento di specifiche return "Sono riportati di seguito il nome e il profilo finanziario attribuiti al nucleo, insieme alle principali informazioni anagrafiche dei soggetti da cui è composto.";
            return "Sono riportate di seguito il nome attribuito al nucleo e le principali informazioni anagrafiche dei soggetti da cui è composto.";
        }
        public virtual string getTestoGrafico()
        {
            return Helper.ReplaceVariables("Il grafico rappresenta la ripartizione, del patrimonio complessivo associato al nucleo, in finanziario ($/Banca/$ e altri Istituti), immobiliare, aziendale e altro.", base.EnvironmentFacade.ReportEnvironment);
        }

        public virtual string GetNotaCasa()
        {
            return (datiSeiUnico.CASA_CCN != 0 || datiSeiUnico.CASA_GPELIGO != 0) ? "*" : "";
        
        }
        public virtual string GetNotaTerzi()
        {
            return (datiSeiUnico.TRZ_CCN != 0) ? "*" : "";

        }
        public virtual string GetNote1()
        {

            string nota = "";
            string token = "";


            decimal CCN_CASA = datiSeiUnico.CASA_CCN;
            decimal GPELIGOFONDI_CASA = datiSeiUnico.CASA_GPELIGOFONDI;
            decimal GPELIGTITOLI_CASA = datiSeiUnico.CASA_GPELIGTITOLI;
            decimal CCN_TERZI = datiSeiUnico.TRZ_CCN;
            // 20181009 AC
            decimal TUOFOGLIO_CASA = datiSeiUnico.CASA_TUOFOGLIO;
            //--20181009 AC

            // 20181009 AC
            //if (CCN_CASA != 0 || GPELIGOFONDI_CASA != 0 || GPELIGTITOLI_CASA != 0 || CCN_TERZI != 0)
            if (CCN_CASA != 0 || GPELIGOFONDI_CASA != 0 || GPELIGTITOLI_CASA != 0 || CCN_TERZI != 0 || TUOFOGLIO_CASA != 0)
            //--20181009 AC
            {
                nota += token + "Il controvalore esclude il saldo negativo";
                token = " ";
                if (CCN_CASA != 0)
                {
                    nota += token + datiSeiUnico.FormatDecimal("dei conti correnti ({0} €)", CCN_CASA);
                    token = ", ";
                }
                // 20181009 AC
                if (TUOFOGLIO_CASA != 0)
                {
                    nota += token + datiSeiUnico.FormatDecimal("della liquidità sottostante Il Mio Foglio ({0} €)", TUOFOGLIO_CASA);
                    token = ", ";
                }
                //--20181009 AC
                if (GPELIGOFONDI_CASA != 0)
                {
                    nota += token + datiSeiUnico.FormatDecimal("della liquidità sottostante la GP Eligo Fondi ({0} €)", GPELIGOFONDI_CASA);
                    token = ", ";
                }
                if (GPELIGTITOLI_CASA != 0)
                {
                    nota += token + datiSeiUnico.FormatDecimal("della liquidità sottostante la GP Eligo Titoli ({0} €)", GPELIGTITOLI_CASA);
                    token = ", ";
                }
                token = " ";
                if (CCN_CASA != 0 || GPELIGOFONDI_CASA != 0 || GPELIGTITOLI_CASA != 0)
                {
                    nota += token + "del patrimonio $/Banca/$";
                    token = ", ";
                }
                if (CCN_TERZI != 0)
                {
                    nota += token + datiSeiUnico.FormatDecimal("dei conti correnti ({0} €) del patrimonio altri Istituti", CCN_TERZI);
                    token = ", ";
                }
                nota += ".";
                token = " ";
            }

            nota = !nota.Equals("") ? "(*) " + nota : nota;
            return datiSeiUnico.FormatBanca(nota);

        }
        ////Adriano: serve per determinare se tutti i clienti appartenenti al nucleo hanno un contratto di consulenza professionale (in attesa di un apposito flag fornito dal servizio)
        //private bool isNucleoProfessionale(DataServices.fideuram.data.service.rsAnagraficaClienteNucleo[] listaClientiNucleo)
        //{
        //    //In attesa di un flag che dovrebbe essere nella classe Cliente

        //    //if (listaClientiNucleo.Where(x => x.clienteProfessionale == false).ToList().Count() > 0)
        //    //    return false;
        //    //else
        //    //    return true;
        //    return true;
        //}
        ////--Adriano

        ////Adriano: serve per determinare se tutti i clienti appartenenti al nucleo hanno un profilo aggressivo (codProfilo >=5)
        //private bool isNucleoAggressivo(DataServices.fideuram.data.service.rsAnagraficaClienteNucleo[] listaClientiNucleo)
        //{
        //    if(listaClientiNucleo.Min(c => c.codProfilo) >= 5)
        //        return true;
        //    else
        //        return false;
        //}
    }
}
