public static DocsPaVO.amministrazione.EsitoOperazione AmmInsNuovoOggetto(DocsPaVO.amministrazione.Oggettario oggetto, bool update) { DocsPaVO.amministrazione.EsitoOperazione result = new DocsPaVO.amministrazione.EsitoOperazione(); DocsPaDB.DBProvider dbProvider = new DocsPaDB.DBProvider(); // Creazione del contesto transazionale using (DocsPaDB.TransactionContext transactionContext = new DocsPaDB.TransactionContext()) { //DocsPaDocumentale.Documentale.OrganigrammaManager organigrammaManager = new DocsPaDocumentale.Documentale.OrganigrammaManager(infoUtente); //result = organigrammaManager.InserisciUtente(utente); if (!oggetto.Codice.Equals("")) { DocsPaUtils.Query q = DocsPaUtils.InitQuery.getInstance().getQuery("S_DPAOggettario"); q.setParam("param1", "SYSTEM_ID"); string where = " UPPER(VAR_COD_OGGETTO) = UPPER('" + oggetto.Codice + "')"; q.setParam("param2", where); string commandText = q.getSQL(); string numOggetti; logger.Debug(commandText); dbProvider.ExecuteScalar(out numOggetti, commandText); if (numOggetti != null && !numOggetti.Equals("0")) { if (update) { result.Codice = 1; return(result); } else { result.Codice = 3; logger.Debug("Tentativo di inserimento di un codice oggetto già presente nella tabella dpa_oggettario"); } } } if (result.Codice != 3) { DocsPaUtils.Query q1 = DocsPaUtils.InitQuery.getInstance().getQuery("S_DPAOggettario"); q1.setParam("param1", "SYSTEM_ID"); string where1 = " ID_AMM = " + oggetto.IDAmministrazione + " AND UPPER(VAR_DESC_OGGETTO) = UPPER('" + oggetto.Oggetto + "')"; if (!oggetto.Codice.Equals("")) { where1 += " AND UPPER(VAR_COD_OGGETTO) = UPPER('" + oggetto.Codice + "')"; } q1.setParam("param2", where1); string commandText1 = q1.getSQL(); string numOggetti1; logger.Debug(commandText1); dbProvider.ExecuteScalar(out numOggetti1, commandText1); if (numOggetti1 != null && !numOggetti1.Equals("0")) { result.Codice = 1; logger.Debug("Tentativo di inserimento di un oggetto presente nella tabella dpa_oggettario"); } else { try { q1 = DocsPaUtils.InitQuery.getInstance().getQuery("I_DPAOggettario"); q1.setParam("param1", DocsPaDbManagement.Functions.Functions.GetSystemIdColName() + " ID_REGISTRO, ID_AMM, VAR_DESC_OGGETTO, CHA_OCCASIONALE, VAR_COD_OGGETTO"); if (!oggetto.Codice.Equals("")) { q1.setParam("param2", DocsPaDbManagement.Functions.Functions.GetSystemIdNextVal("DPA_OGGETTARIO") + "'" + oggetto.IDRegistro + "', " + oggetto.IDAmministrazione + ", '" + oggetto.Oggetto.Replace("'", "''") + "', '0','" + oggetto.Codice + "'"); } else { q1.setParam("param2", DocsPaDbManagement.Functions.Functions.GetSystemIdNextVal("DPA_OGGETTARIO") + "'" + oggetto.IDRegistro + "', " + oggetto.IDAmministrazione + ", '" + oggetto.Oggetto.Replace("'", "''") + "', '0',null"); } string queryString = q1.getSQL(); logger.Debug(queryString); string res; dbProvider.InsertLocked(out res, queryString, "DPA_OGGETTARIO"); oggetto.systemId = res; logger.Debug("Inserito nuovo oggetto. SYSTEM_ID = " + res); result.Codice = 0; // this.CloseConnection(); } catch (Exception e) { logger.Debug(e.Message); // this.CloseConnection(); logger.Debug("Errore nell'inserimento oggetto in tabella oggettario", e); result.Codice = 2; } } } if (result.Codice == 0) { // Se l'inserimento è andato a buon fine, viene completata la transazione transactionContext.Complete(); } } return(result); }
public static bool importaOggettario(byte[] dati, string nomeFile, string serverPath, string codiceAmm, bool update, ref int oggInseriti, ref int oggAggiornati, ref int oggErrati) { bool result = true; OleDbConnection xlsConn = new OleDbConnection(); OleDbDataReader xlsReader = null; DocsPaDB.DBProvider dbProvider = new DocsPaDB.DBProvider(); try { //Controllo se esiste la Directory "Import" nel path dove vengono salvati i modelli per la profilazione dinamica. //Se esiste copio il file excel li' dentro, altrimenti la creo e ci copio il file. //In ogni caso poichè il nome del file è fisso, anche se quest'ultimo esiste viene sovrascritto. logger.Debug("Metodo \"importaOggettario\" classe \"OggettarioManager\" : inizio scrittura file \"importOggettario.xls\""); if (Directory.Exists(serverPath + "\\Modelli\\Import\\")) { FileStream fs1 = new FileStream(serverPath + "\\Modelli\\Import\\" + nomeFile, FileMode.OpenOrCreate, FileAccess.ReadWrite); fs1.Write(dati, 0, dati.Length); fs1.Close(); } else { Directory.CreateDirectory(serverPath + "\\Modelli\\Import\\"); FileStream fs1 = new FileStream(serverPath + "\\Modelli\\Import\\" + nomeFile, FileMode.OpenOrCreate, FileAccess.ReadWrite); fs1.Write(dati, 0, dati.Length); fs1.Close(); } logger.Debug("Metodo \"importaOggettario\" classe \"OggettarioManager\" : fine scrittura file \"importOggettario.xls\""); logger.Debug("Metodo \"importaOggettario\" classe \"OggettarioManager\" : inizio lettura file \"importOggettario.xls\""); //Comincio la lettura del file appena scritto DocsPaDB.Utils.SimpleLog sl = new DocsPaDB.Utils.SimpleLog(serverPath + "\\Modelli\\Import\\logImportOggettario"); sl.Log("Inizio importazione Oggettario - " + System.DateTime.Now.ToString()); xlsConn.ConnectionString = "Provider=" + System.Configuration.ConfigurationManager.AppSettings["DS_PROVIDER"] + "Data Source=" + serverPath + "\\Modelli\\Import\\" + nomeFile + ";Extended Properties='" + System.Configuration.ConfigurationManager.AppSettings["DS_EXTENDED_PROPERTIES"] + "IMEX=1'"; xlsConn.Open(); OleDbCommand xlsCmd = new OleDbCommand("select * from [Oggettario$]", xlsConn); xlsReader = xlsCmd.ExecuteReader(); string idAmministrazione = string.Empty; int contatore = 0; while (xlsReader.Read()) { contatore++; //Controllo se siamo arrivati all'ultima riga if (get_string(xlsReader, 0) == "/") { break; } //Controllo che il codice dell'amministrazione è uguale a quello della amministrazione //dalla quali si sta effettuando l'importazione Oggettario if (codiceAmm.ToUpper() == get_string(xlsReader, 0).ToUpper()) { //Verifico che i campi obbligatori "CODICE AMMINISTRAZIONE - AOO/RF - oggetto - codice" siano presenti //nel foglio excel, altrimenti ignoro l'inserimento if (get_string(xlsReader, 0) != "" && get_string(xlsReader, 2) != "") { //Per quanto riguarda il controllo dell'esistenza di un utente con questi dati, //demando il tutto al metodo "AmmInsNuovoUtente", che trovando eventuali ripetizioni non procede all'inserimento DocsPaVO.amministrazione.Oggettario oggetto = new DocsPaVO.amministrazione.Oggettario(); // recupero ID Amministrazione dal codice inserito nel foglio excel oggetto.IDAmministrazione = BusinessLogic.Amministrazione.OrganigrammaManager.GetIDAmm(get_string(xlsReader, 0).ToUpper()); oggetto.IDRegistro = BusinessLogic.Amministrazione.OrganigrammaManager.GetIDReg(get_string(xlsReader, 1).ToUpper()); oggetto.Oggetto = get_string(xlsReader, 2); oggetto.Codice = get_string(xlsReader, 3).ToUpper(); if (oggetto.IDRegistro != null) { DocsPaVO.amministrazione.EsitoOperazione esito = AmmInsNuovoOggetto(oggetto, update); switch (esito.Codice) { case 0: oggInseriti++; sl.Log(""); sl.Log("Oggetto Inserito - SystemId: " + oggetto.systemId + " - Oggetto: " + oggetto.Oggetto + " - Codice: " + oggetto.Codice); break; case 1: if (update) { //logger.Debug("Metodo \"importaUtenti\" classe \"UserManager\" : modifica utente : " + utente.UserId.ToString()); DocsPaUtils.Query q = DocsPaUtils.InitQuery.getInstance().getQuery("U_DPAOggettario"); q.setParam("param1", oggetto.Oggetto.Replace("'", "''")); q.setParam("param2", oggetto.IDAmministrazione); q.setParam("idRegistro", oggetto.IDRegistro); q.setParam("varCodOggetto", oggetto.Codice.ToUpper()); string queryString = q.getSQL(); logger.Debug(queryString); int rows; dbProvider.ExecuteNonQuery(queryString, out rows); if (rows > 0) { oggAggiornati++; sl.Log(""); sl.Log("Oggetto Aggiornato - Oggetto: " + oggetto.Oggetto + " - Codice: " + oggetto.Codice); } } else { oggErrati++; sl.Log(""); sl.Log("Oggetto NON Aggiornato - Riga: " + contatore + " - Non si è richiesto l'obbligo di aggiornamento della tabella attraverso il check box"); } break; case 2: oggErrati++; sl.Log(""); sl.Log("Oggetto NON Inserito - Riga: " + contatore + " - Errore nell'inserimento in tabella"); break; case 3: oggErrati++; sl.Log(""); sl.Log("Oggetto NON Inserito - Riga: " + contatore + " - Codice Oggetto già presente in tabella"); break; } } else { oggErrati++; sl.Log(""); sl.Log("Oggetto NON Inserito - Riga: " + contatore + " per errato Codice Registro"); } } else { oggErrati++; sl.Log(""); sl.Log("Oggetto NON Inserito - Riga: " + contatore + " per mancanza di Codice Amministrazione o Oggetto"); } } else { oggErrati++; sl.Log(""); sl.Log("Oggetto NON Inserito - Riga: " + contatore + " Codice Amministrazione errato"); } } sl.Log(""); sl.Log("Fine importazione Oggettario - " + System.DateTime.Now.ToString()); sl.Log("Oggetti Inseriti : " + oggInseriti + " - Oggetti Aggiornati : " + oggAggiornati + " - Oggetti Errati : " + oggErrati); logger.Debug("Metodo \"importaOggettario\" classe \"OggettarioManager\" : fine lettura file \"importOggettario.xls\""); } catch (Exception ex) { logger.Debug("Metodo \"importaOggettario\" classe \"OggettarioManager\" ERRORE : " + ex.Message); result = false; return(result); } finally { xlsReader.Close(); xlsConn.Close(); } return(result); }