730 lines
35 KiB
C#
730 lines
35 KiB
C#
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; }
|
||
}
|
||
}
|