using ceTe.DynamicPDF;
using DataAccessLayer;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;

namespace PDFGeneratorLetteraBenvenuto
{
    public class TemplateProvider
    {
        string _templateReportPath;
        string _templateCopertinaPath;
        string _templateGlossarioPath;
        string _templateWelcomeLetterPath;
        public float _reportTypeFontColor_R;
        public float _reportTypeFontColor_G;
        public float _reportTypeFontColor_B;
        public float _chapterBackground_R;
        public float _chapterBackground_G;
        public float _chapterBackground_B;
        public float _chapterFontColor_R;
        public float _chapterFontColor_G;
        public float _chapterFontColor_B;
        public float _tableHeaderFontColor_R;
        public float _tableHeaderFontColor_G;
        public float _tableHeaderFontColor_B;
        private Stream _templateReportStream;
        private Stream _templateCopertinaStream;
        private Stream _templateGlossarioStream;
        private Stream _templateWelcomeLetterStream;

        /********* Fix Direct Bank 09/03/2023 - Pino *********************/
        public static int idReportDiagnosi;
        public static string CF;
        private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
        /*****************************************************************/

        int _tipoReport;
        string _rete;
        bool _periodico;

        public TemplateProvider(int TipoReport, string rete, bool periodico, int idReportDiagnosi)
        {
            _tipoReport = TipoReport;
            _rete = rete;
            _periodico = periodico;



            using (DataAccessDE de = new DataAccessDE(DBProvider.SqlServerStampeC6))
            {
                IDataReader rd = de.ExecuteDataReaderStoredProcedure(DBProvider.SqlServerStampeC6, "dbo.GetPDFTemplateConfiguration_Rosaspina",
                     new List<Parametro>()
                     {
                        new Parametro() { ParameterName = "Rete", Value = rete },
                        new Parametro() { ParameterName = "Trimestrale", Value = (periodico ? 1:0) },
                        new Parametro() { ParameterName = "Tipo", Value = TipoReport }
                     });
                 if (rd.Read())
                {
                    //RIPRISTINARE IN PRODUZIONE
                    _templateReportPath = rd["TemplateReportPath"].ToString();
                    _templateCopertinaPath = rd["TemplateCopertinaPath"].ToString();
                    _templateGlossarioPath = rd["TemplateGlossarioPath"].ToString();
                    _templateWelcomeLetterPath = rd["TemplateWelcomeLetterPath"].ToString();


                    /***********  Forzatura per Test - Pino **************/
                    //if (idReportDiagnosi != 6)
                    //{
                    //    _templateReportPath = @"C:\Users\francescopaolo.leone\Desktop\Fideuram\Trimestrale\Solution Rotondo 24 lug 2023\TP_SEI_Project\root\ContrattoSEI\PDFGenerator\PDFTemplate\Templ_BFreport.pdf";
                    //    _templateCopertinaPath = @"C:\Users\francescopaolo.leone\Desktop\Fideuram\Trimestrale\Solution Rotondo 24 lug 2023\TP_SEI_Project\root\ContrattoSEI\PDFGenerator\PDFTemplate\Templ_copertinaSP.pdf";
                    //    _templateGlossarioPath = @"C:\Users\francescopaolo.leone\Desktop\Fideuram\Trimestrale\Solution Rotondo 24 lug 2023\TP_SEI_Project\root\ContrattoSEI\PDFGenerator\PDFTemplate\GlossarioBF_REPORT_MONITORAGGIO.pdf";
                    //    //_templateWelcomeLetterPath = @"C:\Users\andrea.magliacane\OneDrive - Accenture\Desktop\Cartella_progetti\TP_SEI_Project_15062021\TP_SEI_Project\root\ContrattoSEI\PDFGenerator\PDFTemplate\TemplateBF_New2.pdf";
                    //    _templateWelcomeLetterPath = @"C:\Users\francescopaolo.leone\Desktop\Fideuram\Trimestrale\Solution Rotondo 24 lug 2023\TP_SEI_Project\root\ContrattoSEI\PDFGenerator\PDFTemplate\TemplateBF_New2.pdf";
                    //}
                    //else
                    //{
                    //    /* PER  SIMULARE DIRECT BANK  Pino */
                    //    _templateReportPath = @"C:\Users\francescopaolo.leone\Desktop\Fideuram\Trimestrale\Solution Rotondo 24 lug 2023\TP_SEI_Project\root\ContrattoSEI\PDFGenerator\PDFTemplate\Templ_BFreport_DB.pdf";
                    //    _templateCopertinaPath = @"C:\Users\francescopaolo.leone\Desktop\Fideuram\Trimestrale\Solution Rotondo 24 lug 2023\TP_SEI_Project\root\ContrattoSEI\PDFGenerator\PDFTemplate\Templ_copertinaBF_DB_1.pdf";
                    //    _templateGlossarioPath = @"C:\Users\francescopaolo.leone\Desktop\Fideuram\Trimestrale\Solution Rotondo 24 lug 2023\TP_SEI_Project\root\ContrattoSEI\PDFGenerator\PDFTemplate\GlossarioBF_REPORT_MONITORAGGIO.pdf";
                    //    _templateWelcomeLetterPath = @"C:\Users\francescopaolo.leone\Desktop\Fideuram\Trimestrale\Solution Rotondo 24 lug 2023\TP_SEI_Project\root\ContrattoSEI\PDFGenerator\PDFTemplate\TemplateBF_New2_DB_2.pdf";
                    //}
                    /***************************************************/

                    logger.Info("PDFGeneratorLettereBenvenuto -> TipoReport: " + TipoReport);

                    logger.Info("PDFGeneratorLettereBenvenuto -> Path Template: " + _templateReportPath);


                    _reportTypeFontColor_R = (float)(((Double)Int32.Parse(rd["ReportTypeFontColor_R"].ToString())) / 255.00);
                    _reportTypeFontColor_G = (float)(((Double)Int32.Parse(rd["ReportTypeFontColor_G"].ToString())) / 255.00);
                    _reportTypeFontColor_B = (float)(((Double)Int32.Parse(rd["ReportTypeFontColor_B"].ToString())) / 255.00);

                    _chapterBackground_R = (float)(((Double)Int32.Parse(rd["ChapterBackground_R"].ToString())) / 255.00);
                    _chapterBackground_G = (float)(((Double)Int32.Parse(rd["ChapterBackground_G"].ToString())) / 255.00);
                    _chapterBackground_B = (float)(((Double)Int32.Parse(rd["ChapterBackground_B"].ToString())) / 255.00);

                    _chapterFontColor_R = (float)(((Double)Int32.Parse(rd["ChapterFontColor_R"].ToString())) / 255.00);
                    _chapterFontColor_G = (float)(((Double)Int32.Parse(rd["ChapterFontColor_G"].ToString())) / 255.00);
                    _chapterFontColor_B = (float)(((Double)Int32.Parse(rd["ChapterFontColor_B"].ToString())) / 255.00);

                    _tableHeaderFontColor_R = (float)(((Double)Int32.Parse(rd["TableHeaderFontColor_R"].ToString())) / 255.00);
                    _tableHeaderFontColor_G = (float)(((Double)Int32.Parse(rd["TableHeaderFontColor_G"].ToString())) / 255.00);
                    _tableHeaderFontColor_B = (float)(((Double)Int32.Parse(rd["TableHeaderFontColor_B"].ToString())) / 255.00);

                    (new FileStream(_templateWelcomeLetterPath, FileMode.Open, FileAccess.Read)).CopyTo(_templateWelcomeLetterStream = new MemoryStream());
                    (new FileStream(_templateReportPath, FileMode.Open, FileAccess.Read)).CopyTo(_templateReportStream = new MemoryStream());
                    (new FileStream(_templateCopertinaPath, FileMode.Open, FileAccess.Read)).CopyTo(_templateCopertinaStream = new MemoryStream());
                    (new FileStream(_templateGlossarioPath, FileMode.Open, FileAccess.Read)).CopyTo(_templateGlossarioStream = new MemoryStream());
                }
            }
        }

