92 lines
3.3 KiB
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);
|
|
}
|
|
}
|