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; using System.ComponentModel; using System.Linq; namespace PDFGenerator.BusinessLayer.DataSection { class DSS180ProdottiAltaComplessita : IDataSection { private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); //private int _experince; //public int Experince //{ // set // { // _experince = value; // } // get // { // return _experince; // } //} public DSS180ProdottiAltaComplessita() { // // TODO: Add constructor logic here // } #region IDataSection Members /// /// Implement the getDataSection function of the interface IDataSection. /// /// /// Sql Statment to be executed to return the Profile Risk of the certain customer in a certain network /// /// Data Table to be shown in the report public DataSectionResult getDataSectionOld(List tabelleSessione, string querySql, DataThread dataThread) { try { FormatNum num = new FormatNum(); DataSectionResult dsr = new DataSectionResult(); DataSetS180 ds180 = new DataSetS180(); // 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); //Se la verifica ha dato un KO significa che la sezione non deve essere stampata if (dtTestoKO.Rows.Count > 0) { dsr.Esito = 0; return dsr; } else { DataTable dt = SectionManager.GetDataSection(tabelleSessione, querySql, dataThread); DataRow drProdotto; DataRow drTotaleProdotti; DataRow drTotalePatrimonio; decimal totaleControvaloreProdotti = 0; decimal totalePesoProdotti = 0; decimal totalePatrimonio = 0; if (dt.Rows.Count > 0) { drTotaleProdotti = ds180.TotaleProdotti.NewRow(); drTotaleProdotti["Descrizione"] = @"TOTALE PRODOTTI CON COMPLESSITA’ ""ALTA"" e ""MOLTO ALTA"""; foreach (DataRow r in dt.Rows) { drProdotto = ds180.ProdottiAltaComplessita.NewRow(); drProdotto["CodiceContratto"] = r["CodiceContratto"].ToString(); drProdotto["NomeProdotto"] = r["NomeProdotto"].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 CR Napolitano i simboli vanno solo nell'intestazione //drProdotto["Controvalore"] = string.IsNullOrEmpty(r["Controvalore"].ToString()) ? "-" : string.Concat(num.ConvertNum(r["Controvalore"]), " €"); drProdotto["Controvalore"] = string.IsNullOrEmpty(r["Controvalore"].ToString()) ? "-" : num.ConvertNum(r["Controvalore"]); //--MIFID2 drProdotto["Peso"] = string.IsNullOrEmpty(r["Peso"].ToString()) ? "-" : num.ConvertNum(r["Peso"]); totalePatrimonio = Convert.ToDecimal(r["TotalePatrimonio"].ToString()); ds180.ProdottiAltaComplessita.Rows.Add(drProdotto); totaleControvaloreProdotti += Convert.ToDecimal(r["Controvalore"]); totalePesoProdotti += Convert.ToDecimal(r["Peso"]); } //MIFID2 CR Napolitano i simboli vanno solo nell'intestazione //drTotaleProdotti["TotaleControvalore"] = string.Concat(num.ConvertNum(Convert.ToDecimal(totaleControvaloreProdotti).ToString()), " €"); drTotaleProdotti["TotaleControvalore"] = num.ConvertNum(Convert.ToDecimal(totaleControvaloreProdotti).ToString()); //MIFID2 drTotaleProdotti["TotalePeso"] = Convert.ToDecimal(num.ConvertNum(totalePesoProdotti)).ToString(); ds180.TotaleProdotti.Rows.Add(drTotaleProdotti); } drTotalePatrimonio = ds180.TotalePatrimonio.NewRow(); drTotalePatrimonio["Descrizione"] = "TOTALE PATRIMONIO"; //drTotalePatrimonio["TotaleControvalore"] = string.Concat(Convert.ToDecimal("11.215.345,87").ToString(), " €"); //MIFID2 CR Napolitano i simboli vanno solo nell'intestazione //drTotalePatrimonio["TotaleControvalore"] = string.Concat(num.ConvertNum(totalePatrimonio), " €"); //FIX Totale Patrimonio (deve contenere anche tutte le altre voci //drTotalePatrimonio["TotaleControvalore"] = num.ConvertNum(totalePatrimonio); drTotalePatrimonio["TotaleControvalore"] = num.ConvertNum(totalePatrimonio + dataThread.ContoCorrente + dataThread.PartiteViaggiantiInvestimento + dataThread.PartiteViaggiantiDisinvestimento + dataThread.TotalSelfNegCurrentAccountValue); //--MIFID2 drTotalePatrimonio["TotalePeso"] = ""; ds180.TotalePatrimonio.Rows.Add(drTotalePatrimonio); dsr.DatiSezione = ds180; int esito = 0; //if (dtFilter.Rows.Count < 5) // esito = 0; //else esito = ds180.ProdottiAltaComplessita.Rows.Count; dsr.Esito = esito; dsr.Esito = 1; return dsr; } } catch (Exception ex) { try { logger.Error(String.Concat(ex.Message, " ", dataThread.CodiceFiscale)); } catch { } throw ex; } } #region Nuova Sezione per la gestione dei nuovi profili di rischio /// /// Implement the getDataSection function of the interface IDataSection. /// /// /// Sql Statment to be executed to return the Profile Risk of the certain customer in a certain network /// /// Data Table to be shown in the report public DataSectionResult getDataSection(List tabelleSessione, string querySql, DataThread dataThread) { try { FormatNum num = new FormatNum(); DataSectionResult dsr = new DataSectionResult(); DataSetS180 ds180 = new DataSetS180(); // 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); //Se la verifica ha dato un KO significa che la sezione non deve essere stampata if (dtTestoKO.Rows.Count > 0) { dsr.Esito = 0; return dsr; } else { DataTable dt = SectionManager.GetDataSection(tabelleSessione, querySql, dataThread); if (dt.Rows.Count == 0) { dsr.Esito = 0; return dsr; } List listaDettaglio = GetDettaglioConcentrazioneProdottiComplessi(dt); List listaTotali = GetTotaliConcentrazioneProdottiComplessi(dt); List listaTotaleGenerale = GetTotaleGeneraleProdotticomplessi(dt, listaDettaglio); // Converto in un Datatable la lista di dettaglio e lo aggiungo al dataset di ritorno DataTable _dtDettaglioComplessita = UtilityBusinessLayer.ToDataTable(listaDettaglio); _dtDettaglioComplessita.TableName = "DettaglioComplessita"; ds180.Tables.Add(_dtDettaglioComplessita); // Converto in un Datatable la lista dei Totali e lo aggiungo al dataset di ritorno DataTable _dtTotaliComplessita = UtilityBusinessLayer.ToDataTable(listaTotali); _dtTotaliComplessita.TableName = "TotaliComplessita"; ds180.Tables.Add(_dtTotaliComplessita); // Converto in un Datatable la lista del Totale e lo aggiungo al dataset di ritorno DataTable _dtTotaleGenerale = UtilityBusinessLayer.ToDataTable(listaTotaleGenerale); _dtTotaleGenerale.TableName = "TotaleGenerale"; ds180.Tables.Add(_dtTotaleGenerale); dsr.DatiSezione = ds180; int esito = 0; esito = ds180.Tables["DettaglioComplessita"].Rows.Count; dsr.Esito = esito; //DataRow drProdotto; //DataRow drTotaleProdotti; //DataRow drTotalePatrimonio; //decimal totaleControvaloreProdotti = 0; //decimal totalePesoProdotti = 0; //decimal totalePatrimonio = 0; //if (dt.Rows.Count > 0) //{ // drTotaleProdotti = ds180.TotaleProdotti.NewRow(); // drTotaleProdotti["Descrizione"] = @"TOTALE PRODOTTI CON COMPLESSITA’ ""ALTA"" e ""MOLTO ALTA"""; // foreach (DataRow r in dt.Rows) // { // drProdotto = ds180.ProdottiAltaComplessita.NewRow(); // drProdotto["CodiceContratto"] = r["CodiceContratto"].ToString(); // drProdotto["NomeProdotto"] = r["NomeProdotto"].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 CR Napolitano i simboli vanno solo nell'intestazione // //drProdotto["Controvalore"] = string.IsNullOrEmpty(r["Controvalore"].ToString()) ? "-" : string.Concat(num.ConvertNum(r["Controvalore"]), " €"); // drProdotto["Controvalore"] = string.IsNullOrEmpty(r["Controvalore"].ToString()) ? "-" : num.ConvertNum(r["Controvalore"]); // //--MIFID2 // drProdotto["Peso"] = string.IsNullOrEmpty(r["Peso"].ToString()) ? "-" : num.ConvertNum(r["Peso"]); // totalePatrimonio = Convert.ToDecimal(r["TotalePatrimonio"].ToString()); // ds180.ProdottiAltaComplessita.Rows.Add(drProdotto); // totaleControvaloreProdotti += Convert.ToDecimal(r["Controvalore"]); // totalePesoProdotti += Convert.ToDecimal(r["Peso"]); // } // //MIFID2 CR Napolitano i simboli vanno solo nell'intestazione // //drTotaleProdotti["TotaleControvalore"] = string.Concat(num.ConvertNum(Convert.ToDecimal(totaleControvaloreProdotti).ToString()), " €"); // drTotaleProdotti["TotaleControvalore"] = num.ConvertNum(Convert.ToDecimal(totaleControvaloreProdotti).ToString()); // //MIFID2 // drTotaleProdotti["TotalePeso"] = Convert.ToDecimal(num.ConvertNum(totalePesoProdotti)).ToString(); // ds180.TotaleProdotti.Rows.Add(drTotaleProdotti); //} //drTotalePatrimonio = ds180.TotalePatrimonio.NewRow(); //drTotalePatrimonio["Descrizione"] = "TOTALE PATRIMONIO"; ////drTotalePatrimonio["TotaleControvalore"] = string.Concat(Convert.ToDecimal("11.215.345,87").ToString(), " €"); ////MIFID2 CR Napolitano i simboli vanno solo nell'intestazione ////drTotalePatrimonio["TotaleControvalore"] = string.Concat(num.ConvertNum(totalePatrimonio), " €"); ////FIX Totale Patrimonio (deve contenere anche tutte le altre voci ////drTotalePatrimonio["TotaleControvalore"] = num.ConvertNum(totalePatrimonio); //drTotalePatrimonio["TotaleControvalore"] = num.ConvertNum(totalePatrimonio // + dataThread.ContoCorrente + // dataThread.PartiteViaggiantiInvestimento + // dataThread.PartiteViaggiantiDisinvestimento + // dataThread.TotalSelfNegCurrentAccountValue); ////--MIFID2 //drTotalePatrimonio["TotalePeso"] = ""; //ds180.TotalePatrimonio.Rows.Add(drTotalePatrimonio); //dsr.DatiSezione = ds180; //int esito = 0; ////if (dtFilter.Rows.Count < 5) //// esito = 0; ////else //esito = ds180.ProdottiAltaComplessita.Rows.Count; //dsr.Esito = esito; //dsr.Esito = 1; return dsr; } } catch (Exception ex) { try { logger.Error(String.Concat(ex.Message, " ", dataThread.CodiceFiscale)); } catch { } throw ex; } } #endregion #endregion #region Recupero Dati protected List GetDettaglioConcentrazioneProdottiComplessi(DataTable dt) { List _lista = new List(); //List _lista = UtilityBusinessLayer.ConvertTo(dt); // Separo le diverse complessità //List _listaAlta = _lista.Where(f => f.Ordine == 1).Select(s => s).ToList(); //List _listaMedioAltaAlta = _lista.Where(f => f.Ordine == 2).Select(s => s).ToList(); //List _listaMedioAltaMedioBassaAlta = _lista.Where(f => f.Ordine == 3).Select(s => s).ToList(); var _listaAlta = dt.AsEnumerable().Where(f => f.Field("Ordine") == 1).Select(s => s).ToList(); var _listaMedioAltaAlta = dt.AsEnumerable().Where(f => f.Field("Ordine") == 2).Select(s => s).ToList(); var _listaMedioAltaMedioBassaAlta = dt.AsEnumerable().Where(f => f.Field("Ordine") == 3).Select(s => s).ToList(); #region lista Alta if (_listaAlta.Count > 0) { decimal ControvaloreDec = 0M; decimal PesoDecimale = 0M; foreach (var item in _listaAlta.AsEnumerable()) { if (item != null) { ControvaloreDec += item.Field("Controvalore"); PesoDecimale += item.Field("Peso"); _lista.Add(new DettaglioConcentrazioneProdottiComplessi() { Complessita = item.Field("Complessita"), Ordine = item.Field("Ordine"), NomeProdotto = item.Field("NomeProdotto"), //"Bkamerica 4,2% 14-24", Controvalore = (item.Field("Controvalore") == 0 ? "-" : item.Field("Controvalore").ToString("#,#0.00")), //25089.39.ToString("#,##0.000"), Descrizione = item.Field("Descrizione"), CodiceContratto = item.Field("CodiceContratto"), Peso = (item.Field("Peso") == 0 ? "-" : item.Field("Peso").ToString("#,#0.00")), ControvaloreDecimale = ControvaloreDec, PesoDecimale = PesoDecimale, TotalePatrimonio = item.Field("TotalePatrimonio") }); } else { _lista.Add(new DettaglioConcentrazioneProdottiComplessi() { Complessita = "-", Ordine = 1, NomeProdotto = "-", //"Bkamerica 4,2% 14-24", Controvalore = "0.00", Descrizione = "-", CodiceContratto = "-", Peso = "0.00", ControvaloreDecimale = 0M, PesoDecimale = 0M }); } } } else { _lista.Add(new DettaglioConcentrazioneProdottiComplessi() { Complessita = "-", Ordine = 1, NomeProdotto = "-", //"Bkamerica 4,2% 14-24", Controvalore = "0.00", Descrizione = "-", CodiceContratto = "-", Peso = "0.00", ControvaloreDecimale = 0M, PesoDecimale = 0M }); } #endregion #region lista Medioalta - Alta // MedioAlta - Alta if (_listaMedioAltaAlta.Count > 0) { decimal ControvaloreDec = 0M; decimal PesoDecimale = 0M; foreach (var item in _listaMedioAltaAlta.AsEnumerable()) { if (item != null) { ControvaloreDec += item.Field("Controvalore"); PesoDecimale += item.Field("Peso"); _lista.Add(new DettaglioConcentrazioneProdottiComplessi() { Complessita = item.Field("Complessita"), Ordine = item.Field("Ordine"), NomeProdotto = item.Field("NomeProdotto"), //"Bkamerica 4,2% 14-24", Controvalore = (item.Field("Controvalore") == 0 ? "-" : item.Field("Controvalore").ToString("#,#0.00")), //25089.39.ToString("#,##0.000"), Descrizione = item.Field("Descrizione"), CodiceContratto = item.Field("CodiceContratto"), Peso = (item.Field("Peso") == 0 ? "-" : item.Field("Peso").ToString("#,#0.00")), ControvaloreDecimale = ControvaloreDec, PesoDecimale = PesoDecimale, TotalePatrimonio = item.Field("TotalePatrimonio") }); } else { _lista.Add(new DettaglioConcentrazioneProdottiComplessi() { Complessita = "-", Ordine = 2, NomeProdotto = "-", //"Bkamerica 4,2% 14-24", Controvalore = "0.00", Descrizione = "-", CodiceContratto = "-", Peso = "0.00", ControvaloreDecimale = 0M, PesoDecimale = 0M }); } } } else { _lista.Add(new DettaglioConcentrazioneProdottiComplessi() { Complessita = "-", Ordine = 2, NomeProdotto = "-", //"Bkamerica 4,2% 14-24", Controvalore = "0.00", Descrizione = "-", CodiceContratto = "-", Peso = "0.00", ControvaloreDecimale = 0M, PesoDecimale = 0M }); } #endregion #region lista MedioAlta MedioBassa Alta if (_listaMedioAltaMedioBassaAlta.Count > 0) { decimal ControvaloreDec = 0M; decimal PesoDecimale = 0M; foreach (var item in _listaMedioAltaMedioBassaAlta.AsEnumerable()) { if (item != null) { ControvaloreDec += item.Field("Controvalore"); PesoDecimale += item.Field("Peso"); _lista.Add(new DettaglioConcentrazioneProdottiComplessi() { Complessita = item.Field("Complessita"), Ordine = item.Field("Ordine"), NomeProdotto = item.Field("NomeProdotto"), //"Bkamerica 4,2% 14-24", Controvalore = (item.Field("Controvalore") == 0 ? "-" : item.Field("Controvalore").ToString("#,#0.00")), //25089.39.ToString("#,##0.000"), Descrizione = item.Field("Descrizione"), CodiceContratto = item.Field("CodiceContratto"), Peso = (item.Field("Peso") == 0 ? "-" : item.Field("Peso").ToString("#,#0.00")), ControvaloreDecimale = ControvaloreDec, PesoDecimale = PesoDecimale, TotalePatrimonio = item.Field("TotalePatrimonio") }); } else { _lista.Add(new DettaglioConcentrazioneProdottiComplessi() { Complessita = "-", Ordine = 3, NomeProdotto = "-", //"Bkamerica 4,2% 14-24", Controvalore = "0.00", Descrizione = "-", CodiceContratto = "-", Peso = "0.00", ControvaloreDecimale = 0M, PesoDecimale = 0M }); } } } else { _lista.Add(new DettaglioConcentrazioneProdottiComplessi() { Complessita = "-", Ordine = 3, NomeProdotto = "-", //"Bkamerica 4,2% 14-24", Controvalore = "0.00", Descrizione = "-", CodiceContratto = "-", Peso = "0.00", ControvaloreDecimale = 0M, PesoDecimale = 0M }); } #endregion string Descrizione = _lista.Where(f => f.Descrizione != "-").Select(s => s.Descrizione).First(); _lista.ForEach(ec => ec.Descrizione = Descrizione); return _lista; } protected List GetTotaliConcentrazioneProdottiComplessi(DataTable dt) { List _listaTotaliComplessita = new List(); List _listaTotali = UtilityBusinessLayer.ConvertTo(dt); // Separo i totali per le diverse complessità List _listaTotAlta = _listaTotali.Where(f => f.Ordine == 1).Select(s => s).ToList(); List _listaTotMedioAltaAlta = _listaTotali.Where(f => f.Ordine == 2).Select(s => s).ToList(); List _listaTotMedioAltaMedioBassaAlta = _listaTotali.Where(f => f.Ordine == 3).Select(s => s).ToList(); #region lista Totali Alta if (_listaTotAlta.Count > 0) { foreach (var item in _listaTotAlta.Take(1)) { _listaTotaliComplessita.Add(new TotaleDettConcentrazioneProdComplessi() { Ordine = item.Ordine, Descrizione = "TOTALE PRODOTTI CON COMPLESSITA’ ALTA", SommaControvalore = (item.SommaControvalore == "0" ? "-" : Convert.ToDecimal(item.SommaControvalore).ToString("#,#0.00")), SommaPesi = (item.SommaPesi == "0" ? "-" : Convert.ToDecimal(item.SommaPesi).ToString("#,#0.00")), }); } } else { _listaTotaliComplessita.Add(new TotaleDettConcentrazioneProdComplessi() { Ordine = 1, Descrizione = "TOTALE PRODOTTI CON COMPLESSITA’ ALTA", SommaControvalore = "0.00", SommaPesi = "0.00", }); } #endregion #region lista Totali MedioAlta - Alta if (_listaTotMedioAltaAlta.Count > 0) { foreach (var item in _listaTotMedioAltaAlta.Take(1)) { _listaTotaliComplessita.Add(new TotaleDettConcentrazioneProdComplessi() { Ordine = item.Ordine, Descrizione = "TOTALE PRODOTTI CON COMPLESSITA’ MEDIO - ALTA e ALTA", SommaControvalore = (item.SommaControvalore == "0" ? "-" : Convert.ToDecimal(item.SommaControvalore).ToString("#,#0.00")), SommaPesi = (item.SommaPesi == "0" ? "-" : Convert.ToDecimal(item.SommaPesi).ToString("#,#0.00")), }); } } else { _listaTotaliComplessita.Add(new TotaleDettConcentrazioneProdComplessi() { Ordine = 2, Descrizione = "TOTALE PRODOTTI CON COMPLESSITA’ MEDIO - ALTA e ALTA", SommaControvalore = "0.00", SommaPesi = "0.00", }); } #endregion #region lista Totali MedioBassa - MedioAlta - Alta if (_listaTotMedioAltaMedioBassaAlta.Count > 0) { foreach (var item in _listaTotMedioAltaMedioBassaAlta.Take(1)) { _listaTotaliComplessita.Add(new TotaleDettConcentrazioneProdComplessi() { Ordine = item.Ordine, Descrizione = "TOTALE PRODOTTI CON COMPLESSITA’ MEDIO - BASSA,MEDIO - ALTA e ALTA", SommaControvalore = (item.SommaControvalore == "0" ? "-" : Convert.ToDecimal(item.SommaControvalore).ToString("#,#0.00")), SommaPesi = (item.SommaPesi == "0" ? "-" : Convert.ToDecimal(item.SommaPesi).ToString("#,#0.00")), }); } } else { _listaTotaliComplessita.Add(new TotaleDettConcentrazioneProdComplessi() { Ordine = 3, Descrizione = "TOTALE PRODOTTI CON COMPLESSITA’ MEDIO - BASSA,MEDIO - ALTA e ALTA", SommaControvalore = "0.00", SommaPesi = "0.00", }); } #endregion return _listaTotaliComplessita; } protected List GetTotaleGeneraleProdotticomplessi(DataTable dt, List _listaDettaglio) { List listaTotGenerale = new List(); List _listaTotali = UtilityBusinessLayer.ConvertTo(dt); foreach (var item in _listaTotali.Take(1)) { listaTotGenerale.Add(new TotaleDettConcentrazioneProdComplessi() { Descrizione = "TOTALE PATRIMONIO", //TotalePatrimonioCTV = _listaDettaglio.Sum(ss => ss.ControvaloreDecimale).ToString("#,#0.00"), TotalePatrimonioCTV = _listaDettaglio.Where(aa=> aa.TotalePatrimonio > 0).FirstOrDefault()?.TotalePatrimonio.ToString("#,#0.00"), TotalePatrimonioPesi = "100,00" //_listaDettaglio.Sum(ss => ss.PesoDecimale).ToString("#,#0.00") }); ; } return listaTotGenerale; } #endregion } public class DettaglioConcentrazioneProdottiComplessi { public string Descrizione { get; set; } [Description("Tipo Complessità")] public int Ordine { get; set; } [Description("codice Contratto")] public string CodiceContratto { get; set; } [Description("Descrizione")] public string NomeProdotto { get; set; } [Description("ctv")] public string Controvalore { get; set; } [Description("Peso Percentuale")] public string Peso { get; set; } [Description("Complessita")] public string Complessita { get; set; } public decimal ControvaloreDecimale { get; set; } public decimal PesoDecimale { get; set; } public decimal TotalePatrimonio { get; set; } } public class TotaleDettConcentrazioneProdComplessi { [Description("Tipo Complessità")] public int Ordine { get; set; } public string Descrizione { get; set; } public string TotalePatrimonioCTV { get; set; } public string TotalePatrimonioPesi { get; set; } public string SommaControvalore { get; set; } public string SommaPesi { get; set; } } }