/// <summary> /// Metodo per la costruzione dell'oggetto InfoDocumentDelivered contenente informazioni /// su ciò che è stato effettivamente recapitato a destinazione. /// </summary> /// <param name="schedaDocumento"></param> /// <returns></returns> private static InfoDocumentDelivered BuildInfoDocumentDelivered(SchedaDocumento schedaDocumento) { InfoDocumentDelivered infoDocDelivered = new InfoDocumentDelivered(); if (schedaDocumento != null && !string.IsNullOrEmpty(schedaDocumento.docNumber)) { try { //Aggiungo le informazioni per il documento principale FileRequest fileReq = (Documento)schedaDocumento.documenti[0]; DocsPaDB.Query_DocsPAWS.Documenti doc = new DocsPaDB.Query_DocsPAWS.Documenti(); string impronta = string.Empty; if (Int32.Parse(fileReq.fileSize) > 0) { doc.GetImpronta(out impronta, fileReq.versionId, fileReq.docNumber); } infoDocDelivered.MainDocument = new DocumentInfo { Name = schedaDocumento.oggetto.descrizione, FileName = doc.GetNomeOriginale(fileReq.versionId, fileReq.docNumber), Fingerprint = impronta }; //Aggiungo le informazioni per gli allegati infoDocDelivered.Attachments = new List <DocumentInfo>(); schedaDocumento.allegati = doc.GetAllegati(schedaDocumento.docNumber, "user"); if (schedaDocumento.allegati != null && schedaDocumento.allegati.Count > 0) { DocumentInfo infoAttach; foreach (Allegato allegato in schedaDocumento.allegati) { impronta = string.Empty; if (Int32.Parse(allegato.fileSize) > 0) { doc.GetImpronta(out impronta, allegato.versionId, allegato.docNumber); } infoAttach = new DocumentInfo { Name = allegato.descrizione, VersionLabel = allegato.versionLabel, FileName = doc.GetNomeOriginale(allegato.versionId, allegato.docNumber), Fingerprint = impronta }; infoDocDelivered.Attachments.Add(infoAttach); } } } catch (Exception e) { logger.Error("BusinessLogic.interoperabilita.Semplificata.SimplifiedInteroperabilityRequestManager.BuildInfoDocumentDelivered. Errore durante la costruzione dell'oggetto contenente l'infomazione della spedizione : " + e.Message); } } return(infoDocDelivered); }
/// <summary> /// Reperimento degli allegati di un documento /// </summary> /// <param name="infoDoc"></param> /// <param name="debug"></param> /// <returns></returns> public static System.Collections.ArrayList getAllegati(string docNumber, string filterAllegatiPec, string simplifiedInteroperabilityId = "") { DocsPaDB.Query_DocsPAWS.Documenti doc = new DocsPaDB.Query_DocsPAWS.Documenti(); return(doc.GetAllegati(docNumber, filterAllegatiPec, simplifiedInteroperabilityId)); }
public static DocsPaVO.documento.SchedaDocumento InoltraDoc(DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.utente.Ruolo ruolo, DocsPaVO.documento.SchedaDocumento schedaOLD) { string err = ""; DocsPaVO.documento.SchedaDocumento schedaNEW = null; bool daAggiornareUffRef = false; string filepath = ""; DocsPaVO.documento.FileDocumento fd = null; //se arriva sch con solo system_id e docnumber la ricerco if (schedaOLD != null && schedaOLD.protocollo == null) { schedaOLD = BusinessLogic.Documenti.DocManager.getDettaglio(infoUtente, schedaOLD.systemId, schedaOLD.docNumber); } schedaNEW = new DocsPaVO.documento.SchedaDocumento(); schedaNEW.systemId = null; schedaNEW.docNumber = null; schedaNEW.oggetto = schedaOLD.oggetto; schedaNEW.idPeople = infoUtente.idPeople; schedaNEW.userId = infoUtente.userId; schedaNEW.registro = schedaOLD.registro; //schedaNEW.tipoProto = "P"; schedaNEW.typeId = "LETTERA"; schedaNEW.privato = schedaOLD.privato; schedaNEW.mezzoSpedizione = schedaOLD.mezzoSpedizione; schedaNEW.descMezzoSpedizione = schedaOLD.descMezzoSpedizione; schedaNEW.tipologiaAtto = schedaOLD.tipologiaAtto; schedaNEW.template = schedaOLD.template; //schedaNEW.predisponiProtocollazione = true; //creo un nuovo documento grigio logger.Debug("Creazione doc..."); schedaNEW = BusinessLogic.Documenti.DocSave.addDocGrigia(schedaNEW, infoUtente, ruolo); //Dopo aver creato il documento grigio lo predispongo alla protocollazione logger.Debug("Predisponi doc..."); schedaNEW.tipoProto = "P"; schedaNEW.typeId = schedaOLD.typeId; schedaNEW.predisponiProtocollazione = true; schedaNEW.protocollo = new DocsPaVO.documento.ProtocolloUscita(); DocsPaVO.utente.Corrispondente corr = ruolo.uo; ((DocsPaVO.documento.ProtocolloUscita)schedaNEW.protocollo).mittente = corr; //((DocsPaVO.documento.ProtocolloUscita)schedaNEW.protocollo).mittente = ((DocsPaVO.documento.ProtocolloUscita)schedaOLD.protocollo).mittente; //((DocsPaVO.documento.ProtocolloUscita)schedaNEW.protocollo).destinatari = ((DocsPaVO.documento.ProtocolloUscita)schedaOLD.protocollo).destinatari; //((DocsPaVO.documento.ProtocolloUscita)schedaNEW.protocollo).destinatariConoscenza = ((DocsPaVO.documento.ProtocolloUscita)schedaOLD.protocollo).destinatariConoscenza; schedaNEW = BusinessLogic.Documenti.DocSave.save(infoUtente, schedaNEW, false, out daAggiornareUffRef, ruolo); logger.Debug("Creato documento grigio e predisposto alla protocollazione"); //Copia del documento principale e degli allegati del vecchio documento //nel nuovo documento come allegati #region ricerca e copia degli allegati logger.Debug("Inserimento degli allegati"); for (int i = 0; schedaOLD.allegati != null && i < schedaOLD.allegati.Count; i++) { //estrazione dati dell'allegato DocsPaVO.documento.Allegato documentoAllegato = (DocsPaVO.documento.Allegato)schedaOLD.allegati[i]; filepath = documentoAllegato.docServerLoc + documentoAllegato.path; string nomeAllegato = "Inoltro " + documentoAllegato.fileName; string numPagine = documentoAllegato.numeroPagine.ToString(); string titoloDoc = documentoAllegato.descrizione; logger.Debug("Inserimento allegato " + nomeAllegato); DocsPaVO.documento.Allegato all = new DocsPaVO.documento.Allegato(); all.descrizione = "allegato " + i; logger.Debug("docnumber=" + schedaNEW.docNumber); all.docNumber = schedaNEW.docNumber; all.fileName = getFileName(nomeAllegato); all.version = "0"; //numero pagine if (numPagine != null && !numPagine.Trim().Equals("")) { all.numeroPagine = Int32.Parse(numPagine); } //descrizione allegato if (titoloDoc != null && !titoloDoc.Trim().Equals("")) { all.descrizione = "Inoltro " + titoloDoc; } BusinessLogic.Documenti.AllegatiManager.aggiungiAllegato(infoUtente, all); logger.Debug("Allegato id=" + all.versionId); logger.Debug("Allegato version label=" + all.versionLabel); logger.Debug("Inserimento nel filesystem"); DocsPaVO.documento.FileDocumento fdAllNew = new DocsPaVO.documento.FileDocumento(); DocsPaVO.documento.FileDocumento fdAll = null; if (Int32.Parse(documentoAllegato.fileSize) > 0) { try { fdAll = BusinessLogic.Documenti.FileManager.getFile((DocsPaVO.documento.FileRequest)schedaOLD.allegati[i], infoUtente); if (fdAll == null) { throw new Exception("Errore nel reperimento dell'allegato numero" + i.ToString()); } fdAllNew.content = fdAll.content; fdAllNew.length = fdAll.length; fdAllNew.name = fdAll.name; fdAllNew.fullName = fdAll.fullName; fdAllNew.contentType = fdAll.contentType; DocsPaVO.documento.FileRequest fr = (DocsPaVO.documento.FileRequest)all; if (!BusinessLogic.Documenti.FileManager.putFile(ref fr, fdAllNew, infoUtente, out err)) { throw new Exception(err); } logger.Debug("Allegato " + i + " inserito"); } catch (Exception ex) { err = "Errore nel reperimento dell'allegato numero " + i.ToString() + " : " + ex.Message; if (schedaNEW != null && schedaNEW.systemId != null && schedaNEW.systemId != "") { //se il putFile va in errore devo rimuovere il profile (predisposto appena inserito) BusinessLogic.Documenti.DocManager.ExecRimuoviSchedaMethod(infoUtente, schedaNEW); logger.Debug("Eseguita rimozione profilo"); } logger.Debug(err);//se non si riesce a prener eil file per problemi vari continuo comunque per arrivare a eseguiTrasmissione throw ex; } } } #endregion #region copia documento principale in allegato //DocsPaVO.documento.FileDocumento fdNew = null; if (schedaOLD.documenti != null && schedaOLD.documenti[0] != null && Int32.Parse(((DocsPaVO.documento.FileRequest)schedaOLD.documenti[0]).fileSize) > 0) { try { fd = BusinessLogic.Documenti.FileManager.getFile((DocsPaVO.documento.FileRequest)schedaOLD.documenti[0], infoUtente); if (fd == null) { throw new Exception("Errore nel reperimento del file principale."); } //copio in un nuovo filerequest perchè putfile lo vuole senza DocsPaVO.documento.Allegato allDocPrinc = new DocsPaVO.documento.Allegato(); allDocPrinc.descrizione = "Inoltro documento principale id: " + schedaOLD.docNumber; allDocPrinc.docNumber = schedaNEW.docNumber; allDocPrinc.fileName = getFileName(fd.name); allDocPrinc.version = "0"; BusinessLogic.Documenti.AllegatiManager.aggiungiAllegato(infoUtente, allDocPrinc); DocsPaVO.documento.FileDocumento fdAllNew = new DocsPaVO.documento.FileDocumento(); DocsPaVO.documento.FileDocumento fdAll = null; fdAll = BusinessLogic.Documenti.FileManager.getFile((DocsPaVO.documento.FileRequest)schedaOLD.documenti[0], infoUtente); if (fdAll == null) { throw new Exception("Errore nel reperimento del file principale come allegato"); } fdAllNew.content = fdAll.content; fdAllNew.length = fdAll.length; fdAllNew.name = fdAll.name; fdAllNew.fullName = fdAll.fullName; fdAllNew.contentType = fdAll.contentType; DocsPaVO.documento.FileRequest fr = (DocsPaVO.documento.FileRequest)allDocPrinc; if (!BusinessLogic.Documenti.FileManager.putFile(ref fr, fdAllNew, infoUtente, out err)) { throw new Exception(err); } logger.Debug("Doc principale inserito come allegato"); DocsPaDB.Query_DocsPAWS.Documenti doc = new DocsPaDB.Query_DocsPAWS.Documenti(); schedaNEW.allegati = doc.GetAllegati(schedaNEW.docNumber, string.Empty); } catch (Exception ex) { err = "Errore nel reperimento del file principale : " + ex.Message; if (schedaNEW != null && schedaNEW.systemId != null && schedaNEW.systemId != "") { //se il putFile va in errore devo rimuovere il profile (predisposto appena inserito) BusinessLogic.Documenti.DocManager.ExecRimuoviSchedaMethod(infoUtente, schedaNEW); logger.Debug("Eseguita rimozione profilo"); } logger.Debug(err); throw ex; } } #endregion err = err + " " + schedaNEW.docNumber; if (schedaNEW != null && schedaNEW.docNumber != null) { err = "errore " + err + " documento rimosso: " + schedaNEW.docNumber; } else { err = "errore " + err; } logger.Debug(err); schedaNEW.predisponiProtocollazione = true; return(schedaNEW); }