/// <summary> /// Funzione per la creazione dell'oggetto protocollo in entrata /// </summary> /// <param name="rowData">L'oggetto con le informazioni sul documento da creare</param> /// <param name="registrySyd">Il system id del registo in cui protocollare</param> /// <param name="rfSyd">Il system id dell'rf in cui protocollare</param> /// <param name="administrationSyd">Il system id dell'amministrazione incui creare il documento</param> /// <param name="isSmistamentoEnabled">True se, da configurazione, è abilitato lo smistamento</param> /// <param name="userInfo">Le informazioni sull'utente che ha lanciato la procedura</param> /// <param name="role">Il ruolo dell'utente che ha lanciato la procedura</param> /// <returns>L'oggetto Protocollo con le informazioni sul protocollo in ingresso da creare</returns> protected override Protocollo CreateProtocolObject(DocumentRowData rowData, string registrySyd, string rfSyd, string administrationSyd, bool isSmistamentoEnabled, InfoUtente userInfo, Ruolo role) { // Creazione dell'oggetto ProtocolloEntrata ProtocolloEntrata inProto = new ProtocolloEntrata(); // Calcolo del mittente del protocollo // Se è valorizzata la proprietà CorrDesc della rowData, significa che // il corrispondente è di tipo occasionale if (rowData.CorrDesc != null && rowData.CorrDesc.Count > 0) { // Creazione del corrispondente inProto.mittente = new Corrispondente(); // Impostazione della descrizione del corrispondente inProto.mittente.descrizione = rowData.CorrDesc[0]; // Impostazione dell'id amministrazione inProto.mittente.idAmministrazione = administrationSyd; // Impostazione del tipo corrispondente ad O inProto.mittente.tipoCorrispondente = "O"; } if (rowData.CorrCode != null && rowData.CorrCode.Count > 0) { // Altrimenti si procede con il caricamento delle informazioni sul // corrispondente inProto.mittente = ImportUtils.GetCorrispondenteByCode( ParametriRicercaRubrica.CallType.CALLTYPE_PROTO_IN, rowData.CorrCode[0].Trim(), role, userInfo, registrySyd, rfSyd, isSmistamentoEnabled, TipoUtente.GLOBALE); } // Se non è stato ptrovato il corrispondente, eccezione if (inProto.mittente == null) { throw new Exception("Impossibile recuperare le informazioni sul mittente del protocollo."); } // Restituzione dell'oggetto con le informazioni sul protocollo return(inProto); }
/// <summary> /// Caricamento dati protocollo ingresso /// </summary> private void FetchProtocolloIngresso() { ProtocolloEntrata protocollo = this.GetSchedaDocumento().protocollo as ProtocolloEntrata; if (protocollo != null) { if (protocollo.mittente != null) { this.txtCodMitt.Text = protocollo.mittente.codiceRubrica; this.txtDescMitt.Text = protocollo.mittente.descrizione; } this.txtDtaProtMitt.Text = protocollo.dataProtocolloMittente; this.txtProtMitt.Text = protocollo.descrizioneProtocolloMittente; if (this.MittentiIntermediEnabled() && protocollo.mittenteIntermedio != null) { this.txtCodMittInterm.Text = protocollo.mittenteIntermedio.codiceRubrica; this.txtDescMittInterm.Text = protocollo.mittenteIntermedio.descrizione; } } }
public static DocInfo buildInstance(SchedaDocumento input, String OriginalFileName, IEnumerable <Fascicolo> fascicoli, bool isAcquisito, bool hasPreview) { DocInfo res = new DocInfo(); res.IdDoc = input.systemId; res.OriginalFileName = OriginalFileName; if (input.noteDocumento != null && input.noteDocumento.Count > 0) { Array.Sort(input.noteDocumento.ToArray(), new InfoNoteComparer()); res.Note = input.noteDocumento[input.noteDocumento.Count - 1].Testo; } if (input.oggetto != null) { res.Oggetto = input.oggetto.descrizione; } res.DataDoc = toDate(input.dataCreazione); res.HasPreview = hasPreview; res.IsAcquisito = isAcquisito; res.TipoProto = input.tipoProto; res.AccessRights = input.accessRights; int AccInt = 0; Int32.TryParse(res.AccessRights, out AccInt); if (AccInt > 45) { res.CanTransmit = true; } if (input.documentoPrincipale != null) { res.IdDocPrincipale = input.documentoPrincipale.docNumber; } if (input.protocollo != null) { res.IsProtocollato = false; res.Segnatura = input.protocollo.segnatura; if (input.protocollo.daProtocollare == "0") { res.IsProtocollato = true; res.DataProto = toDate(input.protocollo.dataProtocollazione); } if (res.TipoProto.Equals("P")) { ProtocolloUscita pu = (ProtocolloUscita)input.protocollo; res.Mittente = formatCorrispondente(pu.mittente); foreach (object temp in pu.destinatari) { res.Destinatari.Add(formatCorrispondente((Corrispondente)temp)); } } if (res.TipoProto.Equals("A")) { ProtocolloEntrata pe = (ProtocolloEntrata)input.protocollo; res.Mittente = formatCorrispondente(pe.mittente); } } if (fascicoli != null) { foreach (Fascicolo fasc in fascicoli) { res.Fascicoli.Add(new List <string> { fasc.codice, fasc.descrizione }); } } return(res); }
/// <summary> /// Creazione del documento nel sistema /// </summary> /// <param name="settings">Impostazioni relative al registro su cui creare il documento</param> /// <param name="senderInfo">Informazioni sul mittente della richiesta</param> /// <param name="interoperabilityMessage">Messaggio con le informazioni sulla richiesta di interoperabilità</param> /// <param name="userRole">Ruolo dell'utente da utilizzare per la creazione del documento</param> /// <param name="user">Utente da utilizzare per la creazione del documento</param> /// <returns>Scheda del documento creato</returns> private static SchedaDocumento CreateDocument(InteroperabilitySettings settings, Corrispondente senderInfo, InteroperabilityMessage interoperabilityMessage, Ruolo userRole, Utente user, String messageId) { // Recupero delle informazioni sull'utente da utilizzare come creatore del documento InfoUtente userInfo = UserManager.GetInfoUtente(user, userRole); // Creazione della scheda documento da restituire SchedaDocumento document = DocManager.NewSchedaDocumento(userInfo); // Recupero del registro su cui creare il predisposto Registro registry = RegistriManager.getRegistro(settings.RegistryId); // Recupero del mezzo di spedizione MezzoSpedizione channel = InfoDocManager.GetMezzoSpedizioneDaCodice("SIMPLIFIEDINTEROPERABILITY"); // Impostazione delle proprietà del documento try { if (!String.IsNullOrEmpty(interoperabilityMessage.MainDocument.FileName)) { document.appId = InteroperabilitaSegnatura.getApp(interoperabilityMessage.MainDocument.FileName).application; } } catch (Exception e) {} document.idPeople = user.idPeople; document.userId = user.userId; document.oggetto = new Oggetto() { descrizione = interoperabilityMessage.Record.Subject }; document.predisponiProtocollazione = true; document.registro = registry; document.tipoProto = "A"; document.typeId = "SIMPLIFIEDINTEROPERABILITY"; document.mezzoSpedizione = channel.IDSystem; document.descMezzoSpedizione = channel.Descrizione; document.interop = "S"; document.protocollatore = new Protocollatore(userInfo, userRole); document.privato = interoperabilityMessage.IsPrivate ? "1" : "0"; // Se la gestione dell'interoperabilità è manuale con mantenimento // del documento pendente, il documento viene creato privato e subito dopo // la creazione viene rimarcato come non privato if (settings.ManagementMode == ManagementType.M && settings.KeepPrivate) { document.privato = "1"; } // Preparazione dell'oggetto protocollo entrata ProtocolloEntrata proto = new ProtocolloEntrata(); proto.mittente = senderInfo; proto.dataProtocolloMittente = interoperabilityMessage.Record.RecordDate.ToString("dd/MM/yyyy HH:mm:ss"); proto.descrizioneProtocolloMittente = String.Format("{0}{1}{2}", interoperabilityMessage.Record.AOOCode, DocsPaDB.Utils.Personalization.getInstance(registry.idAmministrazione).getSepSegnatura(), interoperabilityMessage.Record.RecordNumber); document.protocollo = proto; // Se per l'amministrazione è configurata l'aggiunta di una nota visibile a tutti, // ne viene aggiunta una String value = DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_NOTE_IN_SEGNATURA"); if (!String.IsNullOrEmpty(value) && value == "1" && !String.IsNullOrEmpty(interoperabilityMessage.Note)) { document.noteDocumento = new List <DocsPaVO.Note.InfoNota>() { new DocsPaVO.Note.InfoNota(interoperabilityMessage.Note, userInfo.idPeople, userInfo.idGruppo, DocsPaVO.Note.TipiVisibilitaNotaEnum.Tutti, String.Empty) { DaInserire = true } } } ; // Salvataggio del documento try { document = DocSave.addDocGrigia(document, userInfo, userRole); // Associazione del canale di spedizione al documento ProtoManager.collegaMezzoSpedizioneDocumento(userInfo, channel.IDSystem, document.systemId); } catch (Exception e) { SimplifiedInteroperabilityLogAndRegistryManager.InsertItemInLog(String.Empty, true, e.Message + " Id messaggio: " + messageId); throw new CreatingDocumentException("Errore durante la creazione del documento"); } // Se tutto è andato bene, la scheda documento ha ora il campo system id popolato, quindi viene aggiunta // una voce al log e viene aggiornato l'id profile per la voce nel registro dei messaggi ricevuti SimplifiedInteroperabilityLogAndRegistryManager.InsertItemInLog(document.systemId, false, String.Format("Documento relativo alla richiesta con id {0}, creato correttamente.", messageId)); SimplifiedInteroperabilityLogAndRegistryManager.SetIdProfileForMessage(messageId, document.systemId); // Impostazione delle informazioni aggiuntive e salvataggio del documento ((Documento)document.documenti[0]).dataArrivo = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"); bool toUpdate; document = DocSave.save(userInfo, document, false, out toUpdate, userRole); string errPutFile = ""; try { // Associazione dell'immagine al documento String err = String.Empty; FileRequest request = document.documenti[0] as FileRequest; logger.DebugFormat("IS - Associa documento. Versionid {0}, Versionlabel {1}, version {2}", request.versionId, request.versionLabel, request.version); if (!String.IsNullOrEmpty(interoperabilityMessage.MainDocument.FileName)) { SimplifiedInteroperabilityFileManager.DownloadFile( interoperabilityMessage.MainDocument, interoperabilityMessage.Sender.AdministrationId, request, userInfo, interoperabilityMessage.Sender.FileManagerUrl, out errPutFile); } if (!string.IsNullOrEmpty(errPutFile)) { throw new Exception("Errore durante l'associazione dell'immagine al documento principale"); } } catch (Exception e) { SimplifiedInteroperabilityLogAndRegistryManager.InsertItemInLog( document.systemId, true, String.Format("Errore durante l'associazione dell'immagine per il documento principale. Messaggio eccezione: {0}", e.Message)); if (!string.IsNullOrEmpty(errPutFile) && errPutFile.Contains("formato file")) { throw new DownloadDocumentException("Errore durante l'associazione dell'immagine al documento principale." + errPutFile + " destinataria."); } else { throw new DownloadDocumentException("Errore durante l'associazione dell'immagine al documento principale"); } } AddAttachments(document.docNumber, interoperabilityMessage.Attachments, userInfo, interoperabilityMessage.Sender.AdministrationId, interoperabilityMessage.Sender.FileManagerUrl); // Restituzione del documento salvato return(document); }