2025-04-15 12:10:19 +02:00

730 lines
35 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
/// <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 getDataSectionOld(List<SessionStruct> 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
/// <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();
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<DettaglioConcentrazioneProdottiComplessi> listaDettaglio = GetDettaglioConcentrazioneProdottiComplessi(dt);
List<TotaleDettConcentrazioneProdComplessi> listaTotali = GetTotaliConcentrazioneProdottiComplessi(dt);
List<TotaleDettConcentrazioneProdComplessi> listaTotaleGenerale = GetTotaleGeneraleProdotticomplessi(dt, listaDettaglio);
// Converto in un Datatable la lista di dettaglio e lo aggiungo al dataset di ritorno
DataTable _dtDettaglioComplessita = UtilityBusinessLayer.ToDataTable<DettaglioConcentrazioneProdottiComplessi>(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<TotaleDettConcentrazioneProdComplessi>(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<TotaleDettConcentrazioneProdComplessi>(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<DettaglioConcentrazioneProdottiComplessi> GetDettaglioConcentrazioneProdottiComplessi(DataTable dt)
{
List<DettaglioConcentrazioneProdottiComplessi> _lista = new List<DettaglioConcentrazioneProdottiComplessi>();
//List<DettaglioConcentrazioneProdottiComplessi> _lista = UtilityBusinessLayer.ConvertTo<DettaglioConcentrazioneProdottiComplessi>(dt);
// Separo le diverse complessità
//List<DettaglioConcentrazioneProdottiComplessi> _listaAlta = _lista.Where(f => f.Ordine == 1).Select(s => s).ToList();
//List<DettaglioConcentrazioneProdottiComplessi> _listaMedioAltaAlta = _lista.Where(f => f.Ordine == 2).Select(s => s).ToList();
//List<DettaglioConcentrazioneProdottiComplessi> _listaMedioAltaMedioBassaAlta = _lista.Where(f => f.Ordine == 3).Select(s => s).ToList();
var _listaAlta = dt.AsEnumerable().Where(f => f.Field<int>("Ordine") == 1).Select(s => s).ToList();
var _listaMedioAltaAlta = dt.AsEnumerable().Where(f => f.Field<int>("Ordine") == 2).Select(s => s).ToList();
var _listaMedioAltaMedioBassaAlta = dt.AsEnumerable().Where(f => f.Field<int>("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<decimal>("Controvalore");
PesoDecimale += item.Field<decimal>("Peso");
_lista.Add(new DettaglioConcentrazioneProdottiComplessi()
{
Complessita = item.Field<string>("Complessita"),
Ordine = item.Field<int>("Ordine"),
NomeProdotto = item.Field<string>("NomeProdotto"), //"Bkamerica 4,2% 14-24",
Controvalore = (item.Field<decimal>("Controvalore") == 0 ? "-" : item.Field<decimal>("Controvalore").ToString("#,#0.00")), //25089.39.ToString("#,##0.000"),
Descrizione = item.Field<string>("Descrizione"),
CodiceContratto = item.Field<string>("CodiceContratto"),
Peso = (item.Field<decimal>("Peso") == 0 ? "-" : item.Field<decimal>("Peso").ToString("#,#0.00")),
ControvaloreDecimale = ControvaloreDec,
PesoDecimale = PesoDecimale,
TotalePatrimonio = item.Field<decimal>("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<decimal>("Controvalore");
PesoDecimale += item.Field<decimal>("Peso");
_lista.Add(new DettaglioConcentrazioneProdottiComplessi()
{
Complessita = item.Field<string>("Complessita"),
Ordine = item.Field<int>("Ordine"),
NomeProdotto = item.Field<string>("NomeProdotto"), //"Bkamerica 4,2% 14-24",
Controvalore = (item.Field<decimal>("Controvalore") == 0 ? "-" : item.Field<decimal>("Controvalore").ToString("#,#0.00")), //25089.39.ToString("#,##0.000"),
Descrizione = item.Field<string>("Descrizione"),
CodiceContratto = item.Field<string>("CodiceContratto"),
Peso = (item.Field<decimal>("Peso") == 0 ? "-" : item.Field<decimal>("Peso").ToString("#,#0.00")),
ControvaloreDecimale = ControvaloreDec,
PesoDecimale = PesoDecimale,
TotalePatrimonio = item.Field<decimal>("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<decimal>("Controvalore");
PesoDecimale += item.Field<decimal>("Peso");
_lista.Add(new DettaglioConcentrazioneProdottiComplessi()
{
Complessita = item.Field<string>("Complessita"),
Ordine = item.Field<int>("Ordine"),
NomeProdotto = item.Field<string>("NomeProdotto"), //"Bkamerica 4,2% 14-24",
Controvalore = (item.Field<decimal>("Controvalore") == 0 ? "-" : item.Field<decimal>("Controvalore").ToString("#,#0.00")), //25089.39.ToString("#,##0.000"),
Descrizione = item.Field<string>("Descrizione"),
CodiceContratto = item.Field<string>("CodiceContratto"),
Peso = (item.Field<decimal>("Peso") == 0 ? "-" : item.Field<decimal>("Peso").ToString("#,#0.00")),
ControvaloreDecimale = ControvaloreDec,
PesoDecimale = PesoDecimale,
TotalePatrimonio = item.Field<decimal>("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<TotaleDettConcentrazioneProdComplessi> GetTotaliConcentrazioneProdottiComplessi(DataTable dt)
{
List<TotaleDettConcentrazioneProdComplessi> _listaTotaliComplessita = new List<TotaleDettConcentrazioneProdComplessi>();
List<TotaleDettConcentrazioneProdComplessi> _listaTotali = UtilityBusinessLayer.ConvertTo<TotaleDettConcentrazioneProdComplessi>(dt);
// Separo i totali per le diverse complessità
List<TotaleDettConcentrazioneProdComplessi> _listaTotAlta = _listaTotali.Where(f => f.Ordine == 1).Select(s => s).ToList();
List<TotaleDettConcentrazioneProdComplessi> _listaTotMedioAltaAlta = _listaTotali.Where(f => f.Ordine == 2).Select(s => s).ToList();
List<TotaleDettConcentrazioneProdComplessi> _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<TotaleDettConcentrazioneProdComplessi> GetTotaleGeneraleProdotticomplessi(DataTable dt, List<DettaglioConcentrazioneProdottiComplessi> _listaDettaglio)
{
List<TotaleDettConcentrazioneProdComplessi> listaTotGenerale = new List<TotaleDettConcentrazioneProdComplessi>();
List<TotaleDettConcentrazioneProdComplessi> _listaTotali = UtilityBusinessLayer.ConvertTo<TotaleDettConcentrazioneProdComplessi>(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; }
}
}