/// <summary> /// Funzione per lo spostamento dei documenti nell'area di lavoro /// </summary> /// <param name="documentsInfo">L'elenco dei documenti da spostare</param> /// <param name="report">Report del''esecuzione</param> private void MoveDocumentsInWorkingArea(List <InfoDocumento> documentsInfo, MassiveOperationReport report) { // Per ogni documento... foreach (InfoDocumento docInfo in documentsInfo) { string id = MassiveOperationUtils.getItem(docInfo.idProfile).Codice; // ...spostamento del documento nell'area di lavoro try { if (DocumentManager.isDocInADL(docInfo.idProfile, this.Page) == 0 && DocumentManager.isDocInADLRole(docInfo.idProfile, this.Page) == 0) { SchedaDocumento sd = DocumentManager.getDocumentDetails(this, docInfo.docNumber, docInfo.docNumber); DocumentManager.addAreaLavoro(this, sd); report.AddReportRow( id, MassiveOperationReport.MassiveOperationResultEnum.OK, "Documento inserito correttamente nell'area di lavoro."); } else { report.AddReportRow( id, MassiveOperationReport.MassiveOperationResultEnum.KO, "Documento già inserito nell'area di lavoro."); } } catch (Exception e) { report.AddReportRow( id, MassiveOperationReport.MassiveOperationResultEnum.KO, "Errore durante lo spostamento del documento nell'area di lavoro. Dettagli: " + e.Message); } } }
/// <summary> /// Funzione per la validazione dei dati sul documento e l'avvio dell'inserimento /// nell'area di conservazione /// </summary> /// <param name="documentDetails">Dettagli del documento da inserire nell'area di conservazione</param> /// <param name="report">Report dello spostamento</param> private void CheckDataValidityAndInsertInSA(SchedaDocumento documentDetails, MassiveOperationReport report) { // Identificativo dell'istanza di certificazione String conservationAreaId; // Se il documento ha un file acquisito if (Convert.ToInt32(documentDetails.documenti[0].fileSize) > 0 && (string.IsNullOrEmpty(documentDetails.inConservazione) || !(documentDetails.inConservazione).Equals("1"))) { // Inserimento del documento in area di conservazione this.InsertInSA(documentDetails, report); } else { string codice = MassiveOperationUtils.getItem(documentDetails.systemId).Codice; if (!string.IsNullOrEmpty(documentDetails.inConservazione) && (documentDetails.inConservazione).Equals("1")) { report.AddReportRow( codice, MassiveOperationReport.MassiveOperationResultEnum.KO, "Il documento risulta già inserito in una nuova istanza di conservazione, impossibile inserirlo nuovamente"); } else { report.AddReportRow( codice, MassiveOperationReport.MassiveOperationResultEnum.KO, "Il documento principale non ha alcun file associato, impossibile inserirlo in area conservazione"); } } }
/// <summary> /// Visualizzazione dell'esito della firma applicata ad uno o più documenti /// </summary> protected void ShowReport() { List <FirmaDigitaleResultStatus> res = FirmaDigitaleResultManager.CurrentData; MassiveOperationReport report = new MassiveOperationReport(); foreach (FirmaDigitaleResultStatus temp in res) { MassiveOperationTarget target = MassiveOperationUtils.getItem(temp.IdDocument); MassiveOperationReport.MassiveOperationResultEnum result = MassiveOperationReport.MassiveOperationResultEnum.OK; if (!temp.Status) { result = MassiveOperationReport.MassiveOperationResultEnum.KO; } report.AddReportRow(target.Codice, result, temp.StatusDescription); } if (!IsLF) { string[] pars = new string[] { "" + report.Worked, "" + report.NotWorked }; report.AddSummaryRow("Documenti lavorati: {0} - Documenti non lavorati: {1}", pars); this.generateReport(report, "Firma digitale massiva"); } else { HttpContext.Current.Session["massiveSignReport"] = report; } //PDZ 17/01/2017 //Spostata da dentro if (!IsLF) FirmaDigitaleResultManager.ClearData(); }
private MassiveOperationReport ProceedWithOperation(List <MassiveOperationTarget> selectedItem, RemoveVersionType type) { // Inizializzazione del report MassiveOperationReport report = new MassiveOperationReport(); List <ImportResult> res = DocumentManager.RimuoviVersioniMassivo(selectedItem, type, this); foreach (ImportResult temp in res) { string codice = MassiveOperationUtils.getItem(temp.IdProfile).Codice; report.AddReportRow(codice, (temp.Outcome == OutcomeEnumeration.OK) ? MassiveOperationReport.MassiveOperationResultEnum.OK : MassiveOperationReport.MassiveOperationResultEnum.KO, temp.Message); } return(report); }
/// <summary> /// Visualizzazione dell'esito della firma applicata ad uno o più documenti /// </summary> protected void ShowReport() { List <FirmaResult> firmaResult = new List <FirmaResult>(); List <FirmaDigitaleResultStatus> res = FirmaDigitaleResultManager.CurrentData; MassiveOperationReport report = new MassiveOperationReport(); foreach (FirmaDigitaleResultStatus temp in res) { MassiveOperationTarget target = MassiveOperationUtils.getItem(temp.IdDocument); MassiveOperationReport.MassiveOperationResultEnum result = MassiveOperationReport.MassiveOperationResultEnum.OK; if (target == null) { result = MassiveOperationReport.MassiveOperationResultEnum.KO; report.AddReportRow(temp.IdDocument, result, temp.StatusDescription); } else { if (!temp.Status) { result = MassiveOperationReport.MassiveOperationResultEnum.KO; } report.AddReportRow(target.Codice, result, temp.StatusDescription); } FirmaResult firmaTerminata = new FirmaResult(); firmaTerminata.fileRequest = new FileRequest(); //firmaTerminata.fileRequest. } if (!IsLF) { string[] pars = new string[] { "" + report.Worked, "" + report.NotWorked }; report.AddSummaryRow("Documenti lavorati: {0} - Documenti non lavorati: {1}", pars); this.generateReport(report, "Firma digitale massiva"); FirmaDigitaleResultManager.ClearData(); } else { HttpContext.Current.Session["massiveSignReport"] = report; FirmaDigitaleResultManager.ClearData(); } }
/// <summary> /// Funzione per la conversione dei documenti in PDF /// </summary> /// <param name="documentsInfo">La lista con le informazioni sui documenti da convertire</param> /// <returns>Il report dell'elaborazione</returns> public MassiveOperationReport ConvertInPdf(List <BaseInfoDoc> documentsInfo) { DocsPaWebService ws = new DocsPaWebService(); ws.Timeout = System.Threading.Timeout.Infinite; // Il report da restituire MassiveOperationReport report; // Il risultato della messa in conversione di un documento MassiveOperationReport.MassiveOperationResultEnum tempResult; // Il messaggio da inserire nel report string message; // Informazioni sull'utente che ha lanciato la procedura InfoUtente userInfo; // Il file associato al documento byte[] content = null; // Inizializzazione del report report = new MassiveOperationReport(); // Recupero delle informazioni sull'utente userInfo = UserManager.getInfoUtente(this); foreach (BaseInfoDoc doc in documentsInfo) { // Inizializzazione del messaggio string codice = MassiveOperationUtils.getItem(doc.IdProfile).Codice; message = "Documento inserito correttamente nella coda di conversione PDF."; //Recupero i diritti sul documento string ar = ws.getAccessRightDocBySystemID(doc.IdProfile, UserManager.getInfoUtente(this)); // Verifica delle informazioni sul documento tempResult = this.ValidateDocumentInformation(doc, out message); if (ar.Equals("20")) { message = "Il documento è in attesa di accettazione, quindi non può essere convertito"; tempResult = MassiveOperationReport.MassiveOperationResultEnum.KO; } //Verifico che il documento non sia consolidato FirmaDigitale.FirmaDigitaleMng mng = new FirmaDigitale.FirmaDigitaleMng(); DocsPaWR.SchedaDocumento schedaDocumento = mng.GetSchedaDocumento(doc.DocNumber); if (schedaDocumento != null) { if (schedaDocumento.ConsolidationState != null && schedaDocumento.ConsolidationState.State > DocsPaWR.DocumentConsolidationStateEnum.None) { // Il documento risulta consolidato, non può essere firmato digitalmente message = "Il documento risulta consolidato"; tempResult = MassiveOperationReport.MassiveOperationResultEnum.KO; } } // Se il risultato di validazione delle informazioni è OK, si pruò procedere if (tempResult == MassiveOperationReport.MassiveOperationResultEnum.OK) { try { // Recupero delle informazioni sul file da convertire content = FileManager.getInstance(Session.SessionID).GetFile( this, doc.VersionId, doc.VersionNumber.ToString(), doc.DocNumber, doc.Path, doc.FileName, false).content; } catch (Exception e) { message = "Errore durante il reperimento del file associato al documento."; tempResult = MassiveOperationReport.MassiveOperationResultEnum.KO; } } // Se si può procedere si mette in coda il file da convertire if (tempResult == MassiveOperationReport.MassiveOperationResultEnum.OK) { try { // Avvio della conversione FileManager.EnqueueServerPdfConversionAM( this, userInfo, content, doc.FileName, new SchedaDocumento() { systemId = doc.IdProfile, docNumber = doc.DocNumber }); } catch (Exception e) { tempResult = MassiveOperationReport.MassiveOperationResultEnum.KO; message = "Errore durante l'inserimento del documento nella coda di conversione."; } } // Inserimento di una nuova riga nel report report.AddReportRow( codice, tempResult, message); } // Restituzione del report return(report); }
/// <summary> /// Funzione per l'inserimento di un documento nell'area di conservazione /// </summary> /// <param name="documentDetails">Dettagli del documento da inserire</param> /// <param name="report">Report di inserimento</param> private void InsertInSA(SchedaDocumento documentDetails, MassiveOperationReport report) { StringBuilder message = new StringBuilder(); String conservationAreaId; string id = MassiveOperationUtils.getItem(documentDetails.systemId).Codice; // Se si sta creando la prima istanza di conservazione... if (DocumentManager.isPrimaConservazione( this, UserManager.getInfoUtente(Page).idPeople, UserManager.getInfoUtente(Page).idGruppo) == 1) { message.Append("Si sta creando la prima istanza di conservazione. "); } // Recupero dell'eventiale fascicolo selezionato Fascicolo selectedProject = FascicoliManager.getFascicoloSelezionato(); // Inserimento del documento nella conservazione e recupero dell'id dell'istanza if (selectedProject != null) { // Da ricerca documenti in fascicolo conservationAreaId = DocumentManager.addAreaConservazioneAM( this.Page, documentDetails.systemId, selectedProject.systemID, documentDetails.docNumber, UserManager.getInfoUtente(Page), "F"); } else { conservationAreaId = DocumentManager.addAreaConservazioneAM( this.Page, documentDetails.systemId, "", documentDetails.docNumber, UserManager.getInfoUtente(Page), "D"); } try { int size_xml = DocumentManager.getItemSize( this.Page, documentDetails, conservationAreaId); int doc_size = Convert.ToInt32(documentDetails.documenti[0].fileSize); int numeroAllegati = documentDetails.allegati.Length; string fileName = documentDetails.documenti[0].fileName; string tipoFile = Path.GetExtension(fileName); int size_allegati = 0; for (int i = 0; i < documentDetails.allegati.Length; i++) { size_allegati = size_allegati + Convert.ToInt32(documentDetails.allegati[i].fileSize); } int total_size = size_allegati + doc_size + size_xml; DocumentManager.insertSizeInItemCons(Page, conservationAreaId, total_size); DocumentManager.updateItemsConservazione( this.Page, tipoFile, Convert.ToString(numeroAllegati), conservationAreaId); } catch (Exception e) { report.AddReportRow( id, MassiveOperationReport.MassiveOperationResultEnum.KO, "Si è verificato un errore durante l'inserimento del documento nell'area di conservazione"); } report.AddReportRow( id, MassiveOperationReport.MassiveOperationResultEnum.OK, "Documento inserito correttamente in area di conservazione."); }
private bool PutHSMSign() { bool retVal = false; string errorMsg = string.Empty; if (!string.IsNullOrEmpty(this.TxtHsmAlias.Text) && !string.IsNullOrEmpty(this.TxtHsmDomain.Text) && !string.IsNullOrEmpty(this.TxtHsmPin.Text) && !string.IsNullOrEmpty(this.TxtHsmLitOtp.Text) && (this.HsmLitPades.Checked || this.HsmLitP7M.Checked)) { string alias = this.TxtHsmAlias.Text; string dominio = this.TxtHsmDomain.Text; string pin = this.TxtHsmPin.Text; string otp = this.TxtHsmLitOtp.Text; try { DigitalSignature.RemoteDigitalSignManager dsm = new DigitalSignature.RemoteDigitalSignManager(); DigitalSignature.RemoteDigitalSignManager.Memento m = new DigitalSignature.RemoteDigitalSignManager.Memento { Alias = alias, Dominio = dominio }; //Intanto salvo il memento dsm.HSM_SetMementoForUser(m); } catch (System.Exception ex) { return(true); } MassiveOperationReport.MassiveOperationResultEnum result; string codice = string.Empty; // Il dettaglio dell'elaborazione per un documento string details; MassiveOperationReport report = new MassiveOperationReport(); if ((IsLF || Continue) && HttpContext.Current.Session["massiveSignReport"] != null) { report = HttpContext.Current.Session["massiveSignReport"] as MassiveOperationReport; } //Lista dei fileReequest da passare in input al servizio di firma massiva List <FileRequest> fileRequestList = new List <FileRequest>(); //List<FileRequest> listFileReqLF = new List<FileRequest>(); this.FileTypes = UIManager.FileManager.GetSupportedFileTypes(Int32.Parse(UIManager.UserManager.GetInfoUser().idAmministrazione)); this.IsEnabledSupportedFileTypes = UIManager.FileManager.IsEnabledSupportedFileTypes(); string objType = Request.QueryString["objType"]; if (objType.Equals("D")) { this.SchedaDocumentList = this.LoadSchedaDocumentsList( MassiveOperationUtils.GetSelectedItems()); } // Invio della trasmissione per ogni documento da inviare foreach (SchedaDocumento schedaDoc in this.SchedaDocumentList) { result = MassiveOperationReport.MassiveOperationResultEnum.OK; details = String.Empty; // Verifica della possibilità di firmare il documento result = this.CanSignDocument(schedaDoc, out details); if (result != MassiveOperationReport.MassiveOperationResultEnum.KO) { fileRequestList.Add(schedaDoc.documenti[0]); } // Aggiunta di una riga al report if (result == MassiveOperationReport.MassiveOperationResultEnum.KO) { codice = MassiveOperationUtils.getItem(schedaDoc.docNumber).Codice; report.AddReportRow( codice, result, details); } } //PER TUTTI I DOCUMENTI CHE HANNO SUPERATO I CONTROLLI VADO AD APPLICARE LA FIRMA if (fileRequestList.Count > 0) { DigitalSignature.RemoteDigitalSignManager dsm = new DigitalSignature.RemoteDigitalSignManager(); bool cofirma = this.HsmRadioCoSign.Checked; //prendere dalla checkbox cofirma //ABBATANGELI - Hanno cambiato idea nuovamente e non è sempre cosign ma prende il valore dal checkbox cofirma ////ABBATANGELI - PITre richiede sempre la cofirma per hsm ////cofirma = true; bool timestamp = this.HsmCheckMarkTemporal.Checked; //prendere dalla checkbox timestamp DigitalSignature.RemoteDigitalSignManager.tipoFirma tipoFirma = new DigitalSignature.RemoteDigitalSignManager.tipoFirma(); if (this.HsmLitPades.Checked) { tipoFirma = DigitalSignature.RemoteDigitalSignManager.tipoFirma.PADES; } else { tipoFirma = DigitalSignature.RemoteDigitalSignManager.tipoFirma.CADES; cofirma = this.HsmRadioCoSign.Checked && !FirmaAnnidata; } List <FirmaResult> firmaResult = null; try { firmaResult = dsm.HSM_SignMultiSign(fileRequestList.ToArray(), cofirma, timestamp, tipoFirma, alias, dominio, otp, pin).ToList <FirmaResult>(); /*Commento perchè la distinzione tra documenti che devo firmare cades e quelli da firmare pades per il libro firma, la faccio prima, quando vado a selezionare SchedaDocumentList * if (!IsLF) * { * firmaResult = dsm.HSM_SignMultiSign(fileRequestList.ToArray(), cofirma, timestamp, tipoFirma, alias, dominio, otp, pin).ToList<FirmaResult>(); * } * else * { * List<MassiveOperationTarget> selectedItemSystemIdList = MassiveOperationUtils.GetSelectedItems(); * string typeSign = tipoFirma.Equals(DigitalSignature.RemoteDigitalSignManager.tipoFirma.CADES) ? "C" : "P"; * List<string> idDocumentList = (from temp in selectedItemSystemIdList where temp.Id.Contains(typeSign) select temp.Id.Replace(typeSign, "")).ToList<string>(); * listFileReqLF = (from f in fileRequestList where idDocumentList.Contains(f.docNumber) select f).ToList(); * if (listFileReqLF != null && listFileReqLF.Count > 0) * { * firmaResult = dsm.HSM_SignMultiSign(listFileReqLF.ToArray(), cofirma, timestamp, tipoFirma, alias, dominio, otp, pin).ToList<FirmaResult>(); * } * } */ if (firmaResult != null && ((firmaResult.Count > 1) || (firmaResult.Count == 1 && firmaResult[0].fileRequest != null))) { foreach (FirmaResult r in firmaResult) { string[] splitMsg = r.errore.Split(':'); if (splitMsg[0].Equals("true")) { result = MassiveOperationReport.MassiveOperationResultEnum.OK; details = "Firma HSM del documento avvenuta con successo"; codice = MassiveOperationUtils.getItem(r.fileRequest.docNumber).Codice; report.AddReportRow( codice, result, details); } else { if (r.esito == null || string.IsNullOrEmpty(r.esito.Codice)) { errorMsg = String.Format( "Si sono verificati degli errori durante la firma del documento. Dettagli: {0}", splitMsg[1]); } else { errorMsg = Utils.Languages.GetMessageFromCode(r.esito.Codice, UserManager.GetLanguageData()); } result = MassiveOperationReport.MassiveOperationResultEnum.KO; codice = MassiveOperationUtils.getItem(r.fileRequest.docNumber).Codice; details = errorMsg; report.AddReportRow( codice, result, details); } } } else { //List<FileRequest> list = IsLF ? listFileReqLF : fileRequestList; string error = "Si sono verificati degli errori durante la firma del documento"; if (firmaResult != null && firmaResult.Count > 0) { error += ": " + firmaResult[0].errore; } if (firmaResult[0].esito != null && !string.IsNullOrEmpty(firmaResult[0].esito.Codice)) { error = Utils.Languages.GetMessageFromCode(firmaResult[0].esito.Codice, UserManager.GetUserLanguage()); } foreach (FileRequest fr in fileRequestList) { result = MassiveOperationReport.MassiveOperationResultEnum.KO; codice = MassiveOperationUtils.getItem(fr.docNumber).Codice; details = error; report.AddReportRow( codice, result, details); } } } catch (Exception ex) { //List<FileRequest> list = IsLF ? listFileReqLF : fileRequestList; foreach (FileRequest fr in fileRequestList) { result = MassiveOperationReport.MassiveOperationResultEnum.KO; codice = MassiveOperationUtils.getItem(fr.docNumber).Codice; details = "Si sono verificati degli errori durante la firma HSM del documento."; report.AddReportRow( codice, result, details); } } } if (Continue) { HttpContext.Current.Session["massiveSignReport"] = report; //Se ho firmato CADES e ci sono documenti da firmare PADES non chiudo la maschera ma visualizzo un worning che //informa l'utente di inserire un nuovo otp per procedere con la firma this.TxtHsmLitOtp.Text = string.Empty; this.HsmLitP7M.Enabled = false; this.HsmLitPades.Enabled = false; this.HsmRadioCoSign.Enabled = false; this.UpOTP.Update(); this.UpPnlSign.Update(); ScriptManager.RegisterStartupScript(this, this.GetType(), "ajaxDialogModal", "if (parent.fra_main) {parent.fra_main.ajaxDialogModal('WarningRequestNewOTPFirmaAnnidata', 'warning');} else {parent.ajaxDialogModal('WarningRequestNewOTPFirmaAnnidata', 'warning');}", true); return(false); } if (!IsLF) { // Introduzione della riga di summary string[] pars = new string[] { "" + report.Worked, "" + report.NotWorked }; report.AddSummaryRow("Documenti lavorati: {0} - Documenti non lavorati: {1}", pars); this.generateReport(report, "Firma HSM massiva"); } else { HttpContext.Current.Session["massiveSignReport"] = report; //Se ho firmato CADES e ci sono documenti da firmare PADES non chiudo la maschera ma visualizzo un worning che //informa l'utente di inserire un nuovo otp per procedere con la firma List <MassiveOperationTarget> selectedItemSystemIdList = MassiveOperationUtils.GetSelectedItems(); bool toSignPades = (from s in selectedItemSystemIdList where s.Id.Contains("P") select s).FirstOrDefault() != null; if (this.HsmLitP7M.Checked && toSignPades) { this.HsmLitP7M.Checked = false; this.HsmLitPades.Checked = true; this.TxtHsmLitOtp.Text = string.Empty; ScriptManager.RegisterStartupScript(this, this.GetType(), "ajaxDialogModal", "if (parent.fra_main) {parent.fra_main.ajaxDialogModal('WarningRequestNewOTP', 'warning');} else {parent.ajaxDialogModal('WarningRequestNewOTP', 'warning');}", true); this.UpPnlSign.Update(); this.UpOTP.Update(); return(false); } } retVal = true; } else { retVal = false; ScriptManager.RegisterStartupScript(this, this.GetType(), "ajaxDialogModal", "if (parent.fra_main) {parent.fra_main.ajaxDialogModal('WarningHsmSign', 'warning');} else {parent.ajaxDialogModal('WarningHsmSign', 'warning');}", true); } return(retVal); }
/// <summary> /// Funzione per l'inserimento di un documento nell'area di conservazione /// </summary> /// <param name="documentDetails">Dettagli del documento da inserire</param> /// <param name="report">Report di inserimento</param> private void InsertInSA_WithConstraint(SchedaDocumento documentDetails, MassiveOperationReport report, ref int indexOfCurrentDoc, ref int currentDimOfDocs, int DimMaxInIstanza, int numMaxDocInIstanza, int percentualeTolleranza ) { StringBuilder message = new StringBuilder(); String conservationAreaId; string id = MassiveOperationUtils.getItem(documentDetails.systemId).Codice; // Se si sta creando la prima istanza di conservazione... if (DocumentManager.isPrimaConservazione( UserManager.GetInfoUser().idPeople, UserManager.GetInfoUser().idGruppo) == 1) { message.Append("Si sta creando la prima istanza di conservazione. "); } // Recupero dell'eventiale fascicolo selezionato Fascicolo selectedProject = ProjectManager.getProjectInSession(); // Controllo Rispetto dei Vincoli dell'istanza #region Vincoli Istanza di Conservazione // Variabili di controllo per violazione dei vincoli sulle istanze bool numDocIstanzaViolato = false; bool dimIstanzaViolato = false; int TotalSelectedDocumentSize = 0; TotalSelectedDocumentSize = DocumentManager.GetTotalDocumentSize(documentDetails); // Dimensione documenti raggiunta currentDimOfDocs = TotalSelectedDocumentSize + currentDimOfDocs; // Numero di documenti raggiunti indexOfCurrentDoc = indexOfCurrentDoc + 1; numDocIstanzaViolato = DocumentManager.isVincoloNumeroDocumentiIstanzaViolato(indexOfCurrentDoc, numMaxDocInIstanza); dimIstanzaViolato = DocumentManager.isVincoloDimensioneIstanzaViolato(currentDimOfDocs, DimMaxInIstanza, percentualeTolleranza); double DimensioneMassimaConsentitaPerIstanza = 0; DimensioneMassimaConsentitaPerIstanza = DimMaxInIstanza - ((DimMaxInIstanza * percentualeTolleranza) / 100); int DimMaxConsentita = 0; DimMaxConsentita = Convert.ToInt32(DimensioneMassimaConsentitaPerIstanza); if (numDocIstanzaViolato || dimIstanzaViolato) { // Azzero le due variabili currentDimOfDocs = 0; indexOfCurrentDoc = 0; } #endregion // Inserimento del documento nella conservazione e recupero dell'id dell'istanza if (selectedProject != null) { // Da ricerca documenti in fascicolo conservationAreaId = DocumentManager.addAreaConservazioneAM_WithConstraint( this.Page, documentDetails.systemId, selectedProject.systemID, documentDetails.docNumber, UserManager.GetInfoUser(), "F", numDocIstanzaViolato, dimIstanzaViolato, DimMaxConsentita, numMaxDocInIstanza, TotalSelectedDocumentSize ); } else { conservationAreaId = DocumentManager.addAreaConservazioneAM_WithConstraint( this.Page, documentDetails.systemId, "", documentDetails.docNumber, UserManager.GetInfoUser(), "D", numDocIstanzaViolato, dimIstanzaViolato, DimMaxConsentita, numMaxDocInIstanza, TotalSelectedDocumentSize ); } try { if (conservationAreaId.ToString() != "-1") { int size_xml = DocumentManager.getItemSize( documentDetails, conservationAreaId); int doc_size = Convert.ToInt32(documentDetails.documenti[0].fileSize); int numeroAllegati = documentDetails.allegati.Length; string fileName = documentDetails.documenti[0].fileName; string tipoFile = Path.GetExtension(fileName); int size_allegati = 0; for (int i = 0; i < documentDetails.allegati.Length; i++) { size_allegati = size_allegati + Convert.ToInt32(documentDetails.allegati[i].fileSize); } int total_size = size_allegati + doc_size + size_xml; DocumentManager.insertSizeInItemCons(conservationAreaId, total_size); DocumentManager.updateItemsConservazione( tipoFile, Convert.ToString(numeroAllegati), conservationAreaId); } } catch (Exception e) { report.AddReportRow( id, MassiveOperationReport.MassiveOperationResultEnum.KO, "Si è verificato un errore durante l'inserimento del documento nell'area di conservazione"); } #region old code //report.AddReportRow( // id, // MassiveOperationReport.MassiveOperationResultEnum.OK, // "Documento inserito correttamente in area di conservazione."); #endregion #region MEV CS 1.5 - F03_01 if (!string.IsNullOrEmpty(conservationAreaId.ToString())) { report.AddReportRow( documentDetails.systemId, MassiveOperationReport.MassiveOperationResultEnum.OK, "Documento inserito correttamente in area di conservazione."); } else { report.AddReportRow( documentDetails.systemId, MassiveOperationReport.MassiveOperationResultEnum.KO, "Documento non inserito in area di conservazione per violazione vincoli dimensione istanza."); } #endregion }