using System.Collections.Generic;
using System.Data;
using System.Web;
using System.IO;
using System;
using PDFGenerator.BusinessLayer.DataSection;
using DataAccessLayer;
using System.Linq;
using System.Data.SqlClient;
namespace PDFGenerator.BusinessLayer
{
///
/// Summary description for SectionManager
///
///
public class SectionManager
{
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
#region public methods
//public static DataTable GetDataSection(List tabelleSessione, string storedProcedure)
//{
// return getDataTable(tabelleSessione, storedProcedure, null);
//}
public static DataTable GetDataSection(List tabelleSessione, string storedProcedure, DataThread dataThread)
{
List listaParametri = null;
switch (storedProcedure.ToUpper())
{
case "[C6MART].[GESTIONE_S_INTERMEDIARI]":
case "[C6MARTPERIODICO].[GESTIONE_S_INTERMEDIARI]":
listaParametri = GetParameterListSeparateReteCodiceFiscale(dataThread.Rete, dataThread.CodiceFiscale);
break;
case "[C6MART].[PL_DSS1PATRIMONIOCOMPLESSIVO]":
listaParametri = GetParameterListSeparateReteAgente(dataThread.Agente, dataThread.CodiceFiscale, dataThread.Rete);
break;
case "[C6MARTPERIODICO].[PL_S80ALTERNATIVA_DIDASCALIENOTE]":
listaParametri = new List();
break;
/******************** modifica Nota Dinamica 11-03-2021 - Pino ************************************/
case "[C6STAGINGPERIODICO].[CLIENTEPRODOTTIFAI]":
listaParametri = GetParameterListReteCodFis(dataThread.Rete, dataThread.CodiceFiscale);
break;
/*************************************************************************************************/
default:
listaParametri = GetParameterList(dataThread.Agente, dataThread.CodiceFiscale, dataThread.Rete);
break;
}
return getDataTable(tabelleSessione, storedProcedure, listaParametri);
}
#endregion
#region private methods
private static List GetParameterList(string codicePB, string codiceCliente, string codiceRete, string parameterName, object _value, DbType _dbtype)
{
List ParameterStoredProcedureList = GetParameterList(codicePB, codiceCliente, codiceRete);
Parametro param = new Parametro();
param.ParameterName = parameterName;
param.Value = _value;
param.DbType = _dbtype;
ParameterStoredProcedureList.Add(param);
return ParameterStoredProcedureList;
}
private static List GetParameterList(string codicePB, string codiceCliente, string codiceRete, string parameterName, object _value, DbType _dbtype, string parameterName1, object _value1, DbType _dbtype1)
{
List ParameterStoredProcedureList = GetParameterList(codicePB, codiceCliente, codiceRete);
Parametro param = new Parametro();
param.ParameterName = parameterName;
param.Value = _value;
param.DbType = _dbtype;
ParameterStoredProcedureList.Add(param);
Parametro param1 = new Parametro();
param1.ParameterName = parameterName1;
param1.Value = _value1;
param1.DbType = _dbtype1;
ParameterStoredProcedureList.Add(param1);
return ParameterStoredProcedureList;
}
private static List GetParameterList(string codicePB, string codiceCliente, string codiceRete, string parameterName, object _value, DbType _dbtype, string parameterName1, object _value1, DbType _dbtype1, string parameterName2, object _value2, DbType _dbtype2)
{
List ParameterStoredProcedureList = GetParameterList(codicePB, codiceCliente, codiceRete);
Parametro param = new Parametro();
param.ParameterName = parameterName;
param.Value = _value;
param.DbType = _dbtype;
ParameterStoredProcedureList.Add(param);
Parametro param1 = new Parametro();
param1.ParameterName = parameterName1;
param1.Value = _value1;
param1.DbType = _dbtype1;
ParameterStoredProcedureList.Add(param1);
Parametro param2 = new Parametro();
param2.ParameterName = parameterName2;
param2.Value = _value2;
param2.DbType = _dbtype2;
ParameterStoredProcedureList.Add(param2);
return ParameterStoredProcedureList;
}
private static List GetParameterListSeparateReteAgente(string codicePB, string codiceCliente, string codiceRete, string parameterName, object _value, DbType _dbtype, string parameterName1, object _value1, DbType _dbtype1)
{
List ParameterStoredProcedureList = GetParameterListSeparateReteAgente(codicePB, codiceCliente, codiceRete);
Parametro param = new Parametro();
param.ParameterName = parameterName;
param.Value = _value;
param.DbType = _dbtype;
ParameterStoredProcedureList.Add(param);
Parametro param1 = new Parametro();
param1.ParameterName = parameterName1;
param1.Value = _value1;
param1.DbType = _dbtype1;
ParameterStoredProcedureList.Add(param1);
return ParameterStoredProcedureList;
}
private static List GetParameterListSeparateReteAgente(string codicePB, string codiceCliente, string codiceRete, string parameterName, object _value, DbType _dbtype)
{
List ParameterStoredProcedureList = GetParameterListSeparateReteAgente(codicePB, codiceCliente, codiceRete);
Parametro param = new Parametro();
param.ParameterName = parameterName;
param.Value = _value;
param.DbType = _dbtype;
ParameterStoredProcedureList.Add(param);
return ParameterStoredProcedureList;
}
private static List GetParameterListSeparateReteCodiceFiscale(string codiceRete, string codiceCliente)
{
List ParameterStoredProcedureList = new List();
Parametro param;
param = new Parametro();
param.ParameterName = "rete";
param.Value = codiceRete;
param.DbType = DbType.String;
ParameterStoredProcedureList.Add(param);
param = new Parametro();
param.ParameterName = "codiceCliente";
param.Value = codiceCliente;
param.DbType = DbType.String;
ParameterStoredProcedureList.Add(param);
return ParameterStoredProcedureList;
}
private static List GetParameterListSeparateReteAgente(string codicePB, string codiceCliente, string codiceRete)
{
List ParameterStoredProcedureList = new List();
Parametro param;
param = new Parametro();
param.ParameterName = "rete";
param.Value = codiceRete;
param.DbType = DbType.String;
ParameterStoredProcedureList.Add(param);
param = new Parametro();
param.ParameterName = "reteAgente";
param.Value = codiceRete + codicePB;
param.DbType = DbType.String;
ParameterStoredProcedureList.Add(param);
param = new Parametro();
param.ParameterName = "codiceCliente";
param.Value = codiceCliente;
param.DbType = DbType.String;
ParameterStoredProcedureList.Add(param);
return ParameterStoredProcedureList;
}
private static List GetParameterListSeparateReteAgente(string codicePB, string codiceCliente, string codiceRete, string parameterName, object _value, DbType _dbtype, string parameterName1, object _value1, DbType _dbtype1, string parameterName2, object _value2, DbType _dbtype2)
{
List ParameterStoredProcedureList = GetParameterListSeparateReteAgente(codicePB, codiceCliente, codiceRete);
Parametro param = new Parametro();
param.ParameterName = parameterName;
param.Value = _value;
param.DbType = _dbtype;
ParameterStoredProcedureList.Add(param);
Parametro param1 = new Parametro();
param1.ParameterName = parameterName1;
param1.Value = _value1;
param1.DbType = _dbtype1;
ParameterStoredProcedureList.Add(param1);
Parametro param2 = new Parametro();
param2.ParameterName = parameterName2;
param2.Value = _value2;
param2.DbType = _dbtype2;
ParameterStoredProcedureList.Add(param2);
return ParameterStoredProcedureList;
}
private static List GetParameterList(string codicePB, string codiceCliente, string codiceRete)
{
List ParameterStoredProcedureList = new List();
Parametro param;
param = new Parametro();
//param.ParameterName = "reteAgente";
//param.Value = codiceRete + codicePB;
param.ParameterName = "Rete";
param.Value = codiceRete;
param.DbType = DbType.String;
ParameterStoredProcedureList.Add(param);
param = new Parametro();
param.ParameterName = "CodiceFiscale";
param.Value = codiceCliente;
param.DbType = DbType.String;
ParameterStoredProcedureList.Add(param);
return ParameterStoredProcedureList;
}
/************************ Modifica nota Dinamica 11-03-2021 - Pino *********************************/
private static List GetParameterListReteCodFis(string rete, string codiceFiscale)
{
List ParameterStoredProcedureList = new List();
Parametro param;
param = new Parametro();
param.ParameterName = "Rete";
param.Value = rete;
param.DbType = DbType.String;
ParameterStoredProcedureList.Add(param);
param = new Parametro();
param.ParameterName = "CodiceFiscale";
param.Value = codiceFiscale;
param.DbType = DbType.String;
ParameterStoredProcedureList.Add(param);
return ParameterStoredProcedureList;
}
//public static DataTable GetDataTable(string storedProcedure, List listaParametri, DataAccessDE dataAccess)
//{
// DataTable dataTable = null;
// try
// {
// dataTable = dataAccess.ExecuteDataTableStoredProcedure(DBProvider.SqlServerStampeC6, storedProcedure, listaParametri);
// dataTable.TableName = storedProcedure;
// return dataTable;
// }
// catch (Exception ex)
// {
// logger.Error(ex);
// throw ex;
// }
//}
/***************************************************************************************************/
private static List GetParameterList(string reteAgente, string codiceCliente)
{
List ParameterStoredProcedureList = new List();
Parametro param;
param = new Parametro();
param.ParameterName = "reteAgente";
param.Value = reteAgente;
param.DbType = DbType.String;
ParameterStoredProcedureList.Add(param);
param = new Parametro();
param.ParameterName = "codiceCliente";
param.Value = codiceCliente;
param.DbType = DbType.String;
ParameterStoredProcedureList.Add(param);
return ParameterStoredProcedureList;
}
private static List GetParameterList(string codiceCliente)
{
List ParameterStoredProcedureList = new List();
Parametro param;
param = new Parametro();
param.ParameterName = "codiceCliente";
param.Value = codiceCliente;
param.DbType = DbType.String;
ParameterStoredProcedureList.Add(param);
return ParameterStoredProcedureList;
}
private static DataTable getDataTable(List tabelleSessione, string storedProcedure, List listaParametri)
{
string chiave = storedProcedure;
var sqlparameters = new List();
foreach (var par in listaParametri)
sqlparameters.Add(
new SqlParameter(par.ParameterName,par.Value)
);
foreach (Parametro parametro in listaParametri)
{
if (parametro.Value != null)
chiave += "|" + parametro.Value.ToString();
else
chiave += "|" + string.Empty;
}
SessionStruct sessionStruct = tabelleSessione.Find(delegate (SessionStruct s) { return s.Chiave == chiave; });
if (sessionStruct != null)
{
return sessionStruct.Tabella;
}
else
{
DataTable dataTable = null;
using(SQLServer db = new SQLServer())
{
dataTable = db.GetDataTableFromProcedure(storedProcedure, sqlparameters);
if (dataTable != null)
{
dataTable.TableName = storedProcedure;
tabelleSessione.Add(new SessionStruct(chiave, dataTable));
}
}
return dataTable;
}
}
#endregion
}
}