Пример #1
0
        /// <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);
        }