Exemple #1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            // Visualizzazione del tab dei protocolli interni a seconda
            // del valore impostato
            this.tpInterni.Visible = ImportRDEUtils.IsEnabledOwnerProto();
            this.upReport.Update();

            // Impostazione delle informazioni sull'amministrazione
            this.ltlAdministrationInfo.Text =
                String.Format("Amministrazione: {0}, Codice: {1}",
                              UserManager.getInfoAmmCorrente(UserManager.getInfoUtente(this).idAmministrazione).Descrizione,
                              UserManager.getInfoAmmCorrente(UserManager.getInfoUtente(this).idAmministrazione).Codice);


            // Impostazione del link per il download del modellO in base alla versione RDE
            if (ImportRDEUtils.IsEnabledOwnerProto())
            {
                // Versione 2
                this.hlLink.NavigateUrl = "ImportRDE.xls";
            }
            else
            {
                // Versione 1
                this.hlLink.NavigateUrl = "ModelloRDE_v01.xls";
            }
        }
Exemple #2
0
        /// <summary>
        /// Funzione richiamata dal Thread per l'esecuzione dell'importazione
        /// </summary>
        /// <param name="prameters">Un array di oggetti. Sono attesi 4 elementi:
        ///     - Il primo deve essere un oggetto di tipo DocumentRowDataContainer
        ///     - Il secondo deve essere un oggetto di tipo string
        ///     - Il terzo deve essere un oggetto di tipo InfoUtente
        ///     - Il quarto deve essere un oggetto di tipo Ruolo
        /// </param>
        public void ExecuteImport(object parameters)
        {
            #region Dichiarazione variabili

            // L'array dei parametri
            object[] param;

            // L'oggetto con le informazioni sui documenti da importare
            DocumentRowDataContainer drdc;

            // L'url del frontend
            string url;

            // Le informazioni sull'utente che ha lanciato la procedura
            InfoUtente userInfo;

            // Il ruolo con cui è stata lanciata la procedura
            Ruolo role;

            // Lista in cui depositare temporaneamente il report
            // di importazione relativo ad una tipologia di documento
            List <ImportResult> tempReport;

            #endregion

            // Casting dell'oggetto a array di oggetti
            param = parameters as object[];

            // Se l'array non contiene quattro elementi, fine esecuzione
            if (param.Length != 4)
            {
                return;
            }

            // Prelevamento delle informazioni sui documenti da creare
            drdc = param[0] as DocumentRowDataContainer;

            // Prelevamento dell'url del Fontend
            url = param[1] as string;

            // Prelevamento delle informazioni sull'utente
            userInfo = param[2] as InfoUtente;

            // Prelevamento del ruolo
            role = param[3] as Ruolo;

            // Calcolo del numero totale di documenti da importare
            this.totalNumberOfDocumentToImport =
                drdc.InDocument.Length +
                drdc.OutDocument.Length +
                drdc.OwnDocument.Length;

            #region Importazione documenti in arrivo

            // Inizializzazione della lista da utulizzare per
            // memorizzare temporaneamente il report sull'importazione dei
            // documenti in ingresso
            tempReport = new List <ImportResult>();

            // Importazione dei documenti in ingresso
            foreach (DocumentRowData rowData in drdc.InDocument)
            {
                try
                {
                    tempReport.Add(ImportRDEUtils.ImportRDEDocument(
                                       rowData,
                                       userInfo,
                                       role,
                                       userInfo.urlWA,
                                       ProtoType.A));
                }
                catch (Exception e)
                {
                    // In caso di eccezione viene aggiunto un risultato negativo
                    tempReport.Add(new ImportResult()
                    {
                        Outcome = OutcomeEnumeration.KO,
                        Ordinal = rowData.OrdinalNumber,
                        Message = e.Message
                    });
                }

                // Un documenti è stato analizzato
                totalNumberOfAnalyzedDocuments += 1;
            }

            // Aggiunta di una voce di report con il totale dei documenti
            // importati e non importati
            tempReport.Add(this.GetSummaryElement(tempReport));

            // Salvataggio del report per i documenti in ingresso
            report.InDocument = tempReport.ToArray();

            #endregion

            #region Importazione documenti in partenza

            // Inizializzazione della lista da utilizzare per
            // memorizzare temporaneamente il report sull'importazione dei
            // documenti in partenza
            tempReport = new List <ImportResult>();

            // Importazione dei documenti in partenza
            foreach (DocumentRowData rowData in drdc.OutDocument)
            {
                try
                {
                    tempReport.Add(ImportRDEUtils.ImportRDEDocument(
                                       rowData,
                                       userInfo,
                                       role,
                                       userInfo.urlWA,
                                       ProtoType.P));
                }
                catch (Exception e)
                {
                    // In caso di eccezione viene aggiunto un risultato negativo
                    tempReport.Add(new ImportResult()
                    {
                        Outcome = OutcomeEnumeration.KO,
                        Ordinal = rowData.OrdinalNumber,
                        Message = e.Message
                    });
                }

                // Un documenti è stato analizzato
                totalNumberOfAnalyzedDocuments += 1;
            }

            // Aggiunta di una voce di report con il totale dei documenti
            // importati e non importati
            tempReport.Add(this.GetSummaryElement(tempReport));

            // Salvataggio del report per i documenti in partenza
            report.OutDocument = tempReport.ToArray();

            #endregion

            #region Importazione documenti interni

            // Inizializzazione della lista da utilizzare per
            // memorizzare temporaneamente il report sull'importazione dei
            // documenti interni
            tempReport = new List <ImportResult>();

            // Se non è abilitata l'importazione dei documenti interni, viene
            // cancellata la lista dei documenti interni
            if (!ImportRDEUtils.IsEnabledOwnerProto())
            {
                drdc.OwnDocument = new DocumentRowData[0];
            }

            // Importazione dei documenti interni
            foreach (DocumentRowData rowData in drdc.OwnDocument)
            {
                try
                {
                    tempReport.Add(ImportRDEUtils.ImportRDEDocument(
                                       rowData,
                                       userInfo,
                                       role,
                                       userInfo.urlWA,
                                       ProtoType.I));
                }
                catch (Exception e)
                {
                    // In caso di eccezione viene aggiunto un risultato negativo
                    tempReport.Add(new ImportResult()
                    {
                        Outcome = OutcomeEnumeration.KO,
                        Ordinal = rowData.OrdinalNumber,
                        Message = e.Message
                    });
                }

                // Un documenti è stato analizzato
                totalNumberOfAnalyzedDocuments += 1;
            }

            // Aggiunta di una voce di report con il totale dei documenti
            // importati e non importati
            tempReport.Add(this.GetSummaryElement(tempReport));

            // Salvataggio del report per i documenti interni
            report.OwnDocument = tempReport.ToArray();

            #endregion

            // Sospensione del thread fino a quando non viene letto
            // il report o non passano 1 minuto
            //waitReading.WaitOne(new TimeSpan(0,1,0));
        }
