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; }