/// <summary> /// Metodo per l'invio della ricevuta /// </summary> /// <param name="sender">Informazioni sul mittente della spedizione</param> /// <param name="receiver">Informazioni sul destinatario della spedizione</param> /// <param name="senderUrl">Url del mittente</param> /// <param name="reason">Ragione di annullamento o dettaglio dell'eccezione</param> /// <param name="adminId">Id dell'amministrazione</param> /// <param name="dropped">Flag utilizzato per indicare se si deve inviare una richiesta di eliminazione</param> /// <param name="receiverCode">Codice del destinatario</param> private static void SendProof(RecordInfo sender, RecordInfo receiver, string senderUrl, String reason, String adminId, bool dropped, String receiverCode) { InteroperabilityController interoperabilityController = new InteroperabilityController(); interoperabilityController.AnalyzeDocumentDroppedOrErrorProof( new Interoperability.Domain.RecordInfo() { AdministrationCode = sender.AdministrationCode, AOOCode = sender.AOOCode, RecordDate = sender.RecordDate, RecordNumber = sender.RecordNumber }, new Interoperability.Domain.RecordInfo() { AdministrationCode = receiver.AdministrationCode, AOOCode = receiver.AOOCode, RecordDate = receiver.RecordDate, RecordNumber = receiver.RecordNumber }, reason, InteroperabilitaSemplificataManager.GetUrl(adminId), senderUrl, dropped ? Interoperability.Domain.OperationDiscriminator.Drop : Interoperability.Domain.OperationDiscriminator.Error, receiverCode); }
/// <summary> /// Metodo per la creazione delle informazioni sul mittente della spedizione /// </summary> /// <param name="schedaDocumento">Documento da cui estrarre le informazioni</param> /// <param name="infoUtente">Informazioni sull'utente richiedente</param> /// <param name="destinatari">Lista dei destinatari della spedizione</param> /// <returns>Informazioni sul mittente della spedizione</returns> private SenderInfo CreateSendersInfo(SchedaDocumento schedaDocumento, InfoUtente infoUtente, Corrispondente[] destinatari) { // Recupero del codice del mittente String senderCode = InteroperabilitaSemplificataManager.LoadSenderInfoFromUoId(((ProtocolloUscita)schedaDocumento.protocollo).mittente.systemId); // Se il mittente non è interoperante o se non è presente in RC, non si può procedere con la spedizione if (!InteroperabilitaSemplificataManager.IsCorrEnabledToInterop( ((ProtocolloUscita)schedaDocumento.protocollo).mittente.systemId) || RubricaComune.RubricaServices.GetElementoRubricaComune(infoUtente, senderCode, false) == null) { throw new SenderNotInteroperableException(); } SenderInfo senderInfo = new SenderInfo() { AdministrationId = infoUtente.idAmministrazione, //Code = String.Format("{0}-{1}", // ((ProtocolloUscita)schedaDocumento.protocollo).mittente.codiceAmm, // ((ProtocolloUscita)schedaDocumento.protocollo).mittente.descrizione), Code = senderCode, Url = InteroperabilitaSemplificataManager.GetUrl(infoUtente.idAmministrazione), UserId = infoUtente.userId, FileManagerUrl = InteroperabilitaSemplificataManager.GetFileManagerUrl(schedaDocumento.registro.idAmministrazione) }; return(senderInfo); }
/// <summary> /// Metodo per l'invio della ricevuta di conferma ricezione /// </summary> /// <param name="senderRecordInfo">Informazioni sul protocollo mittente</param> /// <param name="receiverRecordInfo">Informaizoni sul protocollo destinatario</param> /// <param name="senderUrl">Url del mittente della richiesta di interoperabilità</param> /// <param name="idProfile">Id del documento creato a seguito della richiesta di interoperabilità</param> /// <param name="userId">User id dell'utente mittente della ricevuta</param> /// <param name="adminId">Id dell'amministrazione mittente</param> /// <param name="receiverCode">Codice del destinatario per cui generare la ricevuta</param> internal static void SendProof(RecordInfo senderRecordInfo, RecordInfo receiverRecordInfo, String senderUrl, String idProfile, String userId, String adminId, String receiverCode) { InteroperabilityController interoperabilityController = new InteroperabilityController(); try { // Invio della ricevuta al mittente try { interoperabilityController.AnalyzeDocumentReceivedProof( new Interoperability.Domain.RecordInfo() { AdministrationCode = senderRecordInfo.AdministrationCode, AOOCode = senderRecordInfo.AOOCode, RecordDate = senderRecordInfo.RecordDate, RecordNumber = senderRecordInfo.RecordNumber }, new Interoperability.Domain.RecordInfo() { AdministrationCode = receiverRecordInfo.AdministrationCode, AOOCode = receiverRecordInfo.AOOCode, RecordDate = receiverRecordInfo.RecordDate, RecordNumber = receiverRecordInfo.RecordNumber }, senderUrl, InteroperabilitaSemplificataManager.GetUrl(adminId), receiverCode); } catch (Exception e) { logger.Error("Errore durante l'invio della ricevuta di conferma ricezione al mittente: " + e.Message); SimplifiedInteroperabilityLogAndRegistryManager.InsertItemInLog(idProfile, true, String.Format("Errore durante l'invio della ricevuta di conferma ricezione al mittente da parte dell'utente {0}", userId)); logger.ErrorFormat("Errore durante l'invio della ricevuta di conferma ricezione al mittente da parte dell'utente {0}", userId); } // Aggiunta voce di log SimplifiedInteroperabilityLogAndRegistryManager.InsertItemInLog(idProfile, false, String.Format("Ricevuta di conferma di ricezione al mittente con indirizzo '{0}' da parte dell'utente {1} inviata correttamente.", senderUrl, userId)); } catch (Exception e) { SimplifiedInteroperabilityLogAndRegistryManager.InsertItemInLog(idProfile, true, String.Format("Errore durante l'invio della ricevuta di conferma di ricezione al mittente con indirizzo '{0}' da parte dell'utente {1}", senderUrl, userId)); logger.Error( String.Format("Errore durante l'invio della ricevuta di conferma di ricezione al mittente con indirizzo '{0}' da parte dell'utente {1}", senderUrl, userId), e); } }
/// <summary> /// Metodo per l'aggiunta della ricevuta di avvenuta consegna al documento spedito /// </summary> /// <param name="documentId">Id del documento cui aggiungere l'allegato</param> /// <param name="messageId">Identificativo del messaggio ricevuto</param> /// <param name="data">Contenuto della ricevuta</param> /// <param name="proofDate">Data di generazione della ricevuta</param> /// <param name="receiverCode">Codice del destinatario raggiunto</param> private static void AddProofToDocument(String documentId, String messageId, byte[] data, DateTime proofDate, String receiverCode) { SimplifiedInteroperabilityLogAndRegistryManager.InsertItemInLog(documentId, false, "Aggiunta della Ricevuta di avvenuta consegna al documento"); String authorId, creatorRole; using (DocsPaDB.Query_DocsPAWS.InteroperabilitaSemplificata dbInterop = new DocsPaDB.Query_DocsPAWS.InteroperabilitaSemplificata()) { // Recupero dell'id del documento e degli id di utente e ruolo con cui creare l'allegato dbInterop.LoadDataForDeliveredProof(documentId, out authorId, out creatorRole); // Recupero delle informazioni sull'utente Utente user = UserManager.getUtenteById(authorId); user.dst = UserManager.getSuperUserAuthenticationToken(); Ruolo role = UserManager.getRuoloById(creatorRole); InfoUtente userInfo = UserManager.GetInfoUtente(user, role); // Creazione e aggiunta dell'allegato AddAttachmentToDocument(documentId, data, userInfo, messageId, proofDate, receiverCode, InteroperabilitaSemplificataManager.GetUrl(userInfo.idAmministrazione)); } }
/// <summary> /// Metodo per il salvataggio dei dati di una ricevuta di eccezione o di annullamento /// </summary> /// <param name="senderRecordInfo">Informazioni sul protocollo mittente</param> /// <param name="receiverRecordInfo">Informazioni sul protocollo destinatario</param> /// <param name="reason">Ragione di annullamento o dettaglio dell'eccezione</param> /// <param name="receiverUrl">Url del destinatario</param> /// <param name="droppedProof">Flag utilizzato per indicare se si tratta di una ricevuta di annullamento</param> /// <param name="receiverCode">Codice del destinatario</param> public static void SaveProofData(RecordInfo senderRecordInfo, RecordInfo receiverRecordInfo, string reason, string receiverUrl, bool droppedProof, String receiverCode) { using (DocsPaDB.Query_DocsPAWS.InteroperabilitaSemplificata interopDb = new DocsPaDB.Query_DocsPAWS.InteroperabilitaSemplificata()) { bool retVal = interopDb.SaveDocumentDroppedOrExceptionProofData(senderRecordInfo, receiverRecordInfo, reason, receiverUrl, droppedProof, receiverCode); SimplifiedInteroperabilityLogAndRegistryManager.InsertItemInLog(String.Empty, !retVal, String.Format("Salvataggio delle informazioni sulla ricevuta di {0} relativa al protocollo {1} creato in data {2}, {3}", droppedProof ? "annullamento" : "eccezione", senderRecordInfo.RecordNumber, senderRecordInfo.RecordDate, retVal ? "riuscito correttamente" : "non riuscito")); logger.DebugFormat("Salvataggio delle informazioni sulla ricevuta di {0}, per l'interoperabilità semplificata, relativa al protocollo {1} creato in data {2}, {3}", droppedProof ? "annullamento" : "eccezione", senderRecordInfo.RecordNumber, senderRecordInfo.RecordDate, retVal ? "riuscito correttamente" : "non riuscito"); // Recupero dell'id del documento cui si riferisce l'eccezione String idProfile = String.Empty; using (DocsPaDB.Query_DocsPAWS.Documenti docDb = new DocsPaDB.Query_DocsPAWS.Documenti()) { idProfile = docDb.GetIdProfileFromProtoInfo(senderRecordInfo.RecordDate, senderRecordInfo.RecordNumber, senderRecordInfo.AOOCode, senderRecordInfo.AdministrationCode); } // Se è una eccezione, viene inserita una riga nel registro delle ricevute if (!droppedProof) { SaveExceptionInRegistry( String.Empty, InteroperabilitaSemplificataManager.GetUrl(OrganigrammaManager.GetIDAmm(senderRecordInfo.AdministrationCode)), DateTime.Now, idProfile, receiverCode, reason); String userId = BusinessLogic.Documenti.DocManager.GetDocumentAttribute( senderRecordInfo.RecordDate, senderRecordInfo.RecordNumber, senderRecordInfo.AOOCode, senderRecordInfo.AdministrationCode, DocsPaDB.Query_DocsPAWS.Documenti.DocumentAttribute.UserId); //Recupero il ruolo che ha effettuato l'ultima spedizione IS, dallo storico delle spedizioni. ArrayList listHistorySendDoc = SpedizioneManager.GetElementiStoricoSpedizione(idProfile); if (listHistorySendDoc != null && listHistorySendDoc.Count > 0) { Object lastSendIs = (from record in listHistorySendDoc.ToArray() where ((ElStoricoSpedizioni)record).Mail_mittente.Equals("N.A.") select record).ToList().OrderBy(z => ((ElStoricoSpedizioni)z).Id).LastOrDefault(); Ruolo role = UserManager.getRuoloByIdGruppo(((ElStoricoSpedizioni)lastSendIs).IdGroupSender); Utente user = UserManager.getUtente(userId); // LOG per documento string desc = "Notifica di eccezione: " + reason.Replace("’", "'") + "<br/>Destinatario spedizione: " + receiverCode; BusinessLogic.UserLog.UserLog.WriteLog(user.userId, user.idPeople, role.idGruppo, user.idAmministrazione, "EXCEPTION_SEND_SIMPLIFIED_INTEROPERABILITY", idProfile, desc, DocsPaVO.Logger.CodAzione.Esito.OK, null, "1"); } } } }