/// <summary> /// Funzione per la lettura dei metadati da un foglio excel /// </summary> /// <param name="completePath">Il path in cui reprire il file excel</param> /// <param name="userInfo">Le informazioni sull'utente che ha lanciato la procedura</param> /// <param name="role">Il ruolo con cui è stata lanciata la procedura</param> /// <param name="isEnabledPregressi">True se è abilitato l'import dei documenti pregressi</param> /// <returns>L'oggetto con i metadati estratti dal foglio excel</returns> private static DocumentRowDataContainer ReadMetadata( string completePath, InfoUtente userInfo, Ruolo role, bool isEnabledPregressi, bool isStampaUnione, String provider, String extendedProperty) { #region Dichiarazione variabili // La stringa di connessione al foglio excel string connectionString = String.Empty; // L'oggetto utilizzato per connettersi al foglio excel OleDbConnection oleConnection = null; // L'oggetto utilizzato per eseguire un comando sul file excel OleDbCommand oleCommand = null; // L'oggetto utilizzato per leggere i dati dal file excel OleDbDataReader dataReader = null; // L'oggetto da restituire DocumentRowDataContainer toReturn; #endregion #region Connessione al foglio excel try { // Creazione dell'oggetto per la connessione al foglio excel oleConnection = ImportUtils.ConnectToFile(provider, extendedProperty, completePath); } catch (Exception e) { // Viene rilanciata un'eccezione al livello superiore throw new Exception("Errore durante la connessione al file excel. Dettagli: " + e.Message); } #endregion // Creazione dell'oggetto da restituire toReturn = new DocumentRowDataContainer(); #endregion #region Selezione dei dati sui documenti in partenza da importare e importazione try { // Creazione della query per la selezione dei dati sui documenti in partenza da importare oleCommand = new OleDbCommand("SELECT * FROM [Partenza$]", oleConnection); // Esecuzione della query per il recupero dei dati dataReader = oleCommand.ExecuteReader(); } catch (Exception e) { dataReader.Close(); throw new Exception("Errore durante il recupero dei dati sui documenti in uscita da importare. Dettagli: " + e.Message); } // Se il recupero dei dati è andato a buon fine, si procede con la loro importazione try { if (dataReader != null) { toReturn.OutDocument = new OutDocument().ReadMetaData(dataReader, userInfo, role, isEnabledPregressi); } } catch (Exception e) { dataReader.Close(); throw e; } #endregion #region Selezione dei dati sui documenti interni da importare e importazione try { // Creazione della query per la selezione dei dati sui documenti interni da importare oleCommand = new OleDbCommand("SELECT * FROM [Interni$]", oleConnection); // Esecuzione della query per il recupero dei dati dataReader = oleCommand.ExecuteReader(); } catch (Exception e) { dataReader.Close(); throw new Exception("Errore durante il recupero dei dati sui documenti interni da importare. Dettagli: " + e.Message); } // Se il recupero dei dati è andato a buon fine, si procede con la loro importazione try { if (dataReader != null) { toReturn.OwnDocument = new OwnDocument().ReadMetaData(dataReader, userInfo, role, isEnabledPregressi); } } catch (Exception e) { dataReader.Close(); throw e; } #endregion #region Selezione dei dati sui documenti non protocollati da importare e importazione try { // Creazione della query per la selezione dei dati sui documenti non protocollati da importare oleCommand = new OleDbCommand("SELECT * FROM [Non protocollati$]", oleConnection); // Esecuzione della query per il recupero dei dati dataReader = oleCommand.ExecuteReader(); } catch (Exception e) { dataReader.Close(); throw new Exception("Errore durante il recupero dei dati sui documenti non protocollati da importare. Dettagli: " + e.Message); } // Se il recupero dei dati è andato a buon fine, si procede con la loro importazione try { if (dataReader != null) { toReturn.GrayDocument = new GrayDocument().ReadMetaData(dataReader, userInfo, role, isEnabledPregressi); } } catch (Exception e) { dataReader.Close(); throw e; } #endregion #region Selezione dei dati sui documenti allegati da importare e importazione if (isStampaUnione) { try { // Creazione della query per la selezione dei dati sui documenti allegati da importare oleCommand = new OleDbCommand("SELECT * FROM [Allegati$]", oleConnection); // Esecuzione della query per il recupero dei dati dataReader = oleCommand.ExecuteReader(); } catch (Exception e) { dataReader.Close(); throw new Exception("Errore durante il recupero dei dati sugli allegati da importare. Dettagli: " + e.Message); } // Se il recupero dei dati è andato a buon fine, si procede con la loro importazione try { if (dataReader != null) { toReturn.AttachmentDocument = new Attachment().ReadMetaData(dataReader, userInfo, role, isEnabledPregressi); } } catch (Exception e) { dataReader.Close(); throw e; } #region Selezione dei dati sui documenti in arrivo da importare e importazione try { // Creazione della query per la selezione dei dati sui documenti in arrivo da importare oleCommand = new OleDbCommand("SELECT * FROM [Arrivo$]", oleConnection); // Esecuzione della query per il recupero dei dati dataReader = oleCommand.ExecuteReader(); } catch (Exception e) { dataReader.Close(); throw new Exception("Errore durante il recupero dei dati sui documenti in arrivo da importare. Dettagli: " + e.Message); } // Se il recupero dei dati è andato a buon fine, si procede con la loro importazione try { if (dataReader != null) { toReturn.InDocument = new InDocument().ReadMetaData(dataReader, userInfo, role, isEnabledPregressi); } } catch (Exception e) { dataReader.Close(); throw e; } } else { toReturn.AttachmentDocument = new List <DocumentRowData>(); toReturn.InDocument = new List <DocumentRowData>(); } #endregion #region Chiusura connessione try { // Chiusura della connessione oleConnection.Close(); } catch (Exception e) { } #endregion // Restituzione del risultato dell'importazione return(toReturn); }
/// <summary> /// Funzione per la lettura dei dati dal foglio excel. /// </summary> /// <param name="completePath">Il path in cui è stato salvato il file temporaneo da cui estrarre i dati</param> /// <param name="provider">Il provider da utilizzare per la connessione al foglio Excel</param> /// <param name="extendedProperty">Le proprietà estese</param> /// <param name="versionNumber">Il numero di versione. /// - 1 per la versione che non contempla i protocolli interni ed i corrispondenti identificati tramite codice /// - 2 per la versione che contempla i protocolli interni ed i corrispondenti identificati tramite codice</param> /// <returns>L'oggetto con i dati estratti dal foglio excel</returns> private static DocumentRowDataContainer ReadDataFromExcel( string provider, string extendedProperty, string completePath, int versionNumber) { #region Dichiarazione variabili // L'oggetto da restituire DocumentRowDataContainer toReturn; // L'oggetto per effettuare la connessione al foglio excel OleDbConnection oleConnection; // L'oggetto per effettuare le query al foglio excel OleDbCommand oleCommand; // L'oggetto utilizzato per leggere i dati estratti dal foglio OleDbDataReader dataReader; #endregion // Creazione dell'oggetto con i dati estratti dal foglio excel toReturn = new DocumentRowDataContainer(); #region Connessione al foglio excel oleConnection = ImportUtils.ConnectToFile(provider, extendedProperty, completePath); #endregion try { #region Estrazione dati // Se nel foglio excel sono presenti delle righe con codice identificativo non riconosciuto, // viene sollevata un'eccezione String notIdentified = GetNotIdentifiedProtoType(oleConnection); if (!String.IsNullOrEmpty(notIdentified)) { throw new Exception("Sono state individuate le seguenti tipologie di documento non valide o non utilizzabili in questo contesto: " + notIdentified); } // Creazione della query per la selezione dei dati sui documenti in arrivo da importare oleCommand = new OleDbCommand("SELECT * FROM [RDE$] WHERE [Tipo Protocollo] = 'A'", oleConnection); // Esecuzione della query per il recupero dei dati dataReader = oleCommand.ExecuteReader(); // Lettura dei dati relativi ai protocolli in ingresso toReturn.InDocument = ReadDocumentData(dataReader, "A", versionNumber); // Creazione della query per la selezione dei dati sui documenti in partenza da importare oleCommand = new OleDbCommand("SELECT * FROM [RDE$] WHERE [Tipo Protocollo] = 'P'", oleConnection); // Esecuzione della query per il recupero dei dati dataReader = oleCommand.ExecuteReader(); // Lettura dei dati relativi ai protocolli in ingresso toReturn.OutDocument = ReadDocumentData(dataReader, "P", versionNumber); // Creazione della query per la selezione dei dati sui documenti interni da importare oleCommand = new OleDbCommand("SELECT * FROM [RDE$] WHERE [Tipo Protocollo] = 'I'", oleConnection); // Esecuzione della query per il recupero dei dati dataReader = oleCommand.ExecuteReader(); // Lettura dei dati relativi ai protocolli in ingresso toReturn.OwnDocument = ReadDocumentData(dataReader, "I", versionNumber); #endregion } catch (Exception e) { // Lancio dell'eccezione throw new Exception(String.Format( "Errore durante la lettura dei dati dal foglio excel. Dettagli: {0}", e.Message)); } finally { #region Chiusura connessione if (oleConnection.State != System.Data.ConnectionState.Closed) { // Chiusura della connessione oleConnection.Close(); } #endregion } // Restituzione oggetto con i dati estratti dal foglio Excel return(toReturn); }