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

210 lines
9.3 KiB
C#

using System;
using System.Web;
using System.Text;
using System.Data;
using System.Collections;
using System.Collections.Generic;
namespace PDFGenerator.BusinessLayer.DataSection
{
public class DSS146RischioDiversificazione : IDataSection
{
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
private TipoReport _tiporeport;
/// <summary>
/// Tipologia report.
/// </summary>
public TipoReport TipoReport
{
get
{
return _tiporeport;
}
set
{
_tiporeport = value;
}
}
public DataSectionResult getDataSection(List<SessionStruct> tabelleSessione, string querySql, DataThread dataThread)
{
try {
DataSectionResult dsr = new DataSectionResult();
FormatNum conv = new FormatNum();
DataSetS146 dS146 = new DataSetS146();
DataSetS146.RischioDiversificazioneRow dr;
DataSetS146.RischioPatrimonioFinanziarioRow patrimonioFinanziario;
DataSetS146.RischioDiversificazioneTableRow rischioDiversificazione;
dS146.RischioDiversificazione.Columns["Copertura"].Caption = "Copertura <BR> (%)";
DataTable dt = SectionManager.GetDataSection(tabelleSessione, querySql, dataThread);
//V If I have only BF/SPI or if the report type is Monitoring I have to display only the first row of the query,
if (dt.Rows.Count > 0 && (dt.Rows.Count < 3 || dataThread.TipoReport.ToUpper() == "MONITORAGGIO"))
{
DataRow row = dt.Rows[0];
dr = dS146.RischioDiversificazione.NewRischioDiversificazioneRow();
dr.patrimonio = row["patrimonio"].ToString();
//V non veniva fatto il caso del var a stringa (nc)
/*
if (row["varString"] != DBNull.Value)
dr.var = row["varString"].ToString();
else
dr.var = row["var"].ToString();
*/
//// MZ: Show n.c. as a value for VAR if there is no coverage
//if (row["coperturaString"] != DBNull.Value)
//{
// dr.varString = row["varString"].ToString();
//}
//else
//{
// dr.varString = Convert.ToDecimal(row["var"]).ToString();
//}
dr.var = Convert.ToDecimal(row["var"]);
if (row["coperturaString"] != DBNull.Value)
dr.copertura = row["coperturaString"].ToString();
else
dr.copertura = conv.ConvertNum(row["copertura"]);
dr.diversificazione = Convert.ToDecimal(row["diversificazione"]);
dS146.RischioDiversificazione.Rows.Add(dr);
patrimonioFinanziario = dS146.RischioPatrimonioFinanziario.NewRischioPatrimonioFinanziarioRow();
int profilo_code = Convert.ToInt32(row["profiloCode"]);
//patrimonioFinanziario.descrizioneProfilo = "Profilo Cliente: " + profilo_code.ToString();
string valoreProfilo = getProfiloName(profilo_code);
patrimonioFinanziario.descrizioneProfilo = "Profilo Cliente: " + valoreProfilo;
patrimonioFinanziario.valoreProfilo = profilo_code.ToString();
patrimonioFinanziario.var = Convert.ToDecimal(SoglieVar.ConvOld(row["var_Profilo"]));
dS146.RischioPatrimonioFinanziario.Rows.Add(patrimonioFinanziario);
rischioDiversificazione = dS146.RischioDiversificazioneTable.NewRischioDiversificazioneTableRow();
rischioDiversificazione.patrimonio = row["patrimonio"].ToString();
// MZ: Show n.c. as a value for VAR if there is no coverage
if (row["varString"] != DBNull.Value)
{
rischioDiversificazione.varString = row["varString"].ToString();
}
else
{
rischioDiversificazione.varString = conv.ConvertNum(row["var"], 2).ToString();
}
//dr.var = Convert.ToDecimal(row["var"]);
if (row["coperturaString"] != DBNull.Value)
rischioDiversificazione.copertura = row["coperturaString"].ToString();
else
rischioDiversificazione.copertura = conv.ConvertNum(row["copertura"]);
rischioDiversificazione.diversificazione = Convert.ToDecimal(row["diversificazione"]);
dS146.RischioDiversificazioneTable.Rows.Add(rischioDiversificazione);
}
else
if (dt.Rows.Count > 0)
foreach (DataRow row in dt.Rows)
{
dr = dS146.RischioDiversificazione.NewRischioDiversificazioneRow();
dr.patrimonio = row["patrimonio"].ToString();
//V non veniva fatto il caso del var a stringa (nc)
/*
if (row["varString"] != DBNull.Value)
dr.var = row["varString"].ToString();
else
dr.var = row["var"].ToString();
*/
dr.var = Convert.ToDecimal(row["var"]);
if (row["coperturaString"] != DBNull.Value)
dr.copertura = row["coperturaString"].ToString();
else
dr.copertura = conv.ConvertNum(row["copertura"]);
dr.diversificazione = Convert.ToDecimal(row["diversificazione"]);
dS146.RischioDiversificazione.Rows.Add(dr);
patrimonioFinanziario = dS146.RischioPatrimonioFinanziario.NewRischioPatrimonioFinanziarioRow();
int profilo_code = Convert.ToInt32(row["profiloCode"]);
//patrimonioFinanziario.descrizioneProfilo = "Profilo Cliente: " + profilo_code.ToString();
string valoreProfilo = getProfiloName(profilo_code);
patrimonioFinanziario.descrizioneProfilo = "Profilo Cliente: " + valoreProfilo;
patrimonioFinanziario.valoreProfilo = profilo_code.ToString();
patrimonioFinanziario.var = Convert.ToDecimal(SoglieVar.ConvOld(row["var_profilo"]));
dS146.RischioPatrimonioFinanziario.Rows.Add(patrimonioFinanziario);
rischioDiversificazione = dS146.RischioDiversificazioneTable.NewRischioDiversificazioneTableRow();
rischioDiversificazione.patrimonio = row["patrimonio"].ToString();
// MZ: Show n.c. as a value for VAR if there is no coverage
if (row["varString"] != DBNull.Value)
{
rischioDiversificazione.varString = row["varString"].ToString();
}
else
{
rischioDiversificazione.varString = conv.ConvertNum(row["var"], 2).ToString();
}
//dr.var = Convert.ToDecimal(row["var"]);
if (row["coperturaString"] != DBNull.Value)
rischioDiversificazione.copertura = row["coperturaString"].ToString();
else
rischioDiversificazione.copertura = conv.ConvertNum(row["copertura"]);
rischioDiversificazione.diversificazione = Convert.ToDecimal(row["diversificazione"]);
dS146.RischioDiversificazioneTable.Rows.Add(rischioDiversificazione);
}
dsr.DatiSezione = dS146;
dsr.Esito = dS146.RischioDiversificazione.Rows.Count;
return dsr;
}catch(Exception ex){
try {
logger.Error(string.Concat(ex.Message, dataThread.CodiceFiscale, " varProfilo issue from ", querySql));
}
catch { }
}
return null;
}
private string getProfiloName(int profilo_code)
{
string valoreProfilo = string.Empty;
#region SWITCH CODICI PROFILO
switch (profilo_code)
{
case 1:
valoreProfilo += " Prudente";
break;
case 2:
valoreProfilo += " Moderato";
break;
case 3:
valoreProfilo += " Equilibrato";
break;
case 4:
valoreProfilo += " Dinamico";
break;
case 5:
valoreProfilo += " Aggressivo";
break;
default:
break;
}
#endregion
return valoreProfilo;
}
}
}