public static TipoNotifica getTipoNotifica(string systemIdTipoNotifica)
        {
            try
            {
                TipoNotifica tiponotifica = null;

                if (string.IsNullOrEmpty(systemIdTipoNotifica))
                {
                    return(tiponotifica);
                }

                try
                {
                    tiponotifica = _ws.getTipoNotifica(systemIdTipoNotifica);
                }
                catch (Exception e)
                {
                    throw SoapExceptionParser.GetOriginalException(e);
                }

                return(tiponotifica);
            }
            catch (System.Exception ex)
            {
                UIManager.AdministrationManager.DiagnosticError(ex);
                return(null);
            }
        }
Ejemplo n.º 2
0
        public bool inserisciTipoNotifica(TipoNotifica tipoNotifica)
        {
            bool retval = false;

            DocsPaUtils.Query q = DocsPaUtils.InitQuery.getInstance().getQuery("I_DPA_TIPO_NOTIFICA");


            if (dbType.ToUpper().Equals("ORACLE"))
            {
                q.setParam("var_systemid", DocsPaDbManagement.Functions.Functions.GetSystemIdColName());
                q.setParam("systemid", DocsPaDbManagement.Functions.Functions.GetSystemIdNextVal("DPA_TIPO_NOTIFICA"));
            }
            else
            {
                q.setParam("var_systemid", string.Empty);
                q.setParam("systemid", String.Empty);
            }
            q.setParam("codicenotifica", tipoNotifica.codiceNotifica);
            q.setParam("descrizione", tipoNotifica.descrizioneNotifica);

            logger.Debug("inserimento in tipo_notifica: " + q.getSQL());
            retval = ExecuteNonQuery(q.getSQL());

            return(retval);
        }
Ejemplo n.º 3
0
        public TipoNotifica ricercaTipoNotificheBySystemId(string systemId)
        {
            TipoNotifica tipoNotifica = null;

            DocsPaUtils.Query q = DocsPaUtils.InitQuery.getInstance().getQuery("S_DPA_TIPO_NOTIFICA_BY_SYSTEM_ID");
            q.setParam("systemid", systemId);

            logger.Debug("ricerca tipo notifica by system id: " + q.getSQL());

            using (IDataReader reader = ExecuteReader(q.getSQL()))
            {
                if (reader.FieldCount > 0)
                {
                    if (reader.Read())
                    {
                        tipoNotifica = new TipoNotifica();
                        tipoNotifica.idTipoNotifica      = reader["SYSTEM_ID"].ToString();
                        tipoNotifica.codiceNotifica      = reader["VAR_CODICE_NOTIFICA"].ToString();
                        tipoNotifica.descrizioneNotifica = reader["VAR_DESCRIZIONE"].ToString();
                    }
                }
            }

            return(tipoNotifica);
        }
Ejemplo n.º 4
0
        private void GetData(string systemId)
        {
            TipoNotifica data = null;

            // Caricamento etichette relative all'amministrazione richiesta
            data = ricercaTipoNotificaBySystemId(systemId);
            _intance.Add(systemId, data);
        }
