Beispiel #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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
        /// <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);
        }
Beispiel #5
0
        /// <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);
        }
Beispiel #6
0
        /// <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");
                    }
                }
            }
        }