orbeon-bluedb-integration/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/impl/RegistrationServiceImpl.java

92 lines
3.3 KiB
Java

/*********************************************************************************************************************************
* Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością
*
* Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością
********************************************************************************************************************************/
package eu.mooseinc.dell.form.service.impl;
import com.google.common.base.Preconditions;
import eu.mooseinc.dell.form.entity.Registration;
import eu.mooseinc.dell.form.exception.ObjectNotFoundException;
import eu.mooseinc.dell.form.exception.ServiceException;
import eu.mooseinc.dell.form.service.MailService;
import eu.mooseinc.dell.form.service.RegistrationService;
import java.util.Arrays;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
/**
* Implementation of registration service.
*/
@Service
public class RegistrationServiceImpl implements RegistrationService {
/**
* E-mail message template.
*/
private static final String MAIL_FORM_TEMPLATE = "mailForm.html";
@Autowired
private MailService mailService;
@Value("${mail.recipients}")
private String recipients;
@Value("${mail.title:'Thank you for your registration with the International Code of Conduct Association.'}")
private String emailTitle;
@Autowired
@Qualifier("emailTemplateEngine")
private TemplateEngine templateEngine;
@Override
@Transactional(rollbackFor = {ObjectNotFoundException.class, ServiceException.class})
public Registration sendRegistration(final Registration registration)
throws ObjectNotFoundException, ServiceException {
Preconditions.checkArgument(registration != null);
final Set<String> recipientEmails = new HashSet<>();
recipientEmails.addAll(Arrays.asList(recipients.split(",")));
String[] emails = recipientEmails.toArray(new String[recipientEmails.size()]);
final String cc = registration.getEmail();
registration.setRegistrationDate(new Date());
final String content = getMailContent(registration);
final String subject = emailTitle;
mailService.send(emails, cc, subject, content, null);
return null;
}
/**
* Compiled message body.
*
* @param registration registration data.
*
* @return treść wiadomości.
*/
private String getMailContent(final Registration registration) {
final Context ctx = new Context();
ctx.setVariable("fullName", registration.getName() + " " + registration.getSurname());
ctx.setVariable("entityName", registration.getEntityName());
ctx.setVariable("name", registration.getName());
ctx.setVariable("surname", registration.getSurname());
ctx.setVariable("email", registration.getEmail());
ctx.setVariable("membershipType", registration.getMembershipType().getRegistrationMembership());
ctx.setVariable("message", registration.getMessage());
ctx.setVariable("registrationDate", registration.getRegistrationDate());
return templateEngine.process(MAIL_FORM_TEMPLATE, ctx);
}
}