Exemplo n.º 1
0
		/// <summary>
		/// Oggetto utilizzato per loggare la creazione delle spedizioni e i successivi invii
		/// </summary>
		/// <param name="delivery">Spedizione di riferimento</param>
		/// <param name="testo">Testo da loggare</param>
		/// <param name="nota">Eventuale nota</param>
		public DeliveryLog(DeliveryPo delivery, string testo, string nota = null) : base()
		{
			Testo = testo;
			Nota = nota;
			Data = DateTime.Now;
			Delivery = delivery;

			if(Delivery != null)
			{
				if(Delivery.Logs == null)
					Delivery.Logs = new HashSet<DeliveryLog>();
				Delivery.Logs.Add(this);
			}
		}
Exemplo n.º 2
0
		/// <summary>
		/// Elabora l'oggetto <paramref name="delivery"/> accodando tutti messaggi presenti nella collection Messages
		/// </summary>
		/// <param name="delivery">Oggetto contenente tutti i messaggi da inviare</param>
		public void Send(Delivery delivery)
		{
			var recipients = new List<DeliveryMessagePo>(delivery.Messages.Count);

            DeliveryPo deliveryPo = null;
            if(delivery.Id > 0)
                deliveryPo = _daoFactory.GetDeliveryPoDao().Find(delivery.Id, false);
            if(deliveryPo == null)
			    deliveryPo = new DeliveryPo(delivery.IdAzienda, delivery.Type, recipients, delivery.Sender, delivery.Cc, delivery.Bcc, delivery.ReplyTo, delivery.MaxRetry, delivery.Test);

            foreach (var deliveryMessage in delivery.Messages)
			{
			    var deliveryMessagePo = !string.IsNullOrEmpty(deliveryMessage.EmlFile) ? new DeliveryMessagePo(deliveryPo, deliveryMessage.EmlFile, deliveryMessage.NominativoTo, deliveryMessage.EmailTo, deliveryMessage.ReferenceId) : new DeliveryMessagePo(deliveryPo, deliveryMessage.To, deliveryMessage.Subject, deliveryMessage.Body, deliveryMessage.ReferenceId);
			    recipients.Add(deliveryMessagePo);
			}

		    _daoFactory.GetDeliveryPoDao().SaveOrUpdate(deliveryPo);
			deliveryPo.State = StatoDelivery.DaSpedire;
		    delivery.Id = deliveryPo.Id;

			var log = new DeliveryLog(deliveryPo, $"E' stata accodata una spedizione del tipo '{delivery.Type}' contenente {delivery.Messages.Count} messaggi - #{deliveryPo.Id}");
		}
Exemplo n.º 3
0
        public bool Execute(JobExecutionContext context)
        {
            try
            {
              
                // ==========================================================
                //  Gruppi di aziende
                // ==========================================================
                var gruppiAziende = SferaAziendeCache.Instance.Aziende.GroupBy(item => item.Gruppo);
                foreach (var item in gruppiAziende)
                {
                    _log.DebugFormat("Inizio ALERT PREMIO: {0}", item.Key);
                    var container = getContainerFromKey(item.Key);

                    var daoFactory = container.Resolve<IDaoFactory>();
                    _messageService = container.Resolve<IMessageService>("messageservice.email");
                    _messageService.SetDaoFactory(daoFactory);

                    var impostazioniAzienda = daoFactory.GetImpostazioniAziendaDao().GetAll();
                    var alertDao = daoFactory.GetAlertPremioContrattoDao();
                    var alertColl = alertDao.GetAll();
                    foreach (var alert in alertColl)
                    {
                        if (alert.ToNotify)
                        {
                            try
                            {
                                var impostazioneAzienda = impostazioniAzienda.FirstOrDefault(imp => imp.Azienda.ID == alert.ContrattoRiferimento.CondominioRiferimento.Azienda.ID);
                                if(impostazioneAzienda == null || impostazioneAzienda.AlertScadenzaPremioContrattoAbilitato)
                                    notifySingleAlert(alert, daoFactory);
                            }
                            catch (Exception ex)
                            {
                                _log.ErrorFormat("Notify: Errore Alert PREMIO - Vedi messaggio successivo per dettagli - {0}", ex, Library.Utility.GetMethodDescription());
                                _log.ErrorFormat("Notify: Errore Alert PREMIO - {0} - contratto:{1} - alert:{2} - azienda:{3}", ex, Library.Utility.GetMethodDescription(), alert.ContrattoRiferimento.ID, alert.ID, alert.ContrattoRiferimento.CondominioRiferimento.Azienda.ID);
                            }
                        }
                    }

                    _log.DebugFormat("Inizio ALERT SCADENZA: {0}", item.Key);

                    var alertContrattoDao = daoFactory.GetAlertScadenzaContrattoDao();
                    var alertContrattoColl = alertContrattoDao.GetAll();
                    foreach (var alert in alertContrattoColl)
                    {
                        if (alert.ToNotify)
                        {
                            try
                            {
                                var impostazioneAzienda = impostazioniAzienda.FirstOrDefault(imp => imp.Azienda.ID == alert.ContrattoRiferimento.CondominioRiferimento.Azienda.ID);
                                if (impostazioneAzienda == null || impostazioneAzienda.AlertScadenzaContrattoAbilitato)
                                    notifySingleAlert(alert, daoFactory);
                            }
                            catch (Exception ex)
                            {
                                _log.ErrorFormat("Notify: Errore Alert CONTRATTO - Vedi messaggio successivo per dettagli - {0}", ex, Library.Utility.GetMethodDescription());
                                _log.ErrorFormat("Notify: Errore Alert CONTRATTO - {0} - contratto:{1} - alert:{2} - azienda:{3}", ex, Library.Utility.GetMethodDescription(), alert.ContrattoRiferimento.ID, alert.ID, alert.ContrattoRiferimento.CondominioRiferimento.Azienda.ID);
                            }
                        }
                    }

                    _log.DebugFormat("Inizio ALERT ATTIVITA': {0}", item.Key);

                    var listaAlertAttivita = daoFactory.GetAlertAttivitaDao().GetAll();
                    foreach (var alert in listaAlertAttivita)
                    {
                        if (alert.ToNotify)
                        {
                            try
                            {
                                var impostazioneAzienda = impostazioniAzienda.FirstOrDefault(imp => imp.Azienda.ID == alert.Attivita.AziendaID);
                                if (impostazioneAzienda == null || impostazioneAzienda.AlertAttivitaAbilitato)
                                    notifySingleAlert(alert, daoFactory);
                            }
                            catch (Exception ex)
                            {
                                _log.ErrorFormat("Notify: Errore Alert ATTIVITA' - Vedi messaggio successivo per dettagli - {0}", ex, Library.Utility.GetMethodDescription());
                                _log.ErrorFormat("Notify: Errore Alert ATTIVITA' - {0} - attività:{1} - alert:{2} - azienda:{3}", ex, Library.Utility.GetMethodDescription(), alert.Attivita.ID, alert.ID, alert.Attivita.AziendaID);
                            }
                        }
                    }

                    _log.DebugFormat("Inizio FINE: {0}", item.Key);

                    daoFactory.GetAlertAttivitaDao().CommitChanges();
                    _delivery = null;
                }

            }
            catch (Exception ex)
            {
                _log.Error("Notify: Errore generico", ex);
                return false;
            }

            _log.InfoFormat("Notify: Notifica alert terminata con successo il: {0} - Ora:{1}", DateTime.Today.ToShortDateString(), DateTime.Now.ToShortTimeString());
            return true;
        }
Exemplo n.º 4
0
        private void notifyEmailAlert(ICondominioRiferimento alert, IDaoFactory daoFactory)
        {
            try
            {
                if (ConfigurationManager.AppSettings["IsTest"] != null && bool.Parse(ConfigurationManager.AppSettings["IsTest"]))
                    return;

                if(alert != null)
                {
                    Attivita attivita = null;
                    var alertAttivita = alert as AlertAttivita;
                    if (alertAttivita != null)
                        attivita = alertAttivita.Attivita;

                    if (alert.GetCondominio() != null && alert.Destinatario != null)
                    {
                        var referente = alert.Destinatario.GetReferenteEffettivo(alert.GetCondominio(), attivita);
                        if (referente != null && referente.Azienda.ID == alert.GetCondominio().Azienda.ID)
                        {
                            if (referente.PersonaRiferimento != null)
                            {
                                var emailAddress = new ContattoCollection(referente.PersonaRiferimento.Contatti).GetFirstContatto<Email>();
                                if (!string.IsNullOrEmpty(emailAddress?.Valore))
                                {
                                    // Destinatari
                                    var destinatari = new List<string>(1);
                                    if (ConfigurationManager.AppSettings["IsTest"] != null && bool.Parse(ConfigurationManager.AppSettings["IsTest"]))
                                        destinatari.Add("*****@*****.**");
                                    else
                                        destinatari.Add(emailAddress.Valore);

                                    // Mittente
                                    var mittente = ConfigurationManager.AppSettings["MailFrom"];

                                    int? idDelivery = null;
                                    if (_delivery != null)
                                        idDelivery = _delivery.Id;
                                    var result = _messageService.InvioMessaggio(alert.GetCondominio().Azienda.ID, new PersonaMessaggioDTO { ID = referente.PersonaRiferimento.ID, IdDelivery = idDelivery}, alert.GetCondominio(), null, null, null ,null, MotivoMessaggio.ScadenzaContratto, ConfigurationManager.AppSettings["MailSubject"], NVelocityTemplateEngine.ProcessAlert(alert), destinatari, mittente, mittente, null, new ParametriInvioLettera { Asincrono = true })[0];
                                    
                                    if (!result.InvioRiuscito)
                                    {
                                        _log.DebugFormat("Notify: Notifica alert NON ha avuto successo: {0} - il:{1} - ora:{2} - alert:{3}", result.MessaggioInvio, DateTime.Today.ToShortDateString(), DateTime.Now.ToShortTimeString(), alert.ID);
                                    }
                                    else
                                    {
                                        if (_delivery == null)
                                            _delivery = daoFactory.GetDeliveryPoDao().Find(result.IdDelivery, false);
                                    }
                                }
                            }
                            else
                            {
                                _log.DebugFormat("ATTENZIONE: Tentativo di inviare alert ad un referente per il quale non è associata nessuna persona fisica - {0} - idAlert:{1} - idReferente:{2}", Library.Utility.GetMethodDescription(), alert.ID, referente.ID);
                            }
                        }
                        else
                        {
                            _log.DebugFormat("ATTENZIONE: Tentativo di inviare alert a referente di una azienda diversa da quella del contratto - {0} - alert:{1} - referent:{2}", Library.Utility.GetMethodDescription(), alert.ID, referente?.ID.ToString() ?? "<NULL>");
                        }
                    }                    
                }
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore inaspettato durante la notifica dell'alert - {0} - alert:{1}", ex, Library.Utility.GetMethodDescription(), alert?.ID.ToString() ?? "<NULL>");
                throw;
            }

        }