예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
        }