Ejemplo n.º 5
0
        public bool SendNotifica(PERSONA mittente, PERSONA destinatario, TipoNotifica messaggio, ControllerContext controller, string view, object datiNotifica, ATTIVITA attivitaMittente = null, DatabaseContext db = null)
        {
            bool nuovaConnessione = true;

            try
            {
                if (db != null && db.Database.Connection.State == System.Data.ConnectionState.Open)
                {
                    nuovaConnessione = false;
                }

                NOTIFICA notifica = new NOTIFICA();
                notifica.ID_PERSONA = mittente.ID;
                if (attivitaMittente != null)
                {
                    notifica.ID_ATTIVITA = attivitaMittente.ID;
                }
                notifica.ID_PERSONA_DESTINATARIO = destinatario.ID;
                notifica.MESSAGGIO        = (int)messaggio;
                notifica.STATO            = (int)StatoNotifica.ATTIVA;
                notifica.DATA_INSERIMENTO = DateTime.Now;
                if (nuovaConnessione)
                {
                    db = new DatabaseContext();
                }

                db.NOTIFICA.Add(notifica);
                return(db.SaveChanges() > 0);
            }
            catch (Exception eccezione)
            {
                //Elmah.ErrorSignal.FromCurrentContext().Raise(eccezione);
                LoggatoreModel.Errore(eccezione);
            }
            finally
            {
                if (nuovaConnessione && db != null)
                {
                    db.Database.Connection.Close();
                }

                try
                {
                    string indirizzoEmail = destinatario.PERSONA_EMAIL.SingleOrDefault(e => e.TIPO == (int)TipoEmail.Registrazione).EMAIL;
                    // modificare oggetto recuperando dal tipo notifica la stringa
                    string oggetto = Components.EnumHelper <TipoNotifica> .GetDisplayValue(messaggio);

                    SendEmail(indirizzoEmail, oggetto, controller, view, datiNotifica);
                    SendChat("", oggetto);
                }
                catch (Exception eccezione)
                {
                    //Elmah.ErrorSignal.FromCurrentContext().Raise(eccezione);
                    LoggatoreModel.Errore(eccezione);
                }
            }
            return(false);
        }
Ejemplo n.º 6
0
        public static bool SetInstance(TipoNotifica tiponotifica, string systemId)
        {
            bool         success = false;
            TipoNotifica data    = null;

            _intance.Remove(systemId);
            data = ricercaTipoNotificaBySystemId(systemId);
            if (data != null)
            {
                success = true;
            }
            _intance.Add(systemId, tiponotifica);
            return(success);
        }
Ejemplo n.º 7
0
        public bool updateTipoNotifica(TipoNotifica tipoNotifica)
        {
            bool retval = false;

            DocsPaUtils.Query q = DocsPaUtils.InitQuery.getInstance().getQuery("U_DPA_TIPO_NOTIFICA");
            q.setParam("systemid", tipoNotifica.idTipoNotifica);
            q.setParam("codicenotifica", tipoNotifica.codiceNotifica);
            q.setParam("descrizione", tipoNotifica.descrizioneNotifica);

            logger.Debug("update tipo_notifica: " + q.getSQL());
            retval = ExecuteNonQuery(q.getSQL());

            return(retval);
        }
Ejemplo n.º 8
0
        public static TipoNotifica ricercaTipoNotificaByCodice(string codiceNotifica)
        {
            TipoNotifica retval = null;

            DocsPaDB.Query_DocsPAWS.InteroperabilitaDatiCert daticertDB = new DocsPaDB.Query_DocsPAWS.InteroperabilitaDatiCert();
            try
            {
                retval = daticertDB.ricercaTipoNotificheByCodice(codiceNotifica);
            }
            catch (Exception e)
            {
                logger.Error("errore durante l'inserimento del tipo di notifica - errore: " + e.Message);
            }

            return(retval);
        }
Ejemplo n.º 9
0
        public static TipoNotifica GetInstance(string systemId)
        {
            if (instance == null)
            {
                instance = new InteroperabilitaManager();
                instance.initializeInstance(systemId);
            }
            if (instance != null && !_intance.ContainsKey(systemId))
            {
                lock (_intance)
                {
                    instance.initializeInstance(systemId);
                }
            }
            TipoNotifica tipologia = _intance[systemId];

            return(tipologia);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Metodo per inserire la ricevuta nel registro delle ricevute
        /// </summary>
        /// <param name="attachment">Allegato da aggiungere</param>
        /// <param name="messageId">Identificativo del messaggio di interoperabilità</param>
        /// <param name="receiverCode">Codice del destinatario per cui è stata generata la ricevuta</param>
        /// <param name="senderUrl">Url del mittente della spedizione</param>
        /// <param name="proofDate">Data di generazione della ricevuta</param>
        /// <param name="documentId">Id del documento cui aggiungere l'allegato</param>
        private static void SaveProofInRegistry(Allegato attachment, String messageId, String receiverCode, String senderUrl, DateTime proofDate, String documentId)
        {
            TipoNotifica not = InteroperabilitaManager.ricercaTipoNotificaByCodice("avvenuta-consegna");

            InteroperabilitaManager.inserimentoNotifica(
                new DocsPaVO.DatiCert.Notifica()
                {
                    consegna = "1",
                    data_ora = proofDate.ToString("dd/MM/yyyy HH:mm:ss"),
                    destinatario = receiverCode,
                    docnumber = documentId,
                    idTipoNotifica = not.idTipoNotifica,
                    mittente = senderUrl,
                    msgid = messageId,
                    risposte = String.Empty,
                    oggetto = "Ricevuta di avvenuta consegna"
                },
                attachment.versionId);
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Metodo per il salvataggio dell'eccezione nel log relativo all'IS
        /// </summary>
        /// <param name="messageId">Identificativo del messaggio</param>
        /// <param name="senderUrl">Url del mittente</param>
        /// <param name="proofDate">Data di generazione della ricevuta</param>
        /// <param name="documentId">Id del documento</param>
        /// <param name="receiverCode">Codice del destinatario</param>
        /// <param name="reason">Ragione di annullamento o dettaglio dell'eccezione</param>
        private static void SaveExceptionInRegistry(String messageId, String senderUrl, DateTime proofDate, String documentId, String receiverCode, String reason)
        {
            TipoNotifica not = InteroperabilitaManager.ricercaTipoNotificaByCodice("eccezione");

            InteroperabilitaManager.inserimentoNotifica(
                new DocsPaVO.DatiCert.Notifica()
            {
                consegna       = "1",
                data_ora       = proofDate.ToString("dd/MM/yyyy HH:mm:ss"),
                destinatario   = receiverCode,
                docnumber      = documentId,
                idTipoNotifica = not.idTipoNotifica,
                mittente       = senderUrl,
                msgid          = messageId,
                risposte       = String.Empty,
                oggetto        = reason
            },
                String.Empty);
        }
Ejemplo n.º 12
0
        public static TipoNotifica getTipoNotifica(string systemIdTipoNotifica)
        {
            TipoNotifica tiponotifica = null;

            if (string.IsNullOrEmpty(systemIdTipoNotifica))
            {
                return(tiponotifica);
            }

            try
            {
                tiponotifica = ws.getTipoNotifica(systemIdTipoNotifica);
            }
            catch (Exception e)
            {
                logger.Debug("errore in InetroperabilitaManager - getNotifica: " + e.Message);
            }

            return(tiponotifica);
        }
Ejemplo n.º 13
0
        public static bool inserimentoTipoNotifica(string codiceNotifica)
        {
            bool retval = false;

            DocsPaDB.Query_DocsPAWS.InteroperabilitaDatiCert daticertDB = new DocsPaDB.Query_DocsPAWS.InteroperabilitaDatiCert();
            TipoNotifica tipoNotifica = new TipoNotifica();

            tipoNotifica.codiceNotifica      = codiceNotifica;
            tipoNotifica.descrizioneNotifica = "email di " + codiceNotifica;

            try
            {
                retval = daticertDB.inserisciTipoNotifica(tipoNotifica);
            }
            catch (Exception e)
            {
                logger.Error("errore durante l'inserimento del tipo di notifica - errore: " + e.Message);
            }

            return(retval);
        }
Ejemplo n.º 14
0
        public TipoNotifica ricercaTipoNotificheByCodice(string codiceNotifica)
        {
            TipoNotifica tipoNotifica = null;

            DocsPaUtils.Query q = DocsPaUtils.InitQuery.getInstance().getQuery("S_DPA_TIPO_NOTIFICA_BY_CODICE");
            q.setParam("codicenotifica", codiceNotifica);

            logger.Debug("ricerca tipo notifica by codice : " + q.getSQL());
            logger.Debug("execute reader");

            using (DocsPaDB.DBProvider dbProvider = new DBProvider())
            {
                using (IDataReader reader = dbProvider.ExecuteReader(q.getSQL()))
                {
                    logger.Debug("fieldCount: " + reader.FieldCount);

                    if (reader.FieldCount > 0)
                    {
                        if (reader.Read())
                        {
                            tipoNotifica = new TipoNotifica();
                            logger.Debug("SYSTEM_ID: " + reader["SYSTEM_ID"].ToString());
                            tipoNotifica.idTipoNotifica = reader["SYSTEM_ID"].ToString();
                            logger.Debug("VAR_CODICE_NOTIFICA: " + reader["VAR_CODICE_NOTIFICA"].ToString());
                            tipoNotifica.codiceNotifica = reader["VAR_CODICE_NOTIFICA"].ToString();
                            logger.Debug("VAR_DESCRIZIONE: " + reader["VAR_DESCRIZIONE"].ToString());
                            tipoNotifica.descrizioneNotifica = reader["VAR_DESCRIZIONE"].ToString();
                            logger.Debug("tipoNotifica creato");
                        }
                        logger.Debug("fuori dal primo if");
                    }
                    logger.Debug("fuori dal secondo if");
                }
                logger.Debug("fuori dal primo using");
            }
            logger.Debug("fuori dal secondo using");
            return(tipoNotifica);
        }
Ejemplo n.º 15
0
        public TipoNotifica[] ricercaTipoNotifiche()
        {
            DocsPaUtils.Query   q            = DocsPaUtils.InitQuery.getInstance().getQuery("S_DPA_TIPO_NOTIFICA");
            List <TipoNotifica> Tiponotifica = new List <TipoNotifica>();

            logger.Debug("ricerca tipo notifica " + q.getSQL());

            using (IDataReader reader = ExecuteReader(q.getSQL()))
            {
                if (reader.FieldCount > 0)
                {
                    if (reader.Read())
                    {
                        TipoNotifica tipoNotifica = new TipoNotifica();
                        tipoNotifica.idTipoNotifica      = reader["SYSTEM_ID"].ToString();
                        tipoNotifica.codiceNotifica      = reader["VAR_CODICE_NOTIFICA"].ToString();
                        tipoNotifica.descrizioneNotifica = reader["VAR_DESCRIZIONE"].ToString();
                        Tiponotifica.Add(tipoNotifica);
                    }
                }
            }

            return(Tiponotifica.ToArray());
        }
Ejemplo n.º 16
0
        /// <summary>
        /// PEC 4 Modifica Maschera Caratteri
        /// Metodo di aggiornamento della status mask a partire dalla notifica.
        ///
        /// </summary>
        /// <returns></returns>
        public static bool AggiornaStatusMask(Notifica notifica)
        {
            bool retval = false;

            logger.Debug("Inserita la notifica, aggiorno la status-mask");
            try
            {
                // eliminareEccezione: quando l'esito è OK, elimino una possibile eccezione preesistente.
                bool eliminareEccezione = false;
                DocsPaDB.Query_DocsPAWS.InteroperabilitaDatiCert interop = new DocsPaDB.Query_DocsPAWS.InteroperabilitaDatiCert();
                TipoNotifica tipoNot = interop.ricercaTipoNotificheBySystemId(notifica.idTipoNotifica);
                DocsPaVO.StatoInvio.StatoInvio statoInvio = interop.getStatoInvioFromAddressAndProfile(notifica.destinatario, notifica.docnumber);
                if (statoInvio != null)
                {
                    string statusmask = "";
                    if (!string.IsNullOrEmpty(statoInvio.statusMask))
                    {
                        statusmask = statoInvio.statusMask;
                        char[] status_c_mask = statusmask.ToCharArray();

                        if (tipoNot.codiceNotifica == "accettazione")
                        {
                            status_c_mask[1] = 'V';
                            if (statoInvio.tipoCanale == "MAIL")
                            {
                                if (notifica.tipoDestinatario == "certificato")
                                {
                                    if (status_c_mask[2] != 'V' || status_c_mask[2] == 'A' || status_c_mask[2] == 'N')
                                    {
                                        status_c_mask[2] = 'A';
                                    }
                                }
                                else
                                {
                                    status_c_mask[0]   = 'V';
                                    eliminareEccezione = true;
                                }
                            }
                        }
                        else if (tipoNot.codiceNotifica == "non-accettazione")
                        {
                            status_c_mask[0] = 'X';
                            status_c_mask[1] = 'X';
                            status_c_mask[2] = 'N';
                            status_c_mask[3] = 'N';
                            status_c_mask[4] = 'N';
                            status_c_mask[5] = 'N';
                            status_c_mask[6] = 'N';
                        }
                        else if (tipoNot.codiceNotifica == "DSN" || tipoNot.codiceNotifica == "errore")
                        {
                            status_c_mask[0] = 'X';
                            status_c_mask[2] = 'X';
                            status_c_mask[3] = 'N';
                            status_c_mask[4] = 'N';
                            status_c_mask[5] = 'N';
                            status_c_mask[6] = 'V';
                        }
                        else if (tipoNot.codiceNotifica == "avvenuta-consegna")
                        {
                            status_c_mask[2] = 'V';
                            status_c_mask[6] = 'X';
                            if (statoInvio.tipoCanale == "MAIL")
                            {
                                status_c_mask[0]   = 'V';
                                eliminareEccezione = true;
                            }
                        }
                        else if (tipoNot.codiceNotifica == "errore-consegna" || tipoNot.codiceNotifica == "preavviso-errore-consegna")
                        {
                            status_c_mask[0] = 'X';
                            status_c_mask[2] = 'X';
                            status_c_mask[3] = 'N';
                            status_c_mask[4] = 'N';
                            status_c_mask[5] = 'N';
                            status_c_mask[6] = 'N';
                            InteroperabilitaEccezioni.AggiornaDpa_StatoInvioConEccezione(notifica.destinatario, notifica.docnumber, "Errore di consegna verso la casella PEC.");
                        }
                        statusmask = new string(status_c_mask);
                    }
                    else
                    {
                        if (tipoNot.codiceNotifica == "accettazione")
                        {
                            if (statoInvio.tipoCanale == "MAIL")
                            {
                                if (notifica.tipoDestinatario == "certificato")
                                {
                                    statusmask = "AVANNNN";
                                }
                                else
                                {
                                    statusmask         = "VVNNNNN";
                                    eliminareEccezione = true;
                                }
                            }
                        }
                        else if (tipoNot.codiceNotifica == "non-accettazione")
                        {
                            statusmask = "XXNNNNN";
                        }
                        else if (tipoNot.codiceNotifica == "DSN" || tipoNot.codiceNotifica == "errore")
                        {
                            statusmask = "XVXNNNV";
                        }
                        else if (tipoNot.codiceNotifica == "avvenuta-consegna")
                        {
                            statusmask = "AVVAAAN";
                            if (statoInvio.tipoCanale == "MAIL")
                            {
                                statusmask         = "VVVNNNN";
                                eliminareEccezione = true;
                            }
                        }
                        else if (tipoNot.codiceNotifica == "errore-consegna" || tipoNot.codiceNotifica == "preavviso-errore-consegna")
                        {
                            statusmask = "XVXNNNN";
                            InteroperabilitaEccezioni.AggiornaDpa_StatoInvioConEccezione(notifica.destinatario, notifica.docnumber, "Errore di consegna verso la casella PEC.");
                        }
                    }
                    interop.AggiornaStatusMaskFromAddressAndProfile(notifica.destinatario, notifica.docnumber, statusmask, eliminareEccezione);
                }
                else
                {
                    logger.Debug("Stato invio non trovato");
                }
            }
            catch (Exception ex)
            {
                logger.ErrorFormat("Errore nell'aggiornamento della status mask: Messaggio {0} - StackTrace {1}", ex.Message, ex.StackTrace);
                retval = false;
            }

            return(retval);
        }