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 DSS179EmittentiConcentrazioneAlta : IDataSection
    {
        private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();


        //private int _experince;
        //public int Experince
        //{
        //    set
        //    {
        //        _experince = value;
        //    }
        //    get
        //    {
        //        return _experince;
        //    }
        //}

        public DSS179EmittentiConcentrazioneAlta()
        {
            //
            // TODO: Add constructor logic here
            //
        }
        #region IDataSection Members

        /// <summary>
        /// Implement the getDataSection function of the interface IDataSection.
        /// </summary>
        /// <param name="tabelleSessione"></param>
        /// <param name="querySql"> Sql Statment to be executed to return the Profile Risk of the certain customer in a certain network</param>
        /// <param name="dataThread"></param>
        /// <returns> Data Table to be shown in the report</returns>
        public DataSectionResult getDataSection(List<SessionStruct> tabelleSessione, string querySql, DataThread dataThread)
        {
            try
            {

                FormatNum num = new FormatNum();

                DataSectionResult dsr = new DataSectionResult();


                DataSetS179 ds179 = new DataSetS179();

                // La sezione va stampata se non si verificano i seguenti 3 casi:
                // Copertura = 0

                string preQuerySql = dataThread.Periodico?"[C6MartPeriodico].[PL_D_S178CasiParticolari]": "[C6Mart].[PL_D_S178CasiParticolari]";

                DataTable dtTestoKO = SectionManager.GetDataSection(tabelleSessione, preQuerySql, dataThread);

                if (dtTestoKO.Rows.Count == 0)
                {
                    DataTable dt = SectionManager.GetDataSection(tabelleSessione, querySql, dataThread);

                    DataRow drEmittente;

                    ds179.EmittentiConcentrazione.Columns.Add(new DataColumn("controvalore", typeof(string)));
                    ds179.EmittentiConcentrazione.Columns.Add(new DataColumn("franchigia", typeof(string)));
                    ds179.EmittentiConcentrazione.Columns.Add(new DataColumn("rating", typeof(string)));
                    ds179.EmittentiConcentrazione.Columns.Add(new DataColumn("concentrazione", typeof(string)));
                    ds179.EmittentiConcentrazione.Columns.Add(new DataColumn("limiteConcentrazione", typeof(string)));


                    if (dt.Rows.Count > 0)
                    {
                        foreach (DataRow r in dt.Rows)
                        {
                            drEmittente = ds179.EmittentiConcentrazione.NewRow();
                            drEmittente["Emittente"] = r["Emittente"].ToString();
                            //drEmittente["ObbligazioniControvalore"] = Convert.ToDecimal(r["ObbligazioniControvalore"]).ToString("#,##0.00");
                            //drEmittente["ObbligazioniConcentrazione"] = Convert.ToDecimal(r["ObbligazioniConcentrazione"]).ToString("#,##0.00");
                            //drEmittente["AzioniControvalore"] =  Convert.ToDecimal(r["AzioniControvalore"]).ToString("#,##0.00");
                            //drEmittente["AzioniConcentrazione"] = Convert.ToDecimal(r["AzioniConcentrazione"]).ToString("#,##0.00");

                            //drEmittente["ObbligazioniControvalore"] = r["ObbligazioniControvalore"] == null ? "-" : Convert.ToDecimal(r["ObbligazioniControvalore"]).ToString("C", System.Globalization.CultureInfo.CurrentCulture);
                            //drEmittente["ObbligazioniConcentrazione"] = r["ObbligazioniConcentrazione"] == null ? "-" : Convert.ToDecimal(r["ObbligazioniConcentrazione"]).ToString("P", System.Globalization.CultureInfo.CurrentCulture);
                            //drEmittente["AzioniControvalore"] = r["AzioniControvalore"] == null ? "-" : Convert.ToDecimal(r["AzioniControvalore"]).ToString("C");
                            //drEmittente["AzioniConcentrazione"] = r["AzioniConcentrazione"] == null ? "-" : Convert.ToDecimal(r["AzioniConcentrazione"]).ToString("P2");

                            //drEmittente["ObbligazioniControvalore"] = num.ConvertNum(r["ObbligazioniControvalore"]);
                            //drEmittente["ObbligazioniConcentrazione"] = num.ConvertNum(r["ObbligazioniConcentrazione"]);

                            //drEmittente["AzioniControvalore"] = num.ConvertNum(r["AzioniControvalore"]);
                            //drEmittente["AzioniConcentrazione"] = num.ConvertNum(r["AzioniConcentrazione"]);

                            //--MIFID2 20180706 CR Napolitano i simboli € e % vanno nell'intestazione e non nelle celle
                            //drEmittente["ObbligazioniControvalore"] = string.IsNullOrEmpty(r["ObbligazioniControvalore"].ToString()) ? "-" : string.Concat(num.ConvertNum(r["ObbligazioniControvalore"]), " €");
                            //drEmittente["ObbligazioniConcentrazione"] = string.IsNullOrEmpty(r["ObbligazioniConcentrazione"].ToString()) ? "-" : string.Concat(num.ConvertNum(r["ObbligazioniConcentrazione"]), "%");


                            //drEmittente["AzioniControvalore"] = string.IsNullOrEmpty(r["AzioniControvalore"].ToString()) ? "-" : string.Concat(num.ConvertNum(r["AzioniControvalore"]), " €");
                            //drEmittente["AzioniConcentrazione"] = string.IsNullOrEmpty(r["AzioniConcentrazione"].ToString()) ? "-" : string.Concat(num.ConvertNum(r["AzioniConcentrazione"]), "%");

                            //Leone: modifiche fatte sulla base dei requisiti
                            //drEmittente["ObbligazioniControvalore"] = string.IsNullOrEmpty(r["ObbligazioniControvalore"].ToString()) ? "-" : num.ConvertNum(r["ObbligazioniControvalore"]);
                            //drEmittente["ObbligazioniConcentrazione"] = string.IsNullOrEmpty(r["ObbligazioniConcentrazione"].ToString()) ? "-" : num.ConvertNum(r["ObbligazioniConcentrazione"]);


                            //drEmittente["AzioniControvalore"] = string.IsNullOrEmpty(r["AzioniControvalore"].ToString()) ? "-" : num.ConvertNum(r["AzioniControvalore"]);
                            //drEmittente["AzioniConcentrazione"] = string.IsNullOrEmpty(r["AzioniConcentrazione"].ToString()) ? "-" : num.ConvertNum(r["AzioniConcentrazione"]);

                            drEmittente["controvalore"] = string.IsNullOrEmpty(r["ctv"].ToString()) ? "-" : num.ConvertNum(r["ctv"]);
                            drEmittente["franchigia"] = string.IsNullOrEmpty(r["franchigia"].ToString()) ? "-" : num.ConvertNum(r["franchigia"]);
                            drEmittente["rating"] = string.IsNullOrEmpty(r["rating"].ToString()) ? "-" : num.ConvertNum(r["rating"]);
                            drEmittente["concentrazione"] = string.IsNullOrEmpty(r["percConcentrazione"].ToString()) ? "-" : num.ConvertNum(r["percConcentrazione"]);
                            drEmittente["limiteConcentrazione"] = string.IsNullOrEmpty(r["sogliaConcentrazione"].ToString()) ? "-" : num.ConvertNum(r["sogliaConcentrazione"]);


                            //--MIFID2




                            ds179.EmittentiConcentrazione.Rows.Add(drEmittente);
                        }
                    }
                }

                dsr.DatiSezione = ds179;

                int esito = 0;

                //if (dtFilter.Rows.Count < 5)
                //    esito = 0;
                //else
                esito = ds179.EmittentiConcentrazione.Rows.Count;

                dsr.Esito = esito;
                return dsr;

            }
            catch (Exception ex)
            {
                try
                {
                    logger.Error(String.Concat(ex.Message, " ", dataThread.CodiceFiscale));
                }
                catch { }
                throw ex;
            }
        }

        #endregion
    }
}