use of com.axelor.apps.message.db.Message 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();
}
}
}
}
}
use of com.axelor.apps.message.db.Message in project axelor-open-suite by axelor.
the class DebtRecoveryActionService method runMessage.
/**
* Generate a message from a debtRecovery, save, and send it.
*
* @param debtRecovery
* @throws AxelorException
* @throws ClassNotFoundException
* @throws IOException
* @throws InstantiationException
* @throws IllegalAccessException
*/
@Transactional(rollbackOn = { Exception.class })
public void runMessage(DebtRecovery debtRecovery) throws AxelorException, ClassNotFoundException, IOException, InstantiationException, IllegalAccessException, JSONException {
Set<Message> messageSet = this.runStandardMessage(debtRecovery);
for (Message message : messageSet) {
message = Beans.get(MessageRepository.class).save(message);
if (!debtRecovery.getDebtRecoveryMethodLine().getManualValidationOk() && message.getMailAccount() == null) {
throw new AxelorException(TraceBackRepository.CATEGORY_INCONSISTENCY, I18n.get(IExceptionMessage.DEBT_RECOVERY_ACTION_4));
}
if (CollectionUtils.isEmpty(message.getToEmailAddressSet())) {
throw new AxelorException(TraceBackRepository.CATEGORY_MISSING_FIELD, I18n.get(IExceptionMessage.DEBT_RECOVERY_ACTION_5), debtRecovery.getDebtRecoveryMethodLine().getDebtRecoveryLevelLabel());
}
Beans.get(MessageService.class).sendMessage(message);
}
}
use of com.axelor.apps.message.db.Message in project axelor-open-suite by axelor.
the class TemplateMessageAccountServiceImpl method generateMessage.
@Override
@Transactional(rollbackOn = { Exception.class })
public Message generateMessage(DebtRecoveryHistory debtRecoveryHistory, Template template) throws ClassNotFoundException, IOException, InstantiationException, AxelorException, IllegalAccessException {
Message message = this.templateMessageService.generateMessage(debtRecoveryHistory, template);
message.setRelatedTo2Select(Partner.class.getCanonicalName());
message.setRelatedTo2SelectId((debtRecoveryHistory.getDebtRecovery().getTradingName() == null) ? debtRecoveryHistory.getDebtRecovery().getAccountingSituation().getPartner().getId() : debtRecoveryHistory.getDebtRecovery().getTradingNameAccountingSituation().getPartner().getId());
return message;
}
use of com.axelor.apps.message.db.Message in project axelor-open-suite by axelor.
the class ExpenseController method cancel.
public void cancel(ActionRequest request, ActionResponse response) throws AxelorException {
try {
Expense expense = request.getContext().asType(Expense.class);
expense = Beans.get(ExpenseRepository.class).find(expense.getId());
ExpenseService expenseService = Beans.get(ExpenseService.class);
expenseService.cancel(expense);
Message message = expenseService.sendCancellationEmail(expense);
if (message != null && message.getStatusSelect() == MessageRepository.STATUS_SENT) {
response.setFlash(String.format(I18n.get("Email sent to %s"), Beans.get(MessageServiceBaseImpl.class).getToRecipients(message)));
}
} catch (Exception e) {
TraceBackService.trace(response, e);
} finally {
response.setReload(true);
}
}
use of com.axelor.apps.message.db.Message in project axelor-open-suite by axelor.
the class TimesheetReportServiceImpl method sendEmailMessage.
private List<Message> sendEmailMessage(List<TimesheetReminder> timesheetReminders, Template reminderTemplate) {
List<Message> messages = new ArrayList<>();
for (TimesheetReminder timesheetReminder : timesheetReminders) {
try {
Message message = templateMessageService.generateMessage(timesheetReminder, reminderTemplate);
message = messageService.sendMessage(message);
timesheetReminder.setEmailSentDateT(LocalDateTime.now());
messages.add(message);
} catch (Exception e) {
TraceBackService.trace(e);
}
}
return messages;
}
Aggregations