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 parametri = new List(); 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 parametri = new List(); 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 parametri = new List(); 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 parametri = new List(); 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 parametri = new List(); 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 ," + ""e ," + "&prezzo ," + "&ctv ," + "&partvia , " + "&codiceStato ," + "&partviaal " + /* ",&datadiRiferimento ," + "&datadiSottoscrizione ," + "&dataValNavAl ," + "&dataInizioRendimento ," + "&rendimentoDaSottoscrizione," + "&dataTrimestreRendimento ," + "&rendimentoDaInizioTrimestre ," + "&dataAnnoRendimento ," + "&rendimentoDaInizioAnno ," + "&valore ," + "&CVN " + */ ")"; List parametri = new List(); 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 parametri = new List(); 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; } } }