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

623 lines
22 KiB
C#

using System;
using System.Collections.Generic;
//using System.Collections;
using System.Data;
using System.Runtime.CompilerServices;
using log4net;
using System.Data.Common;
using Microsoft.Practices.EnterpriseLibrary.Data;
using Microsoft.Practices.EnterpriseLibrary.Data.Oracle;
using Oracle.DataAccess.Client;
namespace SEILoader
{
class DbManager
{
private static IDataReader dataReaderClienti;
private static string _oid;
private static DataTable _fiduciarie=null;
private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
[MethodImpl(MethodImplOptions.Synchronized)]
public static CaricamentoClienteData getProssimoCliente()
{
try
{
if (!dataReaderClienti.Read()) return null;
string rete = dataReaderClienti.GetString(0);
string pb = dataReaderClienti.GetString(1);
string cf = dataReaderClienti.GetString(2);
log.Debug("getProssimocliente() rete=" + rete + ", pb=" + pb + ", cf=" + cf);
CaricamentoClienteData pc = new CaricamentoClienteData(rete, pb, cf);
return pc;
}
catch (DataBaseException dex) {
log.Error("errore getProssimoCliente()", dex);
}
return null;
}
[MethodImpl(MethodImplOptions.Synchronized)]
public static String getPiva(String codBreve)
{
if (_fiduciarie == null) {
_fiduciarie = DataAccess.ExecuteDataTable(DBProvider.Oracle, CommandType.Text, "SELECT C_PIVA_CB7A1 AS piva, C_CODBREVE_740F5 AS codbreve FROM Fiduciarie ");
}
if (_fiduciarie != null) {
DataRow[] riga = _fiduciarie.Select("codbreve = '" + codBreve + "'");
if (riga.Length > 0)
return riga[0][0].ToString();
else
return "";
}
return "";
}
public static void annullaTabella(String idElaborazione) {
log.Info("annullaTabella idElaborazione=" + idElaborazione);
popolaTabella(idElaborazione, "X");
}
public static void popolaTabella(String idElaborazione, string TipoOperazione)
{
log.Info("popolaTabella idElaborazione=" + idElaborazione + " TipoOperazione=" + TipoOperazione);
List<Parametro> parametri = new List<Parametro>();
Parametro parametro = new Parametro();
parametro.ParameterName = "id_elab";
parametro.Value = idElaborazione;
parametro.DbType = DbType.String;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "tipo_richiesta";
parametro.Value = TipoOperazione;
parametro.DbType = DbType.String;
parametri.Add(parametro);
DataAccess.ExecuteNonQueryStoredProcedure(DBProvider.Oracle, "caric_massiv_loadclient", parametri);
}
public static void AggiornaAnagrafica(string rete, string cf, string cognome, string nome)
{
log.Debug("AggiornaAnagrafica rete=" + rete + " cf=" + cf + " cognome=" + cognome + " nome=" + nome);
List<Parametro> parametri = new List<Parametro>();
Parametro parametro = new Parametro();
parametro.ParameterName = "codfis";
parametro.Value = cf;
parametro.DbType = DbType.String;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "rete";
parametro.Value = rete;
parametro.DbType = DbType.String;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "cognome_new";
parametro.Value = cognome;
parametro.DbType = DbType.String;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "nome_new";
parametro.Value = nome;
parametro.DbType = DbType.String;
parametri.Add(parametro);
DataAccess.ExecuteNonQueryStoredProcedure(DBProvider.Oracle, "aggiorna_cliente", parametri);
}
public static int contaTabella(string idElaborazione)
{
log.Info("contaTabella idElaborazione=" + idElaborazione);
string sql = "select count(*) from loadclient where cod='" + idElaborazione + "' and esito=-2";
log.Debug("contaTabella sql= " + sql);
IDataReader dataReaderCount = DataAccess.ExecuteDataReader(DBProvider.Oracle, CommandType.Text, sql);
if (dataReaderCount.IsClosed) return 0;
dataReaderCount.Read();
return dataReaderCount.GetInt32(0);
}
public static void leggiTabella(string idElaborazione)
{
log.Info("leggiTabella idElaborazione=" + idElaborazione );
List<Parametro> parametri = new List<Parametro>();
string sql = "select rete,pb,codfis from loadclient where cod='" + idElaborazione + "' and esito=-2";
log.Debug("leggiTabella sql= "+sql);
dataReaderClienti = DataAccess.ExecuteDataReader(DBProvider.Oracle, CommandType.Text,sql);
}
public static int contaTabellaC6(string idElaborazione)
{
log.Info("contaTabellaC6 idElaborazione=" + idElaborazione);
string sql = "SELECT count(DISTINCT RETE + COD_FISCALE) FROM C6Mart.RISCHIO_AGGREGATO";
log.Debug("contaTabellaC6 sql= " + sql);
IDataReader dataReaderCount = DataAccess.ExecuteDataReader(DBProvider.SqlServerStampeC6, CommandType.Text, sql);
if (dataReaderCount.IsClosed) return 0;
dataReaderCount.Read();
return dataReaderCount.GetInt32(0);
}
public static void leggiTabellaC6(string idElaborazione)
{
log.Info("leggiTabellaC6 idElaborazione=" + idElaborazione);
string sql ="SELECT DISTINCT RETE, '000000' as pb, COD_FISCALE as codfis FROM C6Mart.RISCHIO_AGGREGATO";
log.Debug("leggiTabellaC6 sql= " + sql);
dataReaderClienti = DataAccess.ExecuteDataReader(DBProvider.SqlServerStampeC6, CommandType.Text, sql);
}
public static bool inizioElaborazione(String idElaborazione, string argomenti, string tipo)
{
string caller = Environment.MachineName;
String SQL = "select start_loadstat(&COD, &CHIAMANTE, &ARGOMENTI, &TIPO) from dual";
List<Parametro> parametri = new List<Parametro>();
Parametro parametro = new Parametro();
parametro.ParameterName = "COD";
parametro.Value = idElaborazione;
parametro.DbType = DbType.AnsiStringFixedLength;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "CHIAMANTE";
parametro.Value = caller;
parametro.DbType = DbType.AnsiStringFixedLength;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "ARGOMENTI";
parametro.Value = argomenti;
parametro.DbType = DbType.AnsiStringFixedLength;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "TIPO";
parametro.Value = tipo;
parametro.DbType = DbType.AnsiStringFixedLength;
parametri.Add(parametro);
IDataReader dr = DataAccess.ExecuteDataReaderSqlStatement(DBProvider.Oracle, SQL, parametri);
if (!dr.IsClosed)
{
dr.Read();
String OID= dr.GetString(0);
if (OID == "KO") return false;
_oid = OID;
}
/*
function start_loadStat
input:
cod
chiamante
argomenti
tipo
output:
oid$ oppure KO se non puo' inserire (ovvero esiste una riga con esito=-1)
logica: se sulla tabella LOADSTAT esiste una riga con esito=-1 restituire 'KO'; altrimenti insert dei campi in input, mettendo oid$ generato come progressivo ed inizio =sysdate
*/
return true;
}
public static void cleanVar()
{
String SQL = "truncate table var_check ";
DataAccess.ExecuteNonQuerySqlStatement(DBProvider.SqlServerStampeC6, SQL, null);
}
public static void insertVar(CaricamentoClienteData pc, string var)
{
String SQL =
"insert into var_check " +
"(" +
"rete,cod_fiscale," +
"var_complessivo_bf" +
")" +
"values" +
"(" +
"@rete,@codice_fiscale," +
"@var" +
")";
List<Parametro> parametri = new List<Parametro>();
Parametro parametro = new Parametro();
parametro.ParameterName = "rete";
parametro.Value = pc.rete;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "codice_fiscale";
parametro.Value = pc.cf;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "pb";
parametro.Value = pc.pb;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "var";
parametro.Value = var;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
DataAccess.ExecuteNonQuerySqlStatement(DBProvider.SqlServerStampeC6, SQL, parametri);
}
public static void insertContrattoSintesi(CaricamentoClienteData pc, GlobalPosition.ContrattoSintesiperClienteFASE1 c)
{
String SQL =
"insert into enn_rm_contratto_sintesi " +
"(" +
"rete,codice_fiscale,pb," +
"codiceContratto ," +
"numeroPolizza ," +
"conto ," +
"rubricato ," +
"custodiaGaranzia," +
"tipoProdotto ," +
"codiceInterno ," +
"codicesottoProdotto ," +
"codiceMAF," +
"pctKey ," +
"pctTitoloCollegato ," +
"pctDescrizionteTitoloCollegato ," +
"quote ," +
"prezzo ," +
"ctv ," +
"partvia ," +
"codiceStato ," +
"partviaal " +
/*
",datadiRiferimento ," +
"datadiSottoscrizione ," +
"dataValNavAl ," +
"dataInizioRendimento ," +
"rendimentoDaSottoscrizione," +
"dataTrimestreRendimento ," +
"rendimentoDaInizioTrimestre ," +
"dataAnnoRendimento ," +
"rendimentoDaInizioAnno ," +
"valore ," +
"CVN" +
*/
")" +
"values" +
"(" +
"&rete,&codice_fiscale,&pb," +
"&codiceContratto ," +
"&numeroPolizza ," +
"&conto ," +
"&rubricato ," +
"&custodiaGaranzia," +
"&tipoProdotto ," +
"&codiceInterno ," +
"&codicesottoProdotto ," +
"&codiceMAF," +
"&pctKey ," +
"&pctTitoloCollegato ," +
"&pctDescrizionteTitoloCollegato ," +
"&quote ," +
"&prezzo ," +
"&ctv ," +
"&partvia , " +
"&codiceStato ," +
"&partviaal " +
/*
",&datadiRiferimento ," +
"&datadiSottoscrizione ," +
"&dataValNavAl ," +
"&dataInizioRendimento ," +
"&rendimentoDaSottoscrizione," +
"&dataTrimestreRendimento ," +
"&rendimentoDaInizioTrimestre ," +
"&dataAnnoRendimento ," +
"&rendimentoDaInizioAnno ," +
"&valore ," +
"&CVN " +
*/
")";
List<Parametro> parametri = new List<Parametro>();
Parametro parametro = new Parametro();
parametro.ParameterName = "rete";
parametro.Value = pc.rete;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "codice_fiscale";
parametro.Value = pc.cf;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "pb";
parametro.Value = pc.pb;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "codiceContratto";
parametro.Value = c.codiceContratto;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "numeroPolizza";
parametro.Value = c.numeroPolizza;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "conto";
parametro.Value = c.Conto;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "rubricato";
parametro.Value = c.Rubricato;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "custodiaGaranzia";
parametro.Value = c.CustodiaGaranzia;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "tipoProdotto";
parametro.Value = c.tipoProdotto;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "codiceInterno";
parametro.Value = c.codiceInterno;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "codicesottoProdotto";
parametro.Value = c.codicesottoProdotto;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "codiceMAF";
parametro.Value = c.codiceMAF;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "pctKey";
parametro.Value = c.pctKey;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "pctTitoloCollegato";
parametro.Value = c.pctTitoloCollegato;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "pctDescrizionteTitoloCollegato";
parametro.Value = c.pctDescrizionteTitoloCollegato;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "quote";
parametro.Value = c.quote;
parametro.DbType = DbType.Decimal;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "prezzo";
parametro.Value = c.prezzo;
parametro.DbType = DbType.Decimal;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "ctv";
parametro.Value = c.ctv;
parametro.DbType = DbType.Decimal;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "partvia";
parametro.Value = c.partvia;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "partviaal";
parametro.Value = c.partviaal;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "codiceStato";
parametro.Value = c.codiceStato;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
/*
parametro = new Parametro();
parametro.ParameterName = "datadiRiferimento";
parametro.Value = c.datadiRiferimento;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "dataValNavAl";
parametro.Value = c.dataValNavAl;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "datadiSottoscrizione";
parametro.Value = c.datadiSottoscrizione;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "dataInizioRendimento";
parametro.Value = c.dataInizioRendimento;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "rendimentoDaSottoscrizione";
parametro.Value = c.rendimentoDaSottoscrizione;
parametro.DbType = DbType.Decimal;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "dataTrimestreRendimento";
parametro.Value = c.dataTrimestreRendimento;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "rendimentoDaInizioTrimestre";
parametro.Value = c.rendimentoDaInizioTrimestre;
parametro.DbType = DbType.Decimal;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "dataAnnoRendimento";
parametro.Value = c.dataAnnoRendimento;
parametro.DbType = DbType.AnsiString;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "rendimentoDaInizioAnno";
parametro.Value = c.rendimentoDaInizioAnno;
parametro.DbType = DbType.Decimal;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "valore";
parametro.Value = c.valore;
parametro.DbType = DbType.Decimal;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "CVN";
parametro.Value = c.CVN;
parametro.DbType = DbType.Decimal;
parametri.Add(parametro);
*/
DataAccess.ExecuteNonQuerySqlStatement(DBProvider.Oracle, SQL, parametri);
}
public static bool fineElaborazione( int esito, int n_ok, int n_error,int n_cancel)
{
List<Parametro> parametri = new List<Parametro>();
Parametro parametro = new Parametro();
parametro.ParameterName = "OID$";
parametro.Value = _oid;
parametro.DbType = DbType.AnsiStringFixedLength;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "n_ok";
parametro.Value = n_ok;
parametro.DbType = DbType.Int32;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "n_errori";
parametro.Value = n_error;
parametro.DbType = DbType.Int32;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "n_cancel";
parametro.Value = n_cancel;
parametro.DbType = DbType.Int32;
parametri.Add(parametro);
parametro = new Parametro();
parametro.ParameterName = "esito";
parametro.Value = esito;
parametro.DbType = DbType.Int32;
parametri.Add(parametro);
DataAccess.ExecuteNonQueryStoredProcedure(DBProvider.Oracle, "end_loadstat", parametri);
return true;
}
}
}