/// <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); }