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 PDFGenerator.BusinessLayer.DataSection;
using PDFGenerator.BusinessLayer;
using System.Collections.Generic;

namespace PDFGenerator.BusinessLayer.DataSection
{
    class DSS137Bonus : IDataSection
    {

        #region IDataSection Members

        public DataSectionResult getDataSection(List<SessionStruct> tabelleSessione, string querySql, DataThread dataThread)
        {

            try
            {
                FormatNum num = new FormatNum();
                DataSectionResult dsr = new DataSectionResult(); 

                DataTable dt = SectionManager.GetDataSection(tabelleSessione, querySql, dataThread);

                DataSetS137 ds137 = new DataSetS137();

                for (int r = 0; r < dt.Rows.Count; r++) {
                    if (dt.Rows[r]["DES_PROD"] == null || dt.Rows[r]["DES_PROD"].ToString().Equals(""))
                                                     throw new Exception("DescrizioneBonus is Null");

                    DataRow dr = ds137.Bonus.NewRow();
                    dr["DES_PROD"] = dt.Rows[r]["DES_PROD"].ToString();
                    dr["COD_CONF"] = dt.Rows[r]["COD_CONF"].ToString();
                dr["CTV"]  = num.ConvertNum(dt.Rows[r]["CTV"].ToString());
                    dr["DT_TRIM"] = dt.Rows[r]["DT_TRIM"].ToString().Substring(0, 10);
                    dr["DESBONUS_M"]  = dt.Rows[r]["DESBONUS_M"].ToString();
                dr["BONUS_M"]  = num.ConvertNum(dt.Rows[r]["BONUS_M"].ToString());
                    dr["DTDEC_M"] = dt.Rows[r]["DTDEC_M"].ToString().Substring(0, 10);
                    dr["DESBONUS_5"]  = dt.Rows[r]["DESBONUS_5"].ToString();
                dr["BONUS_5"]  = num.ConvertNum(dt.Rows[r]["BONUS_5"].ToString());
                    dr["DTDEC_5"] = dt.Rows[r]["DTDEC_5"].ToString().Substring(0, 10);
                    dr["DESBONUS_10"]  = dt.Rows[r]["DESBONUS_10"].ToString();
                dr["BONUS_10"]  = num.ConvertNum(dt.Rows[r]["BONUS_10"].ToString());
                    dr["DTDEC_10"] = dt.Rows[r]["DTDEC_10"].ToString().Substring(0, 10);
                    dr["COD_PROD"] = dt.Rows[r]["COD_PROD"].ToString();  
                    ds137.Bonus.Rows.Add(dr);
                }
                //17/11/2015 era commentato ...
                dt = SectionManager.GetDataSection(tabelleSessione, "[C6MartPeriodico].[PL_MP_S137BISCapitaleProtetto]", dataThread);
                for (int r = 0; r < dt.Rows.Count; r++)
                {
                    DataRow dr = ds137.Protetti.NewRow();
                    dr["DES_PROD"] = dt.Rows[r]["DES_PROD"].ToString();
                    dr["COD_CONF"] = dt.Rows[r]["COD_CONF"].ToString();
                    //dr["QUOTA"] = num.ConvertNum(dt.Rows[r]["QUOTA"].ToString());
                    dr["QUOTA"] = Convert.ToDecimal(dt.Rows[r]["QUOTA"].ToString()).ToString("#,##0.000");
                    //dr["NUMEROQUOTE"] = num.ConvertNum(dt.Rows[r]["NUMEROQUOTE"].ToString());
                    dr["NUMEROQUOTE"] = Convert.ToDecimal(dt.Rows[r]["NUMEROQUOTE"].ToString()).ToString("#,##0.000");
                    dr["CONTROVALORE"] = num.ConvertNum(dt.Rows[r]["CONTROVALORE"].ToString());
                    dr["DATARIF"] = dt.Rows[r]["DATARIF"].ToString().Substring(0, 10);
                    dr["DES_MAX"] = dt.Rows[r]["DES_MAX"].ToString();
                    dr["QUOTA_MAX"] = dt.Rows[r]["QUOTA_MAX"].ToString();
                    dr["QUOTA_MAX_PERC"] = dt.Rows[r]["QUOTA_MAX_PERC"].ToString();
                    dr["DATARIF_MAX"] = dt.Rows[r]["DATARIF_MAX"].ToString().Substring(0, 10);
                    dr["DES_PROT"] = dt.Rows[r]["DES_PROT"].ToString();
                    //dr["QUOTA_PROT"] = num.ConvertNum(dt.Rows[r]["QUOTA_PROT"].ToString());
                    dr["QUOTA_PROT"] = Convert.ToDecimal(dt.Rows[r]["QUOTA_PROT"].ToString()).ToString("#,##0.000");
                    //dr["NUMEROQUOTE_PROT"] = num.ConvertNum(dt.Rows[r]["NUMEROQUOTE_PROT"].ToString());
                    dr["NUMEROQUOTE_PROT"] = Convert.ToDecimal(dt.Rows[r]["NUMEROQUOTE_PROT"].ToString()).ToString("#,##0.000");
                    dr["CONTROVALORE_PROT"] = num.ConvertNum(dt.Rows[r]["CONTROVALORE_PROT"].ToString());

                    #region E-FOI80
                    dr["DES_PROD_TIT"] = dt.Rows[r]["DES_PROD_TIT"].ToString();
                    #endregion

                    ds137.Protetti.Rows.Add(dr);
                }

                #region NUOVA GESTIONE FOI80 - 24/11/2015 - E_FOI80
                dt = SectionManager.GetDataSection(tabelleSessione, "[C6MartPeriodico].[PL_MP_S137BIS_FOI80]", dataThread);
                for (int r = 0; r < dt.Rows.Count; r++)
                {
                    DataRow dr = ds137.FOI80.NewRow();
                    //sistemo la data che arriva nel formato 'aaaammgg' (es: 20151031)
                    string dttrim_1 = dt.Rows[r]["DTTRIM"].ToString().Substring(0, 8);
                    string dttrim_1_anno = dttrim_1.Substring(0, 4);
                    string dttrim_1_mese = dttrim_1.Substring(4, 2);
                    string dttrim_1_giorno = dttrim_1.Substring(6, 2);
                    string dttrim_corretta = dttrim_1_giorno + '/' + dttrim_1_mese + '/' + dttrim_1_anno;
                    dr["DTTRIM"] = dttrim_corretta;
                    string dtrife_1 = dt.Rows[r]["DTRIFE"].ToString().Substring(0, 8);
                    string dtrife_1_anno = dtrife_1.Substring(0, 4);
                    string dtrife_1_mese = dtrife_1.Substring(4, 2);
                    string dtrife_1_giorno = dtrife_1.Substring(6, 2);
                    string dtrife_1_corretta = dtrife_1_giorno + '/' + dtrife_1_mese + '/' + dtrife_1_anno;
                    dr["DTRIFE"] = dtrife_1_corretta;
                    dr["RETE"] = dt.Rows[r]["RETE"].ToString();
                    dr["CODFIS"] = dt.Rows[r]["CODFIS"].ToString();
                    dr["DESPROD"] = dt.Rows[r]["DESPROD"].ToString();
                    dr["CODMAN"] = dt.Rows[r]["CODMAN"].ToString();
                    dr["CODCONF"] = dt.Rows[r]["CODCONF"].ToString();
                    dr["CODPROD"] = dt.Rows[r]["CODPROD"].ToString();
                    dr["SUBPROD"] = dt.Rows[r]["SUBPROD"].ToString();
                    dr["ISIN"] = dt.Rows[r]["ISIN"].ToString();
                    //dr["CTV"] = Convert.ToDecimal(dt.Rows[r]["CTV"].ToString()).ToString("#,##0.000");
                    dr["CTV"] = Convert.ToDecimal(dt.Rows[r]["CTV"].ToString()).ToString("#,##0.00");
                    dr["PREZZO"] = Convert.ToDecimal(dt.Rows[r]["PREZZO"].ToString()).ToString("#,##0.000");
                    dr["QUOTE"] = Convert.ToDecimal(dt.Rows[r]["QUOTE"].ToString()).ToString("#,##0.000");
                    dr["PREZZOMAX"] = Convert.ToDecimal(dt.Rows[r]["PREZZOMAX"].ToString()).ToString("#,##0.000");
                    string dtPrezzoMax_1 = dt.Rows[r]["DTPREZZOMAX"].ToString().Substring(0, 8);
                    string dtPrezzoMax_1_anno = dtPrezzoMax_1.Substring(0, 4);
                    string dtPrezzoMax_1_mese = dtPrezzoMax_1.Substring(4, 2);
                    string dtPrezzoMax_1_giorno = dtPrezzoMax_1.Substring(6, 2);
                    string dtPrezzoMax_1_corretta = dtPrezzoMax_1_giorno + '/' + dtPrezzoMax_1_mese + '/' + dtPrezzoMax_1_anno;
                    dr["DTPREZZOMAX"] = dtPrezzoMax_1_corretta;
                    dr["DESMAX"] = dt.Rows[r]["DESMAX"].ToString();
                    dr["PREZZOPROT"] = Convert.ToDecimal(dt.Rows[r]["PREZZOPROT"].ToString()).ToString("#,##0.000");
                    //dr["CTRVIMPPROT"] = Convert.ToDecimal(dt.Rows[r]["CTRVIMPPROT"].ToString()).ToString("#,##0.000");
                    dr["CTRVIMPPROT"] = Convert.ToDecimal(dt.Rows[r]["CTRVIMPPROT"].ToString()).ToString("#,##0.00");
                    dr["DESPROT"] = dt.Rows[r]["DESPROT"].ToString();
                    dr["DESPRODTIT"] = dt.Rows[r]["DESPRODTIT"].ToString();
                    dr["QUOTA_MAX_PERC"] = dt.Rows[r]["QUOTA_MAX_PERC"].ToString();
                    ds137.FOI80.Rows.Add(dr);
                }
                #endregion - E_FOI80

                //
                dsr.DatiSezione = ds137;

                #region NUOVA GESTIONE FOI80 - 24/11/2015 - E_FOI80
                //dsr.Esito = ds137.Bonus.Rows.Count  +ds137.Protetti.Rows.Count; --- sostituita dalla seguente
                dsr.Esito = ds137.Bonus.Rows.Count + ds137.Protetti.Rows.Count + ds137.FOI80.Rows.Count;
                #endregion

                return dsr;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion
    }
}