/// <summary> /// Metodo per il caricamento delle informazioni sui destinatari interni cui effettuare le trasmissioni del /// documento. /// </summary> /// <param name="settings">Impostazioni del registro per cui caricare i destinatari della trasmissione interna</param> /// <param name="privateDocument">Flag utilizzato per indicare se il documento è stato rivevuto come privato</param> /// <param name="receiversInfo">Lista dei destinatari della spedizione per cui caricare i destinatari interni cui trasmettere il documento</param> /// <param name="uneachableReceivers">Lista dei destinatari non raggiungibili (per il registro / RF non esiste alcun ruolo con la microfunzione per la ricezione della trasmissione del predisposto</param> /// <returns>Lista dei corrispondenti raggiunti dalla spedizione</returns> internal static List <Corrispondente> LoadTransmissionReceivers(InteroperabilitySettings settings, bool privateDocument, List <ReceiverInfo> receiversInfo, out List <ReceiverInfo> uneachableReceivers) { logger.Debug("RAFFREDDORE - START"); logger.Debug("RAFFREDDORE - private document " + privateDocument.ToString()); List <Corrispondente> receivers = new List <Corrispondente>(); List <Corrispondente> tempReceivers = new List <Corrispondente>(); uneachableReceivers = new List <ReceiverInfo>(); using (DocsPaDB.Query_DocsPAWS.InteroperabilitaSemplificata interopDB = new DocsPaDB.Query_DocsPAWS.InteroperabilitaSemplificata()) { foreach (ReceiverInfo receiver in receiversInfo) { tempReceivers = new List <Corrispondente>(); // Il codice del corrispondente pubblicato in Rubrica Comune è composto da CodiceAmministrazione-CodiceCorrispondente String corrCode = receiver.Code; logger.Debug("RAFFREDDORE - receiver.Code " + corrCode); if (receiver.Code.Length - (receiver.AdministrationCode.Length + 1) > 0) { corrCode = receiver.Code.Substring(receiver.AdministrationCode.Length + 1); } logger.Debug("RAFFREDDORE - receiver.Code " + corrCode); String rfId = RegistriManager.GetSystemIdRFDaDPA_EL_REGISTRI(corrCode); logger.Debug("RAFFREDDORE - rfId " + rfId); // Se il destinatario è una UO, la ricerca viene effettuata sull'id del registro // altirmenti viene effettuata sull'id dell'RF if (!String.IsNullOrEmpty(rfId)) { tempReceivers = interopDB.LoadTransmissionReceiverData(rfId, privateDocument); } else { String corrType = UserManager.GetInternalCorrAttributeByCorrCode( corrCode, DocsPaDB.Query_DocsPAWS.Utenti.CorrAttribute.cha_tipo_urp, OrganigrammaManager.GetIDAmm(receiver.AdministrationCode)); if (!String.IsNullOrEmpty(corrType) && corrType == "U") { tempReceivers = interopDB.LoadTransmissionReceiverData(settings.RegistryId, privateDocument); } } // Aggiunta dei destinatari trovati all'insieme dei destinatari receivers.AddRange(tempReceivers); // Se tempReceivers non contiene elementi significa che per il destinatario analizzato non è stato // trovato alcun destinatario per la trasmissione, quindi per il destinatario analizzato deve essere // generata una ricevuta di mancata consegna if (tempReceivers == null || tempReceivers.Count == 0) { uneachableReceivers.Add(receiver); } } } return(receivers); }
/// <summary> /// Metodo per verificare se un documento è stato ricevuto per IS /// </summary> /// <param name="documentId">Id del documento da verificare</param> /// <returns>Esito della verifica</returns> public static bool IsDocumentReceivedWithIS(String documentId) { bool retVal = false; using (DocsPaDB.Query_DocsPAWS.InteroperabilitaSemplificata interopDb = new DocsPaDB.Query_DocsPAWS.InteroperabilitaSemplificata()) { retVal = interopDb.IsDocumentReceivedWithIS(documentId); } return(retVal); }
/// <summary> /// Metodo per il caricamento delle impostazioni di interoperabilità semplificata per un registro / RF /// </summary> /// <param name="registryId">Id del registro / RF</param> /// <returns>Impostazioni</returns> public static InteroperabilitySettings LoadSettings(String registryId) { logger.DebugFormat("Caricamento impostazioni di interoperabilità semplificata per il registro con id {0}", registryId); InteroperabilitySettings loadedData = null; using (DocsPaDB.Query_DocsPAWS.InteroperabilitaSemplificata interoperabilitaSemplificataDb = new DocsPaDB.Query_DocsPAWS.InteroperabilitaSemplificata()) { loadedData = interoperabilitaSemplificataDb.LoadSettings(registryId); } logger.DebugFormat("Caricamento impostazioni di interoperabilità semplificata per il registro con id {0}, {1}", registryId, loadedData != null ? "effettuato con successo" : "non riuscito."); return(loadedData); }
/// <summary> /// Metodo per la verifica di abilitazione di un oggetto all'IS /// </summary> /// <param name="objectId">Id dell'oggetto</param> /// <param name="rf">Booleano che indica se si desidera verificare un RF</param> /// <returns>Esito della verifica</returns> public static bool IsElementInteroperable(String objectId, bool rf) { logger.DebugFormat("Caricamento stato di abilitazione dell'{0} con id {1} all'interoperabilità semplificata", rf ? "RF" : "UO", objectId); bool retVal = false; using (DocsPaDB.Query_DocsPAWS.InteroperabilitaSemplificata interoperabilitaSemplificataDb = new DocsPaDB.Query_DocsPAWS.InteroperabilitaSemplificata()) { retVal = interoperabilitaSemplificataDb.IsElementInteroperable(objectId, rf); } logger.DebugFormat("Caricamento stato di abilitazione dell'{0} con id {1} all'interoperabilità semplificata, {2}", rf ? "RF" : "UO", objectId, retVal ? "effettuato con successo" : "non riuscito."); return(retVal); }
/// <summary> /// Metodo per il salvataggio delle impostazioni relative all'interoperabilità semplificata /// </summary> /// <param name="interoperabilitySettings">Impostazioni da salvare</param> /// <returns>Esito del sdalvataggio</returns> public static bool SaveSettings(InteroperabilitySettings interoperabilitySettings) { logger.DebugFormat("Salvataggio impostazioni di interoperabilità semplificata per il registro con id {0}", interoperabilitySettings.RegistryId); // Validazione dei dati prima di salvare ValidateData(interoperabilitySettings); bool saved = false; using (DocsPaDB.Query_DocsPAWS.InteroperabilitaSemplificata interoperabilitaSemplificataDb = new DocsPaDB.Query_DocsPAWS.InteroperabilitaSemplificata()) { saved = interoperabilitaSemplificataDb.SaveSettings(interoperabilitySettings); } logger.DebugFormat("Salvataggio impostazioni di interoperabilità semplificata per il registro con id {0}, {1}", interoperabilitySettings.RegistryId, saved ? "effettuato con successo" : "non riuscito."); return(saved); }
/// <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"); } } } }