        public int SignYPosition
        {
            get
            {
                return 716;// (!_periodico && _tipoReport == 2) ? 716 : 720; //_rete == "S" && 

            }
        }

        public int LetteraAccompagnamentoPeriodicoSalutiYBonus { get { return -5; } }// (!_periodico && _tipoReport == 2) ? -33 : -50; } } //_rete == "S"
        public int LetteraAccompagnamentoPeriodicoFirmaYBonus { get { return -5; } }// (!_periodico && _tipoReport == 2) ? -45 : -50; } } //_rete == "S" && 

        public int SalutiYBonus { get { return 15; } }// (!_periodico && _tipoReport == 2) ? 10 : 15; } } //_rete == "S" &&
        public System.IO.Stream TemplateReport { get { return _templateReportStream; } }
        public System.IO.Stream TemplateWelcomeLetter { get { return _templateWelcomeLetterStream; } }
        public System.IO.Stream TemplateCopertina { get { return _templateCopertinaStream; } }
        public System.IO.Stream TemplateGlossario { get { return _templateGlossarioStream; } }
        public ceTe.DynamicPDF.RgbColor ReportTypeFontColor
        {
            get
            {
                return new ceTe.DynamicPDF.RgbColor(_reportTypeFontColor_R, _reportTypeFontColor_G, _reportTypeFontColor_B);
            }
        }
        public ceTe.DynamicPDF.RgbColor ChapterBackgroundColor
        {
            get
            {
                ceTe.DynamicPDF.RgbColor c;

                logger.Info(string.Concat("Utils -> CF: ", CF, " idReport: ", idReportDiagnosi));

                if (idReportDiagnosi != 6)
                    c = new ceTe.DynamicPDF.RgbColor(_chapterBackground_R, _chapterBackground_G, _chapterBackground_B);
                else
                    c = new ceTe.DynamicPDF.RgbColor(34, 128, 0);

                return c;

                //return new ceTe.DynamicPDF.RgbColor(_chapterBackground_R, _chapterBackground_G, _chapterBackground_B);
            }
        }
        public ceTe.DynamicPDF.RgbColor ChapterFontColor
        {
            get
            {
                return new ceTe.DynamicPDF.RgbColor(_chapterFontColor_R, _chapterFontColor_G, _chapterFontColor_B);
            }
        }
        public ceTe.DynamicPDF.RgbColor TableHeaderFontColor
        {
            get
            {
                return new ceTe.DynamicPDF.RgbColor(_tableHeaderFontColor_R, _tableHeaderFontColor_G, _tableHeaderFontColor_B);
            }
        }
    }
}