Exemple #3
0
        protected void btnCreaRDE_Click(object sender, EventArgs e)
        {
            #region Definizione variabili

            // Un booleano utilizzato per determinare la validità del
            // file excel
            bool canImport;

            // Il file postato
            HttpPostedFile postedFile;

            // Il content del documento
            byte[] content;

            // Il nome da attribuire al file temporaneo
            string temporaryFileName;

            // Il server path
            string serverPath;

            // L'eventuale errore avvenuto durante la lettura dei dati dal foglio
            string error;

            // L'oggetto con le informazioni sui documenti da importare
            DocumentRowDataContainer drdc;

            // L'oggetto cui delegare l'esecuzione dell'importazione
            AsyncImportRDEExecutor importExecutor;

            // Oggetto per specificare un thread con parametri
            ParameterizedThreadStart entry;

            // Thread
            Thread thread;

            // Oggetto in cui memorizzare i parametri
            object[] parameters;

            // Il report dell'esecuzione
            ResultsContainer report;

            #endregion

            // Prelevamento del file postato
            postedFile = this.fileUploader.PostedFile;

            // Verifica del content type e dell'estensione del file al fine
            // di verificarne la validità
            canImport = (postedFile.ContentType == "application/vnd.ms-excel") &&
                        postedFile.FileName.ToLower().EndsWith("xls");

            // Se la verifica ha avuto esito positivo...
            if (canImport)
            {
                // Prelevamento del contenuto del file
                content = this.GetContent();

                // Creazione del nome per il file temporaneo
                temporaryFileName = String.Format("{0}.xls",
                                                  Guid.NewGuid().ToString());

                // Prelevamento del serverPath
                serverPath = Utils.getHttpFullPath();

                try
                {
                    // Pulizia del call context
                    CallContextStack.CurrentContext.ContextState["rdeImporter"]  = null;
                    CallContextStack.CurrentContext.ContextState["reportImport"] = null;

                    // Reset del campo nascosto con il valore da raggiungere.
                    //this.hfTargetPerc.Value = "0";

                    // Disassociazione delle sorgenti dati
                    this.grdArrivo.DataSource   = null;
                    this.grdGenerale.DataSource = null;
                    this.grdInterni.DataSource  = null;
                    this.grdPartenza.DataSource = null;

                    this.grdArrivo.DataBind();
                    this.grdGenerale.DataBind();
                    this.grdInterni.DataBind();
                    this.grdPartenza.DataBind();

                    // Reperimento delle informazioni sui documenti da importare
                    drdc = ImportRDEUtils.ReadRDEDataFromExcel(
                        content,
                        temporaryFileName);

                    // Creazione di un nuovo oggetto cui delegare l'importazione dei documenti
                    importExecutor = new AsyncImportRDEExecutor();

                    // Salvataggio dell'oggetto esecutore nel CallContext
                    CallContextStack.CurrentContext.ContextState["rdeImporter"] = importExecutor;

                    // Creazione del thread con parametri
                    //entry = new ParameterizedThreadStart(importExecutor.ExecuteImport);

                    // Creazione del thread
                    //thread = new Thread(entry);

                    // Creazione dell'array dei parametri
                    //parameters = new object[] {
                    //    drdc,
                    //    Utils.getHttpFullPath(),
                    //    UserManager.getInfoUtente(),
                    //    UserManager.getRuolo()
                    //};

                    // Partenza del thread
                    //thread.Start(parameters);

                    // Avvio del timer
                    //this.tmrUpdateInfo.Enabled = true;

                    importExecutor.ExecuteImport(
                        new object[] {
                        drdc,
                        Utils.getHttpFullPath(),
                        UserManager.getInfoUtente(),
                        UserManager.getRuolo()
                    });

                    int analyzedDocument, totalDocument;
                    // Si richiedono le statistiche
                    importExecutor.GetStatistics(out analyzedDocument, out totalDocument);

                    // Viene prelevato il report
                    report = importExecutor.GetReport();

                    // Se il report Generale non contiene elementi, viene
                    // controllato se gli altri tab non contengono risultagti
                    //
                    //if (report.General == null || report.General.Length == 0)
                    //{
                    //    report.General = new ImportResult[1];

                    //    report.General[0] = new ImportResult()
                    //    {
                    //        Outcome = OutcomeEnumeration.OK,
                    //        Message = "Nessun messaggio generale da mostrare"
                    //    };
                    //}

                    // Associazione degli array dei risultati alle varie griglia
                    this.grdGenerale.DataSource = report.General;
                    this.grdArrivo.DataSource   = report.InDocument;
                    this.grdPartenza.DataSource = report.OutDocument;
                    this.grdInterni.DataSource  = report.OwnDocument;

                    // Binding delle sorgenti dati
                    this.grdGenerale.DataBind();
                    this.grdArrivo.DataBind();
                    this.grdPartenza.DataBind();
                    this.grdInterni.DataBind();

                    // Creazione del data set per l'esportazione del report di importazione
                    DataSet dataSet = this.GenerateDataSet(report);

                    // Path e nome file del template
                    string templateFilePath = Server.MapPath("formatPdfExport.xml");

                    // Aggiunta nell call context del file documento  con le informazioni
                    // da scivere nel report
                    CallContextStack.CurrentContext.ContextState["reportImport"] =
                        global::ProspettiRiepilogativi.Frontend.PdfReport.do_MakePdfReport(
                            global::ProspettiRiepilogativi.Frontend.ReportDisponibili.ReportLogMassiveImport,
                            templateFilePath,
                            dataSet,
                            null);

                    // Abilitazione pulsante esportazione
                    this.btnEsportaReport.Enabled = true;

                    // Aggiornamento pannello bottoniera
                    this.upButtons.Update();
                }
                catch (Exception ex)
                {
                    // Creazione di un array di result con un solo elemento
                    // che conterrà il dettaglio dell'eccezione
                    report = new ResultsContainer();

                    report.General = new ImportResult[1];

                    report.General[0] = new ImportResult
                    {
                        Outcome = OutcomeEnumeration.KO,
                        Message = ex.Message,
                    };

                    this.grdGenerale.DataSource = report.General;
                    this.grdGenerale.DataBind();
                }
            }

            // Si nasconde il popup
            this.mdlPopupWait.Hide();
        }