using System;
using System.Collections.Generic;
using System.Text;

using ceTe.DynamicPDF.Merger;
using PDFGenerator.BusinessLayer.DataSection;
using PDFGenerator.Presentation.Section.Tables;
using PDFGenerator.BusinessLayer;

namespace PDFGenerator.Presentation.Section
{
    class S88 : ISezione
    {
 
        string Titolo = " ";
        string _testointroduttivo;

        /// <summary>
        /// Imposta o recupera il testo introduttivo della sezione.
        /// </summary>
        public string TestoIntroduttivo
        {
            get { return _testointroduttivo; }
            set { _testointroduttivo = value; }
        }

        private bool _stampaAreaProgetto;

        /// <summary>
        /// Indica se stampare o no la colonna AreaProgetto
        /// </summary>
        public bool StampaAreaProgetto
        {
            get { return _stampaAreaProgetto; }
            set { _stampaAreaProgetto = value; }
        }




        public void writeSezione(DataThread dataThread)
        {
            DocumentPDF document = dataThread.DocumentPDF;
            DatiTabella datitab = new DatiTabella();

            DataSetS88 set = (DataSetS88)dataThread.Data.DatiSezione;
            datitab.table = set.Tables["DatiTabella"];
            int fontTab = 7;
            int fontTabTotale = 8;

            //calcola se entra nella pagina altrimenti aggiunge una nuova pagina. Minima altezza 3 righe
            if (document.checkMargin(datitab.GetRowDim() * 3))
                document.addPage();

            document.setSezTitolo(Titolo);
            document.setChapterHeader(_testointroduttivo, 0, 520, 8);

            Tabella tab = new Tabella(document.getMargineLeft(), document.getLastPos());
            tab.HeaderFont = 8;
            tab.Header = true;
            tab.Datasource = datitab.table;
            
            if (_stampaAreaProgetto)
            {
                tab.Colonne.Add(new Colonna("DataSottoscrizione", "Data sott.", 60, TipoAllineamento.SINISTRA, false, fontTab, false));
                tab.Colonne.Add(new Colonna("Contratto", "Contratto/<BR>Dossier", 90, TipoAllineamento.SINISTRA, false, fontTab, false));
                tab.Colonne.Add(new Colonna("Descrizione", "Descrizione", 187, TipoAllineamento.SINISTRA, false, fontTab, false));
                tab.Colonne.Add(new Colonna("<IMAGE>", " ", 5, TipoAllineamento.SINISTRA, false, fontTab, false));
                tab.Colonne.Add(new Colonna("AreaProgetto", "Area/<BR>Progetto", 90, TipoAllineamento.SINISTRA, false, fontTab, false));
                tab.Colonne.Add(new Colonna("Controvalore", "Controvalore<BR> €", 80, TipoAllineamento.DESTRA, false, fontTab, false));
                //tab.Colonne.Add(new Colonna("<IMAGE>", "", 80, TipoAllineamento.CENTRATO, false, 7, false));
                               
            }
            else
            {
                tab.Colonne.Add(new Colonna("DataSottoscrizione", "Data sott.", 60, TipoAllineamento.SINISTRA, false, fontTab, false));
                tab.Colonne.Add(new Colonna("Contratto", "Contratto/<BR>Dossier", 90, TipoAllineamento.SINISTRA, false, fontTab, false));
                tab.Colonne.Add(new Colonna("Descrizione", "Descrizione", 277, TipoAllineamento.SINISTRA, false, fontTab, false));
                tab.Colonne.Add(new Colonna("<IMAGE>", " ", 5, TipoAllineamento.SINISTRA, false, 7, false));
                tab.Colonne.Add(new Colonna("Controvalore", "Controvalore<BR> €", 80, TipoAllineamento.DESTRA, false, fontTab, false));
                //tab.Colonne.Add(new Colonna("<IMAGE>", "", 80, TipoAllineamento.CENTRATO, false, 7, false));

                
            }
           
        
           // document.setSezTitolo(Titolo); // titolo della sezione
           

            //Sperimentale
            //Footer tabFooter = new Footer(set.Tables["Totale"], "Descrizione", "Valore");
            //tabFooter.NomeColonne["Descrizione"].

            //tab.Footer = tabFooter;
            //--Sperimentale

           
            tab.Draw(datitab, document);

           
           // TOTALE della TABELLA
            datitab = new DatiTabella();
            datitab.table = set.Tables["Totale"];

            Tabella tabTotali = new Tabella(document.getMargineLeft(), document.getLastPos() + tab.AltezzaTabella + 25);
            tabTotali.HeaderFont = 8;
            tabTotali.SaltoPagina = false;
            tabTotali.Header = false;


            tabTotali.Colonne.Add(new Colonna("Descrizione", "", 432, TipoAllineamento.SINISTRA, true, fontTabTotale, true));
            tabTotali.Colonne.Add(new Colonna("Valore", "", 80, TipoAllineamento.DESTRA, true, fontTabTotale, true));
                
            
          
            tabTotali.Draw(datitab, document);
            float dim = tabTotali.AltezzaTabella + tab.AltezzaTabella;
            //tab.AddNotaPartiteViaggianti(dim, document);

            ///// setto la posizione aggiornata
            document.setLastPos(dim + 5);

        }
        public void setTitolo(string label)
        {
            Titolo = label;
        }

    }    
}