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

namespace PDFGenerator.Presentation.Section
{
    public class S1 : ISezione
    {   


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

        #region ISezione Members

        public void writeSezione(DataThread dataThread)
        {
            DocumentPDF document = dataThread.DocumentPDF; 
            DatiTabella datitab = new DatiTabella();
            DataSet set = (DataSet)dataThread.Data.DatiSezione;
            int ChartHeigth = 120;

            datitab.table = set.Tables["DatiPatrimonio"];
            datitab.setIsRet();
            datitab.setIsLinee(1);
            datitab.setHeader();
            datitab.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false);
            datitab.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);
            datitab.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false);


            //eventuali operazioni sul dataset
            //calcola se entra nella pagina altrimenti aggiunge una nuova pagina. In questa sezione il # di righe � fissato
            if (document.checkMargin(datitab.GetRowDim() * datitab.getNumRow()) || document.checkMargin(ChartHeigth)) document.addPage();
            
            //aggiorna l'indice
            if (dataThread.TipoReport.ToUpper() == "DIAGNOSI")
                document.setSezTitoloDiagnosi(dataThread.SezioneReport.Titolo);
            else
               document.setSezTitolo(dataThread.SezioneReport.Titolo);

            //document.page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(s, xMacroAsset + width, yLabel, (float)Convert.ToDouble(dati.campi[i]), heightLabel, (ceTe.DynamicPDF.Font)dati.font[i], fontSize, (ceTe.DynamicPDF.TextAlign)dati.align[i], ceTe.DynamicPDF.CmykColor.Black));
            ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();

            //================GRAFICO==================================================================
            DatiGrafico dati = new DatiGrafico();
            dati.dataTab = set.Tables["DatiGrafico"];
            /////Parti aggiuntive tabella
            string label = "";
            if (dataThread.Rete == "F")
                //FC 26062015 Aggionamento nuova Ragione Sociale
                label = "Fideuram";
            else
                label = "Sanpaolo Invest";

            if ((decimal)dati.dataTab.Rows[0]["Controvalore2"] != 0 && (decimal)dati.dataTab.Rows[0]["Controvalore1"] != 0)
            {
                ceTe.DynamicPDF.PageElements.Rectangle rect1 = new ceTe.DynamicPDF.PageElements.Rectangle(document.getMargineLeft() + 62, document.getLastPos() + 18, 11, 11, 1, new RgbColor(228, 232, 106));
                rect1.CornerRadius = 5;
                rect1.BorderWidth = 0;
                page.Elements.Add(rect1);
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(label, document.getMargineLeft() + 75, document.getLastPos() + 20, 120, 10, Globals.OpenTypeFontVerdana, 7, ceTe.DynamicPDF.CmykColor.Black));

                rect1 = new ceTe.DynamicPDF.PageElements.Rectangle(document.getMargineLeft() + 139, document.getLastPos() + 18, 11, 11, 1, new RgbColor(128, 0, 255));
                rect1.CornerRadius = 5;
                rect1.BorderWidth = 0;
                page.Elements.Add(rect1);
                page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("altri istituti", document.getMargineLeft() + 151, document.getLastPos() + 20, 120, 10, Globals.OpenTypeFontVerdana, 7, ceTe.DynamicPDF.CmykColor.Black));
            }
            else
            {
                string lab;

                if ((decimal)dati.dataTab.Rows[0]["Controvalore1"] == 0 && (decimal)dati.dataTab.Rows[0]["Controvalore2"] != 0)
                {
                    lab = "Finanziario altri Istituti";
                    datitab.table.Rows[0]["Patrimonio"] = lab;
                    datitab.table.Rows[0]["Red"] = dati.dataTab.Rows[0]["Red1"];
                    datitab.table.Rows[0]["Green"] = dati.dataTab.Rows[0]["Green1"];
                    datitab.table.Rows[0]["Blue"] = dati.dataTab.Rows[0]["Blue1"];
                }
                else
                {
                    if ((decimal)dati.dataTab.Rows[0]["Controvalore2"] == 0 && (decimal)dati.dataTab.Rows[0]["Controvalore1"] == 0)
                    {
                        lab = "Finanziario";
                        datitab.table.Rows[0]["Patrimonio"] = lab;
                    }
                    else
                    {
                        if (dataThread.Rete == "F")
                            //FC 26062015 Aggionamento nuova Ragione Sociale
                            lab = "Finanziario Fideuram";
                        else
                            lab = "Finanziario Sanpaolo Invest";
                        datitab.table.Rows[0]["Patrimonio"] = lab;
                        datitab.table.Rows[0]["Red"] = dati.dataTab.Rows[0]["Red"];
                        datitab.table.Rows[0]["Green"] = dati.dataTab.Rows[0]["Green"];
                        datitab.table.Rows[0]["Blue"] = dati.dataTab.Rows[0]["Blue"];
                    }
                }
            }
            //////

            dati.setHeight(ChartHeigth);
            dati.setWidth(207);
            Istobarre isto = new Istobarre();
            document.InsertGrafico(isto.getGrafico(dati), 349, document.getLastPos() - 12);
            //============================================================================================

            datitab.setY(document.getLastPos());
            datitab.setX(document.getMargineLeft());
            datitab.setCellSpace(0);
            Tabella tab = new Tabella();
            if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") tab.HeaderFont = 8;
            //setta posizione tabella
            document.InsertTable(tab.getTabella(datitab));

            float dim = datitab.GetRowDim() * (datitab.getNumRow() + 1);
            datitab = new DatiTabella();
            datitab.table = set.Tables["DatiPatrimonioTotale"];

            datitab.setY(document.getLastPos() + dim);
            datitab.setX(document.getMargineLeft());
            datitab.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true);
            datitab.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);
            datitab.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true);

            document.InsertTable(tab.getTabella(datitab));

            page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(358, document.getLastPos() + 82, 199, 23, 0, new RgbColor(232, 236, 237)));

            FormatNum format = new FormatNum();
            ArrayList Labels = format.CreaCustom(dati.getValMax());

            page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + 91, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
            //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black));
            page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 454, document.getLastPos() + 91, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
            dim += datitab.GetRowDim() * datitab.getNumRow();
            if (dataThread.TotalNegativeCurrentAccountValue != 0)
            {
                FormatNum formatter = new FormatNum();
                string ccneg = formatter.ConvertNum(dataThread.TotalNegativeCurrentAccountValue);
                document.setSezFooter(string.Format(Resource.S1_DiagnosesFootNote, ccneg), dim, 0, 7);
                dim += 15;
            }
            if (dim > ChartHeigth)
                document.setLastPos(dim);
            else
                document.setLastPos(ChartHeigth);

        }
        #endregion
    }
}