/// <summary> /// Metodo per l'invio della ricevuta di conferma di ricezione /// al mittente del messaggio di interoperabilità /// </summary> /// <param name="idProfile">Id del documento per cui inviare la conferma di ricezione</param> /// <param name="userId">Usr id dell'utente mittente dell'invio della ricevuta</param> /// <param name="adminId">Id dell'amministrazione mittente della ricevuta</param> /// <param name="recCode">Codice del destinatario che invia la conferma di ricezione</param> private static void SendDocumentReceivedProofToSender(String idProfile, String userId, String adminId, String recCode) { logger.DebugFormat("Invio ricevuta di conferma di ricezione per interoperabilità semplificata del documento con id {0}", idProfile); // Recupero delle informazioni sul mittente del documento using (DocsPaDB.Query_DocsPAWS.InteroperabilitaSemplificata dbManager = new DocsPaDB.Query_DocsPAWS.InteroperabilitaSemplificata()) { RecordInfo sender, receiver; String senderUrl, receiverCode; if (dbManager.LoadSenderDocInfo(idProfile, out sender, out receiver, out senderUrl, out receiverCode)) { String rec = recCode; // Se la recCode è vuoto, la notifica viene inviata per tutti i destinatari if (String.IsNullOrEmpty(recCode)) { rec = receiverCode; } // Invio della ricevuta di conferma ricezione SendProof(sender, receiver, senderUrl, idProfile, userId, adminId, rec); } else { SimplifiedInteroperabilityLogAndRegistryManager.InsertItemInLog(idProfile, true, String.Format("Errore nel recupero dei dati per la creazione della ricevuta di conferma ricezione")); logger.ErrorFormat("Errore nel recupero dei dati per la creazione della ricevuta di conferma ricezione per il documento con id {0}", idProfile); } } }
/// <summary> /// Metodo per verificare se un RF compare fra i destinatari di una spedizione per un dato documento. L'individuazione /// si basa sul fatto che nel registro delle richieste di interoperabilità, è presente un campo (ReceiverCode) in cui /// sono riportati tutti i destinatari con il codice nel formato RC, racchiusi fra singoli apici e separati da virgola /// </summary> /// <param name="rfCode">Codice RF da verificare</param> /// <param name="documentId">Id del documento in cui verficare se compare l'RF come destinatario</param> /// <param name="administrationCode">Codice dell'amministrazione</param> /// <returns>Codice del corrispondente del destinatario</returns> internal static String IsRfReceiverOfDocumentTransmission(String rfCode, String documentId, String administrationCode) { // Costruzione del codice del corrispondente String corrCode = String.Format("{0}-{1}", administrationCode, rfCode); using (DocsPaDB.Query_DocsPAWS.InteroperabilitaSemplificata simpDb = new DocsPaDB.Query_DocsPAWS.InteroperabilitaSemplificata()) { if (simpDb.IsCorrInReceivers(documentId, corrCode)) { return(corrCode); } else { return(String.Empty); } } }
/// <summary> /// Metodo per il salvataggio delle informazioni su una ricevuta di conferma di ricezione /// </summary> /// <param name="senderRecordInfo">Informazioni sul protocollo mittente</param> /// <param name="receiverRecordInfo">Informaizoni sul protocollo destinatario</param> /// <param name="receiverUrl">Url del destinatario della spedizione</param> /// <param name="receiverCode">Codice del destinatario che ha inviato la conferma di ricezione</param> public static void SaveReceivedProofData( RecordInfo senderRecordInfo, RecordInfo receiverRecordInfo, String receiverUrl, String receiverCode) { using (DocsPaDB.Query_DocsPAWS.InteroperabilitaSemplificata interopDb = new DocsPaDB.Query_DocsPAWS.InteroperabilitaSemplificata()) { bool retVal = interopDb.SaveReceivedProofData(senderRecordInfo, receiverRecordInfo, receiverUrl, receiverCode); SimplifiedInteroperabilityLogAndRegistryManager.InsertItemInLog("", !retVal, String.Format("Salvataggio delle informazioni sulla ricevuta di conferma di ricezione relativa al protocollo {0} creato in data {1}, {2}", senderRecordInfo.RecordNumber, senderRecordInfo.RecordDate, retVal ? "riuscito correttamente" : "non riuscito")); logger.DebugFormat("Salvataggio delle informazioni sulla ricevuta di conferma di ricezione, per l'interoperabilità semplificata, relativa al protocollo {0} creato in data {1}, {2}", senderRecordInfo.RecordNumber, senderRecordInfo.RecordDate, retVal ? "riuscito correttamente" : "non riuscito"); } }
/// <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)); } }