use of com.axelor.apps.message.db.repo.MessageRepository in project axelor-open-suite by axelor.
the class BatchEventReminder method generateMessageProcess.
protected void generateMessageProcess() {
MessageRepository messageRepo = Beans.get(MessageRepository.class);
if (!stop) {
int i = 0;
Query q = JPA.em().createQuery(" SELECT er FROM EventReminder as er WHERE er.isReminded = true and ?1 MEMBER OF er.batchSet");
q.setParameter(1, batch);
@SuppressWarnings("unchecked") List<EventReminder> eventReminderList = q.getResultList();
for (EventReminder eventReminder : eventReminderList) {
try {
eventReminder = eventReminderRepo.find(eventReminder.getId());
Message message = messageServiceCrmImpl.createMessage(eventReminder.getEvent());
// Send reminder to owner of the reminder in any case
if (eventReminder.getUser().getPartner() != null && eventReminder.getUser().getPartner().getEmailAddress() != null) {
message.addToEmailAddressSetItem(eventReminder.getUser().getPartner().getEmailAddress());
} else if (eventReminder.getUser().getEmail() != null) {
message.addToEmailAddressSetItem(findOrCreateEmailAddress(eventReminder.getUser().getEmail(), "[" + eventReminder.getUser().getEmail() + "]"));
} else {
messageRepo.remove(message);
throw new AxelorException(TraceBackRepository.CATEGORY_CONFIGURATION_ERROR, I18n.get(IExceptionMessage.CRM_CONFIG_USER_EMAIL), eventReminder.getUser().getName());
}
// Also send to attendees if needed
if (EventReminderRepository.ASSIGN_TO_ALL.equals(eventReminder.getAssignToSelect()) && eventReminder.getEvent().getAttendees() != null) {
for (ICalendarUser iCalUser : eventReminder.getEvent().getAttendees()) {
if (iCalUser.getUser() != null && iCalUser.getUser().getPartner() != null) {
message.addToEmailAddressSetItem(iCalUser.getUser().getPartner().getEmailAddress());
} else {
message.addToEmailAddressSetItem(findOrCreateEmailAddress(iCalUser.getEmail(), iCalUser.getName()));
}
}
}
message = Beans.get(MessageService.class).sendByEmail(message);
} catch (Exception e) {
TraceBackService.trace(new Exception(String.format(I18n.get("Event") + " %s", eventRepo.find(eventReminder.getEvent().getId()).getSubject()), e), ExceptionOriginRepository.CRM, batch.getId());
incrementAnomaly();
LOG.error("Bug(Anomalie) généré(e) pour l'évènement {}", eventRepo.find(eventReminder.getEvent().getId()).getSubject());
} finally {
if (i % 1 == 0) {
JPA.clear();
}
}
}
}
}
Aggregations