//questo metodo crea un documento protocollato su docsPa a partire da un protocollo di emergenza public static DocsPaVO.documento.resultProtoEmergenza importaProtoEmergenza(DocsPaVO.documento.ProtocolloEmergenza protoEmergenza, DocsPaVO.utente.InfoUtente infoUtente) { DocsPaVO.documento.resultProtoEmergenza res = new DocsPaVO.documento.resultProtoEmergenza(); try { DocsPaVO.utente.Ruolo ruolo = Utenti.UserManager.getRuolo(infoUtente.idCorrGlobali); DocsPaVO.documento.SchedaDocumento schedaDocumento; logger.Debug("add protocollo Emergenza"); //si costruisce l'oggetto schedaDocumento schedaDocumento = creaSchedaDocumento(protoEmergenza, infoUtente, ruolo); //si protocolla DocsPaVO.documento.ResultProtocollazione risultatoProtocollazione; schedaDocumento = ProtoManager.protocolla(schedaDocumento, ruolo, infoUtente, out risultatoProtocollazione); if (schedaDocumento != null) { res.isProtocollato = true; } //si classifica il documento classificaDocumento(schedaDocumento, protoEmergenza.codiceClassifica, ref res, infoUtente, ruolo); //eventualmente si annulla il documento if (protoEmergenza.dataAnnullamento != null && !protoEmergenza.dataAnnullamento.Equals("")) { annullaProtocollo(schedaDocumento, protoEmergenza, ref res, infoUtente); } else { //si trasmette il documento trasmettiDocumento(schedaDocumento, protoEmergenza.templateTrasmissione, ref res, infoUtente, ruolo, protoEmergenza.idRegistro); } } catch (Exception e) { res.messaggio = res.messaggio + " - " + e.Message; logger.Debug(e.ToString()); return(res); } return(res); }
/// <summary> /// Metodo per la creazione del predisposto e per la sua trasmissione agli utenti impostati nel sistema /// </summary> /// <param name="settings">Impostazioni relative al particolare registro su cui creare il predisposto</param> /// <param name="senderInfo">Informazioni sul mittente del messaggio</param> /// <param name="interoperabilityMessage">Informazioni sulla richiesta di interoperabilità</param> /// private static InfoDocumentDelivered GenerateInteroperabilityDocument(InteroperabilitySettings settings, Corrispondente senderInfo, InteroperabilityMessage interoperabilityMessage, List <ReceiverInfo> receivers, String messageId, Utente user, Ruolo userRole) { // Se per il registro è disabilitata l'interoperabilità, non si può procedere. if (!settings.IsEnabledInteroperability) { throw new RegistryNotInteroperableException(String.Format("Registro {0} non interoperante", RegistriManager.getRegistro(settings.RegistryId).codice)); } // Creazione della scheda documento SchedaDocumento document = CreateDocument(settings, senderInfo, interoperabilityMessage, userRole, user, messageId); // Trasmissione dei documenti ai ruoli List <ReceiverInfo> uneachableReceivers = TransmitDocument(settings, document, userRole, user, interoperabilityMessage.IsPrivate, receivers); // Se il documento è stato marcato privato a causa delle impostazioni sulla gestione // viene eliminato il flag privato if (!interoperabilityMessage.IsPrivate && document.privato == "1") { DocManager.SetNotPrivate(document.systemId); } InfoDocumentDelivered infoDocDelivered = BuildInfoDocumentDelivered(document); // Se per il registro è impostata la modalità automatica, si procede con la protocollazione del documento if (settings.ManagementMode == ManagementType.A) { try { InfoUtente userInfo = UserManager.GetInfoUtente(user, userRole); // Impostazione della data e ora di protocollazione document.protocollo.dataProtocollazione = DateTime.Now.ToString("dd/MM/yyyy"); document.protocollo.anno = DateTime.Now.Year.ToString(); ResultProtocollazione protoResult = ResultProtocollazione.OK; ProtoManager.protocolla(document, userRole, userInfo, out protoResult); // Invio della ricevuta di conferma di ricezione al mittente per tutti i destinatari SimplifiedInteroperabilityProtoManager.SendDocumentReceivedProofToSender( interoperabilityMessage, new DocsPaVO.Interoperabilita.Semplificata.RecordInfo() { AdministrationCode = document.registro.codAmministrazione, AOOCode = document.registro.codRegistro, RecordDate = DateTime.Parse(document.protocollo.dataProtocollazione), RecordNumber = document.protocollo.numero }, document.systemId, userInfo); } catch (Exception e) { SimplifiedInteroperabilityLogAndRegistryManager.InsertItemInLog( document.systemId, true, "Errore durante la creazione del protocollo"); throw new CreatingDocumentException("Errore durante la protocollazione del documento predisposto"); } } // Se qualche corrispondente non è stato trovato, viene sollevata un'eccezione // di tipo RetrivingSomeTransmissionReceiverException if (uneachableReceivers != null && uneachableReceivers.Count > 0) { throw new RetrivingSomeTransmissionReceiverException( "Nessun destinatario trovato per la trasmissione del documento", uneachableReceivers); } return(infoDocDelivered); }