1126 lines
49 KiB
C#
1126 lines
49 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Text;
|
||
using System.Data;
|
||
using System.Collections.Specialized;
|
||
using System.Globalization;
|
||
using System.Resources;
|
||
|
||
using DataAccessLayer;
|
||
using System.Data.SqlClient;
|
||
using System.Data.Common;
|
||
using System.Threading.Tasks;
|
||
using System.Threading;
|
||
using System.Configuration;
|
||
using System.Linq;
|
||
using System.Reflection;
|
||
using System.ComponentModel;
|
||
using NLog;
|
||
|
||
namespace PDFGenerator.BusinessLayer
|
||
{
|
||
/// <summary>
|
||
/// Risk Credit Classes.
|
||
/// <Owner> Marian Zaki</Owner>
|
||
/// <Date> 04052010 </Date>
|
||
/// </summary>
|
||
/*public enum RiskCreditClass
|
||
{
|
||
/// <summary>
|
||
/// Class 1
|
||
/// </summary>
|
||
Classe1,
|
||
|
||
/// <summary>
|
||
/// Class 2
|
||
/// </summary>
|
||
Classe2,
|
||
|
||
/// <summary>
|
||
/// Class 3
|
||
/// </summary>
|
||
Classe3
|
||
}*/
|
||
public class UtilityBusinessLayer : IDisposable
|
||
{
|
||
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
|
||
|
||
public DataThread ConstructFromDataRow(DataRow reader)
|
||
{
|
||
string cf = reader["codiceFiscale"].TOString();
|
||
string rt = reader["Rete"].TOString();
|
||
|
||
DataThread dataThread = new DataThread(DBProvider.SqlServerStampeC6);
|
||
dataThread.CodiceFiscale = cf;
|
||
dataThread.Rete = rt;
|
||
|
||
dataThread.DataLotto = CACHE.DataLotto;
|
||
dataThread.NomeRete = reader["NomeRete"].TOString();
|
||
dataThread.Agente = reader["Agente"].TOString();
|
||
dataThread.CognomeAgente = reader["CognomeAgente"].TOString();
|
||
dataThread.NomeAgente = reader["NomeAgente"].TOString();
|
||
dataThread.IndirizzoAgente = reader["IndirizzoAgente"].TOString();
|
||
dataThread.CapAgente = reader["CapAgente"].TOString();
|
||
dataThread.CittaAgente = reader["CittaAgente"].TOString();
|
||
dataThread.TelefonoAgente = reader["TelefonoAgente"].TOString();
|
||
|
||
//CLIENTE
|
||
dataThread.CognomeCliente = reader["CognomeCliente"].TOString();
|
||
dataThread.NomeCliente = reader["NomeCliente"].TOString();
|
||
|
||
//PATRIMONI CLIENTE
|
||
dataThread.ProfiloIsAct = reader["ProfiloIsAct"].ToBool();
|
||
|
||
//PARTITE VIAGGIANTI
|
||
dataThread.PartiteViaggiantiInvestimento = reader["PartiteViaggiantiInv"].ToDecimal();
|
||
dataThread.PartiteViaggiantiDisinvestimento = reader["PartiteViaggiantiDisinv"].ToDecimal();
|
||
dataThread.PatrimonioNonRappresentabile = reader["PatrimonioNonRappresentabile"].ToDecimal();
|
||
dataThread.Patrimoniocomplessivototalectv = reader["Patrimoniocomplessivototalectv"].ToDecimal();
|
||
dataThread.ContoCorrente = reader["ContoCorrente"].ToDecimal();
|
||
dataThread.Patrimonioaltroctv = reader["Patrimonioaltroctv"].ToDecimal();
|
||
dataThread.Patrimonioimmobiliarectv = reader["Patrimonioimmobiliarectv"].ToDecimal();
|
||
dataThread.Patrimonioterzictv = reader["Patrimonioterzictv"].ToDecimal();
|
||
dataThread.PatrimonioTerziContoCorrente = reader["PatrimonioTerziContoCorrente"].ToDecimal();
|
||
dataThread.PatrimonioterzictvAlNettoContoCorrente = reader["PatrimonioterzictvAlNettoContoCorrente"].ToDecimal();
|
||
dataThread.Patrimoniobancafideuramctv = reader["Patrimoniobancafideuramctv"].ToDecimal();
|
||
dataThread.PatrimonioBancaFideuramCtvAlNettoContoCorrente = reader["patrimoniobancafideuramctvalnettocontocorrente"].ToDecimal();
|
||
dataThread.NumeroIntermediari = reader["NumeroIntermediari"].ToInt32();
|
||
dataThread.RisorseNonAssociate = reader["RisorseNonAssociate"].ToDecimal();
|
||
dataThread.VaRRisorseNonAssociate = reader["VaRRisorseNonAssociate"].ToDecimal();
|
||
dataThread.CoperturaRisorseNonAssociate = reader["CoperturaRisorseNonAssociate"].ToDecimal();
|
||
dataThread.VaRTotaleRisorseFinanziarie = reader["VaRTotaleRisorseFinanziarie"].ToDecimal();
|
||
dataThread.CoperturaTotaleRisorseFinanziarie = reader["CoperturaTotaleRisorseFinanziarie"].ToDecimal();
|
||
dataThread.TipoContratto = reader["Tip_Contratto"].TOString().Equals("2") ? TipoContratto.Private :
|
||
reader["Tip_Contratto"].TOString().Equals("1") ? TipoContratto.Affluent :
|
||
reader["Tip_Contratto"].TOString().Equals("3") ? TipoContratto.Dadvisory :
|
||
TipoContratto.Old;
|
||
dataThread.ContrattoOld = reader["Contrattoold"].TOString() == "1";
|
||
dataThread.NoMonitoraggio = reader["NoMonitoraggio"].TOString() == "1";
|
||
|
||
//CONTRATTO
|
||
dataThread.Flagnqp = reader["flagnqp"].TOString();
|
||
dataThread.Flagprlrde = reader["flagprlrde"].TOString();
|
||
dataThread.Flgprof = reader["Flgprof"].TOString();
|
||
dataThread.Flagpg = reader["flagpg"].ToInt32();
|
||
dataThread.IdReportPDFDiagnosi = reader["IdReportPDFDiagnosi"].ToInt32();
|
||
dataThread.IdReportPDFMonitoraggio = reader["IdReportPDFMonitoraggio"].ToInt32();
|
||
dataThread.CodiceContratto = reader["CodiceContratto"].TOString();
|
||
|
||
int idReportDiagnosi = reader["idModelloDiagnosi"].ToInt32();
|
||
if (idReportDiagnosi != -1)
|
||
{
|
||
ReportTipo reportType = new ReportTipo();
|
||
reportType.IdReport = reader["idReportDiagnosi"].ToInt32();
|
||
reportType.IdModello = reader["idModelloDiagnosi"].ToInt32();
|
||
reportType.Descrizione = reader["descrizioneDiagnosi"].TOString();
|
||
reportType.TipoReport = TipologiaReport.DIAGNOSI;
|
||
dataThread.ReportsType.Add(reportType);
|
||
}
|
||
|
||
int idReportMonitoraggio = reader["idReportMonitoraggio"].ToInt32();
|
||
|
||
if (idReportMonitoraggio != -1)
|
||
{
|
||
ReportTipo reportType = new ReportTipo();
|
||
reportType.IdReport = reader["idReportMonitoraggio"].ToInt32();
|
||
reportType.IdModello = reader["idModelloMonitoraggio"].ToInt32();
|
||
reportType.Descrizione = reader["descrizioneMonitoraggio"].TOString();
|
||
reportType.TipoReport = TipologiaReport.MONITORAGGIO;
|
||
dataThread.ReportsType.Add(reportType);
|
||
|
||
DateTimeFormatInfo dfi = new CultureInfo("it-IT", false).DateTimeFormat;
|
||
dataThread.DataFineTrimestreCorrente = Convert.ToDateTime(CACHE.DataFineTrimestreCorrente, dfi);
|
||
|
||
//FIX - Francesco: Questa data viene stampata sul report nella lettere di benvenuto e a piè di pagina nel report
|
||
dataThread.DataFineTrimestreCorrente_LetteraAccompagnamento = Convert.ToDateTime(CACHE.DataFineTrimestreCorrente_LetteraAccompagnamento, dfi);
|
||
}
|
||
dataThread.AdesioneSuccessivaAvanzato = Convert.ToBoolean(reader["adesioneSuccessivaAvanzato"]);
|
||
dataThread.Periodico = CACHE.Periodico;
|
||
dataThread.Scaduto = reader["scaduto"].ToInt32();
|
||
|
||
if (dataThread.Scaduto == 2)
|
||
{
|
||
//Verifico se Esistono dati da visualizzare nella sezione S180 ("Prodotti ad alta complessita")
|
||
string sp = "[C6Mart" + (dataThread.Periodico ? "Periodico]" : "") + ".[PL_D_S180ProdottiComplessitaAlta_mini]";
|
||
List<SqlParameter> parameters = new List<SqlParameter>
|
||
{
|
||
new SqlParameter
|
||
{
|
||
ParameterName="codicefiscale",
|
||
Value=cf
|
||
},
|
||
new SqlParameter
|
||
{
|
||
ParameterName="rete",
|
||
Value=rt
|
||
}
|
||
};
|
||
using (SQLServer db = new SQLServer(cf, rt))
|
||
{
|
||
dataThread.HasProdottiAltaComplessita = db.executeScalarInt(sp, parameters) == 1;
|
||
}
|
||
}
|
||
|
||
try
|
||
{
|
||
dataThread.RiskArea = GetRiskArea(cf, rt);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
dataThread.RiskArea = 0;
|
||
}
|
||
|
||
return dataThread;
|
||
}
|
||
public int GetRiskArea(string fiscalCode, string rete)
|
||
{
|
||
int res = 0;
|
||
List<SqlParameter> parameters = new List<SqlParameter>
|
||
{
|
||
new SqlParameter
|
||
{
|
||
ParameterName="CodiceFiscale",
|
||
Value = fiscalCode
|
||
},
|
||
new SqlParameter
|
||
{
|
||
ParameterName="Rete",
|
||
Value = rete
|
||
}
|
||
};
|
||
string sp = "[C6Mart" + (CACHE.Periodico ? "Periodico" : "") + "].[GetRiskArea]";
|
||
using (SQLServer db = new SQLServer(fiscalCode, rete))
|
||
{
|
||
var dt = db.GetDataTableFromProcedure(sp, parameters);
|
||
if (dt != null)
|
||
{
|
||
foreach (DataRow r in dt.Rows)
|
||
{
|
||
var pf = r["profiloCode"].ToInt32();
|
||
if (pf > res)
|
||
{
|
||
res = pf;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return res;
|
||
}
|
||
|
||
public List<DataThread> getDataThreads(int number)
|
||
{
|
||
var pars = new List<SqlParameter>() { new SqlParameter("volThreads", number) };
|
||
List<DataThread> ret = null;
|
||
try
|
||
{
|
||
var DataThreadsDT = (new SQLServer()).GetDataTableFromProcedure(CACHE.QueryContratti, pars);
|
||
if (DataThreadsDT != null && DataThreadsDT.Rows.Count > 0)
|
||
{
|
||
ret = new List<DataThread>();
|
||
foreach (DataRow r in DataThreadsDT.Rows)
|
||
{
|
||
ret.Add
|
||
(
|
||
ConstructFromDataRow(r)
|
||
);
|
||
}
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
logger.Errors(ex);
|
||
}
|
||
return ret;
|
||
}
|
||
|
||
public void ParallelExecutionOverThreads(List<DataThread> dataThreads)
|
||
{
|
||
System.Threading.Tasks.Parallel.ForEach(dataThreads, new ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount }, t =>
|
||
{
|
||
string rete = t.Rete;
|
||
string cf = t.CodiceFiscale;
|
||
|
||
if (CACHE.Periodico)
|
||
{
|
||
|
||
RischioRelativo_PesoPercentuale r = new RischioRelativo_PesoPercentuale();
|
||
try
|
||
{
|
||
r.DataSource = recuperaDatiCalcoloPeso_Rischio(rete, cf);
|
||
if (r.DataSource != null)
|
||
{
|
||
t.PesoPercentuale = r.calcolaPeso();
|
||
t.RischioRelativo = r.calcolaRischio();
|
||
t.ControvaloriTotali = r.calcolaControvaloriAttuali();
|
||
}
|
||
t.TotalNegativeCurrentAccountValue = getClientNegativeCurrentAccountsValue(rete, cf);
|
||
t.TotalSelfNegCurrentAccountValue = getClientSelfNegCurrentAccountValue(rete, cf);
|
||
t.GPEligoFondi = getGPEligoNeg(rete, cf, "L191");
|
||
t.GPEligoTitoli = getGPEligoNeg(rete, cf, "L192");
|
||
t.GradoCoperturaMacroAssetInterno = getGradoCoperturaMacroAssetInterno(rete, cf);
|
||
t.GradoCoperturaMacroAssetTotale = getGradoCoperturaMacroAssetTotale(rete, cf);
|
||
t.GradoCoperturaMacroAssetAltri = getGradoCoperturaMacroAssetAltri(rete, cf);
|
||
t.PatrimonioNonRappresentabileCompl = getPatrimonioNonRappresentabile(rete, cf, "Complessivo");
|
||
switch (rete)
|
||
{
|
||
case "F":
|
||
t.PatrimonioNonRappresentabileFI = getPatrimonioNonRappresentabile(rete, cf, "Fideuram");
|
||
break;
|
||
|
||
case "S":
|
||
t.PatrimonioNonRappresentabileFI = getPatrimonioNonRappresentabile(rete, cf, "Sanpaolo Invest");
|
||
break;
|
||
|
||
case "W":
|
||
t.PatrimonioNonRappresentabileFI = getPatrimonioNonRappresentabile(rete, cf, "IW Private Investments");
|
||
break;
|
||
}
|
||
t.PatrimonioNonRappresentabileAI = t.PatrimonioNonRappresentabileCompl - t.PatrimonioNonRappresentabileFI;
|
||
t.SelfNegativeValue = getClientSelfNegative(rete, cf);
|
||
if (t.SelfNegativeValue == null)
|
||
{
|
||
t.SelfNegativeValue = new List<Tuple<string, string, decimal>>();
|
||
}
|
||
}
|
||
catch (Exception exubl)
|
||
{
|
||
//logger.Errors(exubl);
|
||
}
|
||
}
|
||
});
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// Recupero il datatable sul quale effettuare il calcolo del peso e del rischo relativo a livello di area/progetto.
|
||
/// Dalla [C6MartPeriodico].[PL_S82DatiSintetici] prendo i dati per le aree non d'investimento.
|
||
/// Dalla [C6MartPeriodico].[PL_S82BisDatiSintetici] prendo i dati per le aree d'investimento.
|
||
/// Oltre a dtDatiAREA e dtDatiPROGETTO vanno considerati anche i prodotti non associati a progetti.
|
||
/// Ottengo 3 datatable e il datatable di return sar<61> il merge dei 3.
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public DataTable recuperaDatiCalcoloPeso_Rischio(string rete, string codiceFiscale)
|
||
{
|
||
#region Settaggio parametri
|
||
|
||
//List<Parametro> parameters = new List<Parametro>()
|
||
//{
|
||
// new Parametro() {Value = rete, ParameterName ="Rete" },
|
||
// new Parametro() {Value = codiceFiscale, ParameterName ="CodiceFiscale" },
|
||
//};
|
||
var sqlparameters = new List<SqlParameter>()
|
||
{ new SqlParameter("Rete",rete),
|
||
new SqlParameter("CodiceFiscale",codiceFiscale)
|
||
};
|
||
|
||
|
||
#endregion
|
||
|
||
DataTable dtDatiAREA = null, dtDatiPROGETTO = null, dtProdottiNonAssociati = null;
|
||
using (SQLServer db = new SQLServer(codiceFiscale, rete))
|
||
{
|
||
dtDatiAREA = db.GetDataTableFromProcedure("[C6MartPeriodico].[PL_S82DatiSintetici]", sqlparameters);
|
||
dtDatiPROGETTO = db.GetDataTableFromProcedure("[C6MartPeriodico].[PL_S82BisDatiSintetici]", sqlparameters);
|
||
dtProdottiNonAssociati = db.GetDataTableFromProcedure("[C6MartPeriodico].[PL_Prodotti_Non_Associati_Area_Inv]", sqlparameters);
|
||
}
|
||
|
||
if (dtDatiAREA != null)
|
||
dtDatiAREA = dtDatiAREA.DefaultView.ToTable(false, "NEED_AREA", "CONTROVALOREATTUALE", "VAR_NEEDAREA", "VAR_NEEDAREASTRING", "ORDINAMENTO_PROGETTO");
|
||
if (dtDatiPROGETTO != null)
|
||
dtDatiPROGETTO = dtDatiPROGETTO.DefaultView.ToTable(false, "NEED_AREA", "NOME_PROGETTO", "CONTROVALOREATTUALE", "VAR_NEEDAREA", "VAR_NEEDAREASTRING", "ORDINAMENTO_PROGETTO");
|
||
|
||
#region Creazione e popolamento DataTable dtProdottiNonAssociati
|
||
DataTable dtDatiProdottiNonAssociati = new DataTable();
|
||
dtDatiProdottiNonAssociati.Columns.Add("need_area", typeof(string));
|
||
dtDatiProdottiNonAssociati.Columns.Add("NOME_PROGETTO", typeof(string));
|
||
dtDatiProdottiNonAssociati.Columns.Add("ControvaloreAttuale", typeof(decimal));
|
||
dtDatiProdottiNonAssociati.Columns.Add("var_needarea", typeof(decimal));
|
||
dtDatiProdottiNonAssociati.Columns.Add("var_needareaString", typeof(string));
|
||
dtDatiProdottiNonAssociati.Columns.Add("ORDINAMENTO_PROGETTO", typeof(int));
|
||
|
||
if (dtProdottiNonAssociati != null && dtProdottiNonAssociati.Rows.Count > 0)
|
||
{
|
||
DataRow drDatiProdottiNonAssociati = dtDatiProdottiNonAssociati.NewRow();
|
||
drDatiProdottiNonAssociati["NEED_AREA"] = dtProdottiNonAssociati.Rows[0]["NEED_AREA"];
|
||
drDatiProdottiNonAssociati["NOME_PROGETTO"] = dtProdottiNonAssociati.Rows[0]["NOME_PROGETTO"];
|
||
drDatiProdottiNonAssociati["CONTROVALOREATTUALE"] = dtProdottiNonAssociati.Compute("Sum(CONTROVALOREATTUALE)", string.Empty);
|
||
drDatiProdottiNonAssociati["var_needarea"] = dtProdottiNonAssociati.Rows[0]["var_needarea"];
|
||
drDatiProdottiNonAssociati["var_needareaString"] = dtProdottiNonAssociati.Rows[0]["var_needareaString"];
|
||
drDatiProdottiNonAssociati["ORDINAMENTO_PROGETTO"] = Convert.ToInt32(dtProdottiNonAssociati.Rows[0]["ORDINAMENTO_PROGETTO"]);
|
||
dtDatiProdottiNonAssociati.Rows.Add(drDatiProdottiNonAssociati);
|
||
}
|
||
|
||
#endregion
|
||
|
||
DataTable dtDati = new DataTable(); // datatable di return
|
||
|
||
if (dtDatiAREA != null)
|
||
dtDati = dtDatiAREA;
|
||
|
||
dtDati.Merge(dtDatiPROGETTO);
|
||
|
||
// se ho prodotti non associati a progetti li aggiungo nel calcolo finale del peso percentuale e rischio relativo
|
||
dtDati.Merge(dtDatiProdottiNonAssociati);
|
||
|
||
return dtDati;
|
||
}
|
||
public decimal getClientSelfNegCurrentAccountValue(string rete, string codiceFiscale)
|
||
{
|
||
#region Settaggio parametri
|
||
var sqlparameters = new List<SqlParameter>()
|
||
{ new SqlParameter("Rete",rete),
|
||
new SqlParameter("CodiceFiscale",codiceFiscale)
|
||
};
|
||
|
||
#endregion
|
||
|
||
object ClientSelfNegCurrentAccountValue = 0;
|
||
string sp = "[C6Mart" + (CACHE.Periodico ? "Periodico" : "") + "].[PL_GetClientSelfNegCurrentAccountValue]";
|
||
using (SQLServer db = new SQLServer(codiceFiscale, rete))
|
||
{
|
||
ClientSelfNegCurrentAccountValue = db.executeScalarWT(sp, sqlparameters);// dataAccess.ExecuteScalarStoredProcedure(DBProvider.SqlServerStampeC6, "[C6Mart].[PL_GetClientSelfNegCurrentAccountValue]", parameters);
|
||
}
|
||
|
||
return ClientSelfNegCurrentAccountValue.ToDecimal();
|
||
}
|
||
|
||
public List<Tuple<string, string, decimal>> getClientSelfNegative(string rete, string codiceFiscale)
|
||
{
|
||
#region Settaggio parametri
|
||
var sqlparameters = new List<SqlParameter>()
|
||
{ new SqlParameter("Rete",rete),
|
||
new SqlParameter("CodiceFiscale",codiceFiscale)
|
||
};
|
||
#endregion
|
||
|
||
List<Tuple<string, string, decimal>> tuples = new List<Tuple<string, string, decimal>>();
|
||
|
||
DataTable ClientSelfNegative = null;
|
||
string sp = "[C6Mart" + (CACHE.Periodico ? "Periodico" : "") + "].[PL_GetClientSelfNegative]";
|
||
using (SQLServer db = new SQLServer(codiceFiscale, rete))
|
||
{
|
||
ClientSelfNegative = db.GetDataTableFromProcedure(sp, sqlparameters);
|
||
}
|
||
|
||
if (ClientSelfNegative != null && ClientSelfNegative.Rows != null && ClientSelfNegative.Rows.Count > 0)
|
||
{
|
||
foreach (DataRow row in ClientSelfNegative.Rows)
|
||
{
|
||
tuples.Add(new Tuple<string, string, decimal>(row["CodInterno"].ToString(), row["Descrizione"].ToString(), Convert.ToDecimal(row["CTV"])));
|
||
}
|
||
}
|
||
else
|
||
{
|
||
tuples.Add(new Tuple<string, string, decimal>("", "", 0));
|
||
}
|
||
|
||
return tuples;
|
||
}
|
||
//--MIOFOGLIO 20181130
|
||
|
||
public decimal getClientNegativeCurrentAccountsValue(string rete, string codiceFiscale)
|
||
{
|
||
#region Settaggio parametri
|
||
|
||
//List<Parametro> parameters = new List<Parametro>()
|
||
//{
|
||
// new Parametro() {Value = rete, ParameterName ="Rete" },
|
||
// new Parametro() {Value = codiceFiscale, ParameterName ="CodiceFiscale" },
|
||
//};
|
||
|
||
var sqlparameters = new List<SqlParameter>()
|
||
{ new SqlParameter("Rete",rete),
|
||
new SqlParameter("CodiceFiscale",codiceFiscale)
|
||
};
|
||
|
||
#endregion
|
||
|
||
object clientNegativeCurrentAccountsValue = 0;
|
||
string sp = "[C6Mart" + (CACHE.Periodico ? "Periodico" : "") + "].[PL_GetClientNegativeCurrentAccountsValue]";
|
||
using (SQLServer db = new SQLServer(codiceFiscale, rete))
|
||
{
|
||
//if (!CACHE.Periodico)
|
||
//{
|
||
clientNegativeCurrentAccountsValue = db.executeScalarWT(sp, sqlparameters);// dataAccess.ExecuteScalarStoredProcedure(DBProvider.SqlServerStampeC6, "[C6Mart].[PL_GetClientNegativeCurrentAccountsValue]", parameters);
|
||
//}
|
||
//else
|
||
//{
|
||
// clientNegativeCurrentAccountsValue = db.executeScalarWT("[C6MartPeriodico].[PL_GetClientNegativeCurrentAccountsValue]", sqlparameters);//dataAccess.ExecuteScalarStoredProcedure(DBProvider.SqlServerStampeC6, "[C6MartPeriodico].[PL_GetClientNegativeCurrentAccountsValue]", parameters);
|
||
//}
|
||
//object clientNegativeCurrentAccountsValue = DataAccess.ExecuteScalarStoredProcedure(DBProvider.SqlServerStampeC6, "[C6MartPeriodico].[PL_GetClientNegativeCurrentAccountsValue]", parametri);
|
||
}
|
||
|
||
return clientNegativeCurrentAccountsValue.ToDecimal();
|
||
/*
|
||
if (clientNegativeCurrentAccountsValue != null)
|
||
return decimal.Parse(clientNegativeCurrentAccountsValue.ToString());
|
||
else
|
||
return 0;
|
||
*/
|
||
}
|
||
|
||
// ***************************** Prova Andrea aggiunta Data Thread **********************************************//
|
||
public decimal getGPEligoNeg(string rete, string codiceFiscale, string codice)
|
||
{
|
||
#region Settaggio parametri
|
||
|
||
//List<Parametro> parameters = new List<Parametro>()
|
||
//{
|
||
// new Parametro() {Value = rete, ParameterName ="Rete" },
|
||
// new Parametro() {Value = codiceFiscale, ParameterName ="CodiceFiscale" },
|
||
// new Parametro() {Value = codice, ParameterName ="Codsottoprodotto" },
|
||
//};
|
||
|
||
var sqlparameters = new List<SqlParameter>()
|
||
{ new SqlParameter("Rete",rete),
|
||
new SqlParameter("CodiceFiscale",codiceFiscale),
|
||
new SqlParameter("Codsottoprodotto",codice)
|
||
};
|
||
|
||
|
||
#endregion
|
||
|
||
object Eligo_neg = 0;
|
||
using (SQLServer db = new SQLServer(codiceFiscale, rete))
|
||
{
|
||
//if (!CACHE.Periodico)
|
||
//{
|
||
// Eligo_neg = db.executeScalarWT("[C6MartPeriodico].[PL_GetClientNegativeGPEligo]", sqlparameters);// dataAccess.ExecuteScalarStoredProcedure(DBProvider.SqlServerStampeC6, "[C6MartPeriodico].[PL_GetClientNegativeGPEligo]", parameters);
|
||
//}
|
||
//else
|
||
//{
|
||
Eligo_neg = db.executeScalarWT("[C6MartPeriodico].[PL_GetClientNegativeGPEligo]", sqlparameters);// dataAccess.ExecuteScalarStoredProcedure(DBProvider.SqlServerStampeC6, "[C6MartPeriodico].[PL_GetClientNegativeGPEligo]", parameters);
|
||
//}
|
||
}
|
||
|
||
return Eligo_neg.ToDecimal();
|
||
|
||
}
|
||
|
||
public decimal getGradoCoperturaMacroAssetInterno(string rete, string codiceFiscale)
|
||
{
|
||
#region Settaggio parametri
|
||
|
||
//List<Parametro> parameters = new List<Parametro>()
|
||
//{
|
||
// new Parametro() {Value = rete, ParameterName ="Rete" },
|
||
// new Parametro() {Value = codiceFiscale, ParameterName ="CodiceFiscale" },
|
||
// // new Parametro() {Value = codice, ParameterName ="codice" },
|
||
//};
|
||
|
||
var sqlparameters = new List<SqlParameter>()
|
||
{ new SqlParameter("Rete",rete),
|
||
new SqlParameter("CodiceFiscale",codiceFiscale)
|
||
};
|
||
#endregion
|
||
|
||
object Grado_Copertura_MA = 0;
|
||
using (SQLServer db = new SQLServer(codiceFiscale, rete))
|
||
{
|
||
//if (!CACHE.Periodico)
|
||
//{
|
||
// Grado_Copertura_MA = db.executeScalarWT("[C6MartPeriodico].[PL_S75GradoCoperturaInterno]", sqlparameters);// dataAccess.ExecuteScalarStoredProcedure(DBProvider.SqlServerStampeC6, "[C6MartPeriodico].[PL_S75GradoCoperturaInterno]", parameters);
|
||
//}
|
||
//else
|
||
//{
|
||
Grado_Copertura_MA = db.executeScalarWT("[C6MartPeriodico].[PL_S75GradoCoperturaInterno]", sqlparameters);//dataAccess.ExecuteScalarStoredProcedure(DBProvider.SqlServerStampeC6, "[C6MartPeriodico].[PL_S75GradoCoperturaInterno]", parameters);
|
||
//}
|
||
}
|
||
return Grado_Copertura_MA.ToDecimal();
|
||
/*
|
||
if (Grado_Copertura_MA != null)
|
||
return decimal.Parse(Grado_Copertura_MA.ToString());
|
||
else
|
||
return 0;
|
||
*/
|
||
}
|
||
|
||
public decimal getGradoCoperturaMacroAssetTotale(string rete, string codiceFiscale)
|
||
{
|
||
#region Settaggio parametri
|
||
|
||
//List<Parametro> parameters = new List<Parametro>()
|
||
//{
|
||
// new Parametro() {Value = rete, ParameterName ="Rete" },
|
||
// new Parametro() {Value = codiceFiscale, ParameterName ="CodiceFiscale" },
|
||
// // new Parametro() {Value = codice, ParameterName ="codice" },
|
||
//};
|
||
var sqlparameters = new List<SqlParameter>()
|
||
{ new SqlParameter("Rete",rete),
|
||
new SqlParameter("CodiceFiscale",codiceFiscale)
|
||
};
|
||
#endregion
|
||
|
||
object Grado_Copertura_MA_TOT = 0;
|
||
using (SQLServer db = new SQLServer(codiceFiscale, rete))
|
||
{
|
||
//if (!CACHE.Periodico)
|
||
//{
|
||
// Grado_Copertura_MA_TOT = db.executeScalarWT("[C6MartPeriodico].[PL_S75GradoCoperturaCompl]", sqlparameters);//dataAccess.ExecuteScalarStoredProcedure(DBProvider.SqlServerStampeC6, "[C6MartPeriodico].[PL_S75GradoCoperturaCompl]", parameters);
|
||
//}
|
||
//else
|
||
//{
|
||
Grado_Copertura_MA_TOT = db.executeScalarWT("[C6MartPeriodico].[PL_S75GradoCoperturaCompl]", sqlparameters);//dataAccess.ExecuteScalarStoredProcedure(DBProvider.SqlServerStampeC6, "[C6MartPeriodico].[PL_S75GradoCoperturaCompl]", parameters);
|
||
//}
|
||
}
|
||
return Grado_Copertura_MA_TOT.ToDecimal();
|
||
/*
|
||
if (Grado_Copertura_MA_TOT != null)
|
||
return decimal.Parse(Grado_Copertura_MA_TOT.ToString());
|
||
else
|
||
return 0;
|
||
*/
|
||
}
|
||
|
||
public decimal getGradoCoperturaMacroAssetAltri(string rete, string codiceFiscale)
|
||
{
|
||
#region Settaggio parametri
|
||
|
||
//List<Parametro> parameters = new List<Parametro>()
|
||
//{
|
||
// new Parametro() {Value = rete, ParameterName ="Rete" },
|
||
// new Parametro() {Value = codiceFiscale, ParameterName ="CodiceFiscale" },
|
||
// // new Parametro() {Value = codice, ParameterName ="codice" },
|
||
//};
|
||
var sqlparameters = new List<SqlParameter>()
|
||
{ new SqlParameter("Rete",rete),
|
||
new SqlParameter("CodiceFiscale",codiceFiscale)
|
||
};
|
||
#endregion
|
||
|
||
object Grado_Copertura_MA_TRZ = 0;
|
||
using (SQLServer db = new SQLServer(codiceFiscale, rete))
|
||
{
|
||
//if (!CACHE.Periodico)
|
||
//{
|
||
// Grado_Copertura_MA_TRZ = db.executeScalarWT("[C6MartPeriodico].[PL_S75GradoCoperturaTerzi]", sqlparameters);//dataAccess.ExecuteScalarStoredProcedure(DBProvider.SqlServerStampeC6, "[C6MartPeriodico].[PL_S75GradoCoperturaTerzi]", parameters);
|
||
//}
|
||
//else
|
||
//{
|
||
Grado_Copertura_MA_TRZ = db.executeScalarWT("[C6MartPeriodico].[PL_S75GradoCoperturaTerzi]", sqlparameters);//dataAccess.ExecuteScalarStoredProcedure(DBProvider.SqlServerStampeC6, "[C6MartPeriodico].[PL_S75GradoCoperturaTerzi]", parameters);
|
||
//}
|
||
}
|
||
return Grado_Copertura_MA_TRZ.ToDecimal();
|
||
/*
|
||
if (Grado_Copertura_MA_TRZ != null)
|
||
return decimal.Parse(Grado_Copertura_MA_TRZ.ToString());
|
||
else
|
||
return 100;
|
||
*/
|
||
}
|
||
|
||
|
||
public decimal getPatrimonioNonRappresentabile(string rete, string codiceFiscale, string filtro)
|
||
{
|
||
decimal CtvNotCovered = 0;
|
||
var sqlparameters = new List<SqlParameter>()
|
||
{ new SqlParameter("Rete",rete),
|
||
new SqlParameter("CodiceFiscale",codiceFiscale)
|
||
};
|
||
|
||
DataTable Patrimonio_Non_Rapp = null;
|
||
string schema = "[C6Mart" + (!CACHE.Periodico ? "" : "Periodico") + "]";
|
||
using (SQLServer db = new SQLServer(codiceFiscale, rete))
|
||
{
|
||
Patrimonio_Non_Rapp = db.GetDataTableFromProcedure(schema + ".[PL_D2_S167DistribuzioneRischioCredito]", sqlparameters);
|
||
}
|
||
|
||
// if (Patrimonio_Non_Rapp != null)
|
||
if (Patrimonio_Non_Rapp != null && Patrimonio_Non_Rapp.Rows != null && Patrimonio_Non_Rapp.Rows.Count != 0)
|
||
{
|
||
List<CtvNotCoverede> _ListCtv = new List<CtvNotCoverede>();
|
||
_ListCtv = ConvertTo<CtvNotCoverede>(Patrimonio_Non_Rapp);
|
||
CtvNotCovered = _ListCtv.Where(f => f.INTERMEDIARIO == filtro).Select(s => s.CTV_notCovered).First();
|
||
if (CtvNotCovered == null)
|
||
CtvNotCovered = 0;
|
||
}
|
||
else
|
||
{
|
||
CtvNotCovered = 0;
|
||
}
|
||
|
||
return CtvNotCovered;
|
||
}
|
||
|
||
public static int setEndThread(DataThread dataThread, int idReport, int docPage)
|
||
{
|
||
int ret = -1;
|
||
int idReportPdf = dataThread.TipoReport == TipologiaReport.DIAGNOSI.ToString() ? dataThread.IdReportPDFDiagnosi : dataThread.IdReportPDFMonitoraggio;
|
||
idReportPdf = idReportPdf == 0 ? idReport : idReportPdf;
|
||
|
||
List<SqlParameter> sqlParameters = new List<SqlParameter>
|
||
{
|
||
new SqlParameter
|
||
{
|
||
ParameterName="Rete",
|
||
Value=dataThread.Rete
|
||
},
|
||
new SqlParameter
|
||
{
|
||
ParameterName="CodiceFiscale",
|
||
Value=dataThread.CodiceFiscale
|
||
},
|
||
new SqlParameter
|
||
{
|
||
ParameterName="idReport",
|
||
DbType= DbType.Int32,
|
||
Value=idReportPdf
|
||
},
|
||
new SqlParameter
|
||
{
|
||
ParameterName="NomeFile",
|
||
Value=dataThread.NomeFileReport
|
||
},
|
||
new SqlParameter
|
||
{
|
||
ParameterName="TipoReport",
|
||
Value=dataThread.TipoReport
|
||
},
|
||
new SqlParameter
|
||
{
|
||
ParameterName="NumeroPagine",
|
||
DbType= DbType.Int32,
|
||
Value=docPage
|
||
}
|
||
};
|
||
if (CACHE.Periodico)
|
||
{//[C6MartPeriodico].[GESTIONE_INSERT_PDF_FTP] HA DUE PARAMETRI IN PIU RISPETTO A QUELLA DELLE LETTERE
|
||
sqlParameters.Add(
|
||
new SqlParameter
|
||
{
|
||
ParameterName = "RFA",
|
||
DbType = DbType.Decimal,
|
||
Value = dataThread.Patrimoniobancafideuramctv
|
||
});
|
||
sqlParameters.Add(new SqlParameter
|
||
{
|
||
ParameterName = "CodiceContratto",
|
||
Value = dataThread.CodiceContratto
|
||
});
|
||
}
|
||
|
||
using (SQLServer db = new SQLServer())
|
||
{
|
||
ret = db.executeScalarInt(CACHE.QueryInserimentoPDF_FTP, sqlParameters);
|
||
//ret = db.executeNonQueryWT(CACHE.QueryInserimentoPDF_FTP, sqlParameters);
|
||
}
|
||
ret = Math.Abs(ret);
|
||
return ret;
|
||
|
||
}
|
||
|
||
public static string ReplaceVariables(string testodarimpiazzare, DataThread _dataThread)
|
||
{
|
||
string testoOriginale = testodarimpiazzare;
|
||
|
||
testoOriginale = testoOriginale.Replace("$/Area/$", _dataThread.AreaEstesa);
|
||
|
||
if (_dataThread.Area != "Inv")
|
||
testoOriginale = testoOriginale.Replace("$/AreaProgetto/$", _dataThread.AreaEstesa);
|
||
else
|
||
testoOriginale = testoOriginale.Replace("$/AreaProgetto/$", _dataThread.Progetto);
|
||
|
||
if (_dataThread.Area != "Inv")
|
||
testoOriginale = testoOriginale.Replace("$/AreaProgettoA/$", "all'area di " + _dataThread.AreaEstesa);
|
||
else
|
||
testoOriginale = testoOriginale.Replace("$/AreaProgettoA/$", "al progetto " + _dataThread.Progetto);
|
||
|
||
if (_dataThread.Area != "Inv")
|
||
testoOriginale = testoOriginale.Replace("$/AreaProgettoD/$", "dell'area di " + _dataThread.AreaEstesa);
|
||
else
|
||
testoOriginale = testoOriginale.Replace("$/AreaProgettoD/$", "del progetto " + _dataThread.Progetto);
|
||
|
||
testoOriginale = testoOriginale.Replace("$/Progetto/$", _dataThread.Progetto);
|
||
|
||
if (_dataThread.Intermediario == "Altro")
|
||
testoOriginale = testoOriginale.Replace("$/Intermediario/$", "Altro intermediario");
|
||
else
|
||
testoOriginale = testoOriginale.Replace("$/Intermediario/$", _dataThread.Intermediario);
|
||
|
||
//if (_dataThread.Rete == "F")
|
||
// //FC 26062015 Aggionamento nuova Ragione Sociale
|
||
// //testoOriginale = testoOriginale.Replace("$/Banca/$", "Banca Fideuram");
|
||
// testoOriginale = testoOriginale.Replace("$/Banca/$", "Fideuram");
|
||
//else
|
||
// testoOriginale = testoOriginale.Replace("$/Banca/$", "Sanpaolo Invest");
|
||
|
||
//************************************ Cecco modifiche dicitura IWBANK*******************************
|
||
switch (_dataThread.Rete)
|
||
{
|
||
case "F":
|
||
{
|
||
testoOriginale = testoOriginale.Replace("$/Banca/$", "Fideuram");
|
||
break;
|
||
}
|
||
case "S":
|
||
{
|
||
testoOriginale = testoOriginale.Replace("$/Banca/$", "Sanpaolo Invest");
|
||
// ************ Rosaspina modifica Andrea ****************************//
|
||
//testoOriginale = testoOriginale.Replace("$/Banca/$", "Fideuram S.p.A., commercializzato tramite la rete di private banker Sanpaolo Invest");
|
||
break;
|
||
}
|
||
case "W":
|
||
{
|
||
testoOriginale = testoOriginale.Replace("$/Banca/$", "IW Private Investments");
|
||
break;
|
||
}
|
||
}
|
||
|
||
//********************************************************************************************************
|
||
|
||
testoOriginale = testoOriginale.Replace("$/FontSize/$", "</font><font pointSize='6'>font size, </font>");
|
||
|
||
return testoOriginale;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Sostituisce le variabili presenti nel testo (indicate con $/...../$ con il valore corrispondente
|
||
/// I dati vengono presi dalle propriet<65> dell'oggetto sezione passato in input.
|
||
/// </summary>
|
||
/// <param name="testodarimpiazzare"></param>
|
||
/// <returns></returns>
|
||
public static string ReplaceVariables(string testodarimpiazzare, SezioneReport sezione)
|
||
{
|
||
string testoOriginale = testodarimpiazzare;
|
||
char[] define = { '$', '/', ',', '.' };
|
||
|
||
const char Space = ' ';
|
||
|
||
char[] delimiters = new char[]
|
||
{
|
||
Space
|
||
};
|
||
|
||
|
||
// split the string and then iterate over the
|
||
// resulting array of strings
|
||
if (testodarimpiazzare != " ")
|
||
foreach (string variabile in testodarimpiazzare.Split(delimiters))
|
||
{
|
||
string app = variabile.TrimStart(define);
|
||
app = app.TrimEnd(define);
|
||
switch (app)
|
||
{
|
||
#region Area
|
||
case "Area":
|
||
testoOriginale = testoOriginale.Replace("$/Area/$", sezione.AreaProgettoDescrizione);
|
||
break;
|
||
#endregion
|
||
|
||
#region AreaProgetto
|
||
case "AreaProgetto":
|
||
if (sezione.AreaProgettoCodice.ToLower() != "inv")
|
||
testoOriginale = testoOriginale.Replace("$/AreaProgetto/$", sezione.AreaProgettoDescrizione);
|
||
else
|
||
testoOriginale = testoOriginale.Replace("$/AreaProgetto/$", sezione.NomeProgetto);
|
||
|
||
break;
|
||
#endregion
|
||
}
|
||
}
|
||
|
||
return testoOriginale;
|
||
}
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// Sostituisce le variabili presenti nel testo (indicate con $/...../$ con il valore corrispondente
|
||
/// I dati vengono presi dalle propriet<65> dell'oggetto sezione passato in input.
|
||
/// Aggiunge gli apici all'inizio e alla fine del testo da rimpiazzato (solo per i nomi dei progetti investimento).
|
||
/// </summary>
|
||
/// <param name="testodarimpiazzare">testo</param>
|
||
/// <param name="sezione">oggetto sezione da cui prendere i dati</param>
|
||
/// <param name="aggiuntaapici">Se true aggiunge le virgolette (apici) prima e dopo il testo sostituito</param>
|
||
/// <returns></returns>
|
||
public static string ReplaceVariables(string testodarimpiazzare, SezioneReport sezione, bool aggiuntaapici)
|
||
{
|
||
string testoOriginale = testodarimpiazzare;
|
||
char[] define = { '$', '/', ',', '.' };
|
||
|
||
const char Space = ' ';
|
||
|
||
char[] delimiters = new char[]
|
||
{
|
||
Space
|
||
};
|
||
|
||
|
||
// split the string and then iterate over the
|
||
// resulting array of strings
|
||
if (testodarimpiazzare != " ")
|
||
foreach (string variabile in testodarimpiazzare.Split(delimiters))
|
||
{
|
||
string app = variabile.TrimStart(define);
|
||
app = app.TrimEnd(define);
|
||
switch (app)
|
||
{
|
||
#region Area
|
||
case "Area":
|
||
testoOriginale = testoOriginale.Replace("$/Area/$", sezione.AreaProgettoDescrizione);
|
||
break;
|
||
#endregion
|
||
|
||
#region AreaProgetto
|
||
case "AreaProgetto":
|
||
if (sezione.AreaProgettoCodice.ToLower() != "inv")
|
||
testoOriginale = testoOriginale.Replace("$/AreaProgetto/$", sezione.AreaProgettoDescrizione);
|
||
else
|
||
{
|
||
if (aggiuntaapici)
|
||
testoOriginale = testoOriginale.Replace("$/AreaProgetto/$", "''" + sezione.NomeProgetto + "''");
|
||
else
|
||
testoOriginale = testoOriginale.Replace("$/AreaProgetto/$", sezione.NomeProgetto);
|
||
}
|
||
break;
|
||
#endregion
|
||
}
|
||
}
|
||
|
||
return testoOriginale;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Return the Risk Class depending on the passed value
|
||
/// <Owner> Marian Zaki</Owner>
|
||
/// <Date> 04052010 </Date>
|
||
/// </summary>
|
||
/// <param name="riskCreditClass">
|
||
/// case 1: Class 1
|
||
/// case 2: Class 2
|
||
/// case 3: Class 3
|
||
/// </param>
|
||
/// <returns> The class name </returns>
|
||
public static string GetRiskCreditClassName(string riskCreditClass)
|
||
{
|
||
float riskCreditClassFloatValue;
|
||
int riskCreditClassValue = 0;
|
||
string className = string.Empty;
|
||
if (float.TryParse(riskCreditClass, out riskCreditClassFloatValue))
|
||
{
|
||
riskCreditClassValue = Convert.ToInt32(riskCreditClassFloatValue);
|
||
}
|
||
else if (int.TryParse(riskCreditClass, out riskCreditClassValue)) { }
|
||
|
||
if (riskCreditClassValue != 0)
|
||
{
|
||
|
||
switch (riskCreditClassValue)
|
||
{
|
||
case 1:
|
||
className = Resource.RiskCreditClass1;
|
||
break;
|
||
case 2:
|
||
className = Resource.RiskCreditClass2;
|
||
break;
|
||
case 3:
|
||
className = Resource.RiskCreditClass3;
|
||
break;
|
||
case 4:
|
||
className = Resource.RiskCreditOltreClasse3;
|
||
break;
|
||
default:
|
||
className = string.Empty;
|
||
break;
|
||
|
||
}
|
||
|
||
return className;
|
||
}
|
||
else
|
||
return string.Empty;
|
||
}
|
||
|
||
|
||
public static string GetRiskCreditEmitClassName(string riskCreditClass)
|
||
{
|
||
float riskCreditClassFloatValue;
|
||
int riskCreditClassValue = 0;
|
||
string className = string.Empty;
|
||
if (float.TryParse(riskCreditClass, out riskCreditClassFloatValue))
|
||
{
|
||
riskCreditClassValue = Convert.ToInt32(riskCreditClassFloatValue);
|
||
}
|
||
else if (int.TryParse(riskCreditClass, out riskCreditClassValue)) { }
|
||
|
||
if (riskCreditClassValue != 0)
|
||
{
|
||
|
||
switch (riskCreditClassValue)
|
||
{
|
||
case 1:
|
||
className = Resource.RiskCreditClassEmit1;
|
||
break;
|
||
case 2:
|
||
className = Resource.RiskCreditClassEmit2;
|
||
break;
|
||
case 3:
|
||
className = Resource.RiskCreditClassEmit3;
|
||
break;
|
||
case 4:
|
||
className = Resource.RiskCreditClassEmit4;
|
||
break;
|
||
case 5:
|
||
className = Resource.RiskCreditClassEmit5;
|
||
break;
|
||
case 6:
|
||
className = Resource.RiskCreditClassEmit6;
|
||
break;
|
||
case 7:
|
||
className = Resource.RiskCreditClassEmit7;
|
||
break;
|
||
case 8:
|
||
className = Resource.RiskCreditClassEmit8;
|
||
break;
|
||
case 9:
|
||
className = Resource.RiskCreditClassEmit9;
|
||
break;
|
||
case 10:
|
||
className = Resource.RiskCreditClassEmit10;
|
||
break;
|
||
default:
|
||
className = string.Empty;
|
||
break;
|
||
|
||
}
|
||
|
||
return className;
|
||
}
|
||
else
|
||
return string.Empty;
|
||
}
|
||
|
||
/****************** coversione tabella\lista per store procedure Pino 14/12/2021 *****************************************************/
|
||
public static List<T> ConvertTo<T>(DataTable datatable) where T : new()
|
||
{
|
||
List<T> Temp = new List<T>();
|
||
try
|
||
{
|
||
List<string> columnsNames = new List<string>();
|
||
foreach (DataColumn DataColumn in datatable.Columns)
|
||
columnsNames.Add(DataColumn.ColumnName);
|
||
Temp = datatable.AsEnumerable().ToList().ConvertAll<T>(row => getObject<T>(row, columnsNames));
|
||
return Temp;
|
||
}
|
||
catch
|
||
{
|
||
return Temp;
|
||
}
|
||
}
|
||
|
||
public static T getObject<T>(DataRow row, List<string> columnsName) where T : new()
|
||
{
|
||
T obj = new T();
|
||
try
|
||
{
|
||
string columnname = "";
|
||
string value = "";
|
||
PropertyInfo[] Properties;
|
||
Properties = typeof(T).GetProperties();
|
||
foreach (PropertyInfo objProperty in Properties)
|
||
{
|
||
columnname = columnsName.Find(name => name.ToLower() == objProperty.Name.ToLower());
|
||
if (!string.IsNullOrEmpty(columnname))
|
||
{
|
||
value = row[columnname].ToString();
|
||
if (!string.IsNullOrEmpty(value))
|
||
{
|
||
if (Nullable.GetUnderlyingType(objProperty.PropertyType) != null)
|
||
{
|
||
value = row[columnname].ToString().Replace("$", "").Replace(",", "");
|
||
objProperty.SetValue(obj, Convert.ChangeType(value, Type.GetType(Nullable.GetUnderlyingType(objProperty.PropertyType).ToString())), null);
|
||
}
|
||
else
|
||
{
|
||
value = row[columnname].ToString().Replace("%", "");
|
||
objProperty.SetValue(obj, Convert.ChangeType(value, Type.GetType(objProperty.PropertyType.ToString())), null);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return obj;
|
||
}
|
||
catch
|
||
{
|
||
return obj;
|
||
}
|
||
}
|
||
|
||
public static DataTable ToDataTable<T>(IList<T> data)
|
||
{
|
||
PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(T));
|
||
DataTable table = new DataTable();
|
||
for (int i = 0; i < props.Count; i++)
|
||
{
|
||
PropertyDescriptor prop = props[i];
|
||
table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
|
||
}
|
||
object[] values = new object[props.Count];
|
||
foreach (T item in data)
|
||
{
|
||
for (int i = 0; i < values.Length; i++)
|
||
values[i] = props[i].GetValue(item) ?? DBNull.Value;
|
||
table.Rows.Add(values);
|
||
}
|
||
return table;
|
||
}
|
||
|
||
public static string FormatDecimal(string value, int decimals)
|
||
{
|
||
decimal decimalValue;
|
||
var stringReturn = value;
|
||
var sdecimals = new string('0', decimals);
|
||
|
||
if (!Decimal.TryParse(value, NumberStyles.Number, null, out decimalValue)) return stringReturn;
|
||
stringReturn = decimalValue.ToString("#,##0.00", CultureInfo.CurrentCulture.NumberFormat);
|
||
|
||
return stringReturn;
|
||
}
|
||
/**********************************************************************************************/
|
||
|
||
public static float GetWidthProportional(float value, float maxvalue, float width)
|
||
{
|
||
return (width * value) / maxvalue;
|
||
}
|
||
|
||
public static string FormatCurrency(string value)
|
||
{
|
||
decimal decimalValue;
|
||
var stringReturn = value;
|
||
|
||
if (Decimal.TryParse(value, NumberStyles.Number, null, out decimalValue))
|
||
stringReturn = Convert.ToDecimal(value).ToString("#,##0.00");
|
||
|
||
return stringReturn;
|
||
}
|
||
|
||
public Dictionary<string, System.Drawing.Color> getColorCurrencies()
|
||
{
|
||
Dictionary<string, System.Drawing.Color> colori = new Dictionary<string, System.Drawing.Color>();
|
||
colori.Add("EUR", System.Drawing.Color.FromArgb(217, 81, 33));
|
||
colori.Add("ALTRE", System.Drawing.Color.FromArgb(131, 188, 180));
|
||
return colori;
|
||
|
||
}
|
||
|
||
public void Dispose()
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class CtvNotCoverede
|
||
{
|
||
public string RETE { get; set; }
|
||
public string COD_FISCALE { get; set; }
|
||
public string INTERMEDIARIO { get; set; }
|
||
public string ORDINE { get; set; }
|
||
public decimal CTV_TOT { get; set; }
|
||
public decimal CTV_notCovered { get; set; }
|
||
public decimal CTV_CreditRisk { get; set; }
|
||
public string CTV_Na { get; set; }
|
||
public decimal PERK_CreditRisk { get; set; }
|
||
public string PERK_NA { get; set; }
|
||
}
|
||
}
|