Пример #1
0
        /// <summary>
        /// Metodo per l'invio della ricevuta
        /// </summary>
        /// <param name="sender">Informazioni sul mittente della spedizione</param>
        /// <param name="receiver">Informazioni sul destinatario della spedizione</param>
        /// <param name="senderUrl">Url del mittente</param>
        /// <param name="reason">Ragione di annullamento o dettaglio dell'eccezione</param>
        /// <param name="adminId">Id dell'amministrazione</param>
        /// <param name="dropped">Flag utilizzato per indicare se si deve inviare una richiesta di eliminazione</param>
        /// <param name="receiverCode">Codice del destinatario</param>
        private static void SendProof(RecordInfo sender, RecordInfo receiver, string senderUrl, String reason, String adminId, bool dropped, String receiverCode)
        {
            InteroperabilityController interoperabilityController = new InteroperabilityController();

            interoperabilityController.AnalyzeDocumentDroppedOrErrorProof(
                new Interoperability.Domain.RecordInfo()
            {
                AdministrationCode = sender.AdministrationCode,
                AOOCode            = sender.AOOCode,
                RecordDate         = sender.RecordDate,
                RecordNumber       = sender.RecordNumber
            },
                new Interoperability.Domain.RecordInfo()
            {
                AdministrationCode = receiver.AdministrationCode,
                AOOCode            = receiver.AOOCode,
                RecordDate         = receiver.RecordDate,
                RecordNumber       = receiver.RecordNumber
            },
                reason,
                InteroperabilitaSemplificataManager.GetUrl(adminId),
                senderUrl,
                dropped ? Interoperability.Domain.OperationDiscriminator.Drop : Interoperability.Domain.OperationDiscriminator.Error,
                receiverCode);
        }
Пример #2
0
        /// <summary>
        /// Metodo per la creazione delle informazioni sul mittente della spedizione
        /// </summary>
        /// <param name="schedaDocumento">Documento da cui estrarre le informazioni</param>
        /// <param name="infoUtente">Informazioni sull'utente richiedente</param>
        /// <param name="destinatari">Lista dei destinatari della spedizione</param>
        /// <returns>Informazioni sul mittente della spedizione</returns>
        private SenderInfo CreateSendersInfo(SchedaDocumento schedaDocumento, InfoUtente infoUtente, Corrispondente[] destinatari)
        {
            // Recupero del codice del mittente
            String senderCode = InteroperabilitaSemplificataManager.LoadSenderInfoFromUoId(((ProtocolloUscita)schedaDocumento.protocollo).mittente.systemId);

            // Se il mittente non è interoperante o se non è presente in RC, non si può procedere con la spedizione
            if (!InteroperabilitaSemplificataManager.IsCorrEnabledToInterop(
                    ((ProtocolloUscita)schedaDocumento.protocollo).mittente.systemId) ||
                RubricaComune.RubricaServices.GetElementoRubricaComune(infoUtente, senderCode, false) == null)
            {
                throw new SenderNotInteroperableException();
            }

            SenderInfo senderInfo = new SenderInfo()
            {
                AdministrationId = infoUtente.idAmministrazione,
                //Code = String.Format("{0}-{1}",
                //    ((ProtocolloUscita)schedaDocumento.protocollo).mittente.codiceAmm,
                //    ((ProtocolloUscita)schedaDocumento.protocollo).mittente.descrizione),
                Code           = senderCode,
                Url            = InteroperabilitaSemplificataManager.GetUrl(infoUtente.idAmministrazione),
                UserId         = infoUtente.userId,
                FileManagerUrl = InteroperabilitaSemplificataManager.GetFileManagerUrl(schedaDocumento.registro.idAmministrazione)
            };

            return(senderInfo);
        }
Пример #3
0
        /// <summary>
        /// Metodo per l'invio della ricevuta di conferma ricezione
        /// </summary>
        /// <param name="senderRecordInfo">Informazioni sul protocollo mittente</param>
        /// <param name="receiverRecordInfo">Informaizoni sul protocollo destinatario</param>
        /// <param name="senderUrl">Url del mittente della richiesta di interoperabilità</param>
        /// <param name="idProfile">Id del documento creato a seguito della richiesta di interoperabilità</param>
        /// <param name="userId">User id dell'utente mittente della ricevuta</param>
        /// <param name="adminId">Id dell'amministrazione mittente</param>
        /// <param name="receiverCode">Codice del destinatario per cui generare la ricevuta</param>
        internal static void SendProof(RecordInfo senderRecordInfo, RecordInfo receiverRecordInfo, String senderUrl, String idProfile, String userId, String adminId, String receiverCode)
        {
            InteroperabilityController interoperabilityController = new InteroperabilityController();

            try
            {
                // Invio della ricevuta al mittente
                try
                {
                    interoperabilityController.AnalyzeDocumentReceivedProof(
                        new Interoperability.Domain.RecordInfo()
                    {
                        AdministrationCode = senderRecordInfo.AdministrationCode,
                        AOOCode            = senderRecordInfo.AOOCode,
                        RecordDate         = senderRecordInfo.RecordDate,
                        RecordNumber       = senderRecordInfo.RecordNumber
                    },
                        new Interoperability.Domain.RecordInfo()
                    {
                        AdministrationCode = receiverRecordInfo.AdministrationCode,
                        AOOCode            = receiverRecordInfo.AOOCode,
                        RecordDate         = receiverRecordInfo.RecordDate,
                        RecordNumber       = receiverRecordInfo.RecordNumber
                    },
                        senderUrl,
                        InteroperabilitaSemplificataManager.GetUrl(adminId),
                        receiverCode);
                }
                catch (Exception e)
                {
                    logger.Error("Errore durante l'invio della ricevuta di conferma ricezione al mittente: " + e.Message);
                    SimplifiedInteroperabilityLogAndRegistryManager.InsertItemInLog(idProfile, true,
                                                                                    String.Format("Errore durante l'invio della ricevuta di conferma ricezione al mittente da parte dell'utente {0}", userId));
                    logger.ErrorFormat("Errore durante l'invio della ricevuta di conferma ricezione al mittente da parte dell'utente {0}", userId);
                }

                // Aggiunta voce di log
                SimplifiedInteroperabilityLogAndRegistryManager.InsertItemInLog(idProfile, false,
                                                                                String.Format("Ricevuta di conferma di ricezione al mittente con indirizzo '{0}' da parte dell'utente {1} inviata correttamente.",
                                                                                              senderUrl, userId));
            }
            catch (Exception e)
            {
                SimplifiedInteroperabilityLogAndRegistryManager.InsertItemInLog(idProfile, true,
                                                                                String.Format("Errore durante l'invio della ricevuta di conferma di ricezione al mittente con indirizzo '{0}' da parte dell'utente {1}",
                                                                                              senderUrl, userId));

                logger.Error(
                    String.Format("Errore durante l'invio della ricevuta di conferma di ricezione al mittente con indirizzo '{0}' da parte dell'utente {1}",
                                  senderUrl, userId),
                    e);
            }
        }
Пример #4
0
        /// <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));

            }
        }
Пример #5
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");
                    }
                }
            }
        }