package eu.eudat.services.utilities; import eu.eudat.dao.entities.DMPDao; import eu.eudat.dao.entities.InvitationDao; import eu.eudat.entities.DMP; import eu.eudat.entities.Invitation; import eu.eudat.models.mail.SimpleMail; import org.springframework.stereotype.Service; import java.util.List; import java.util.UUID; @Service("invitationService") public class InvitationServiceImpl implements InvitationService { @Override public void assignToDmp(DMPDao dmpDao, List users, DMP dmp) { for (eu.eudat.entities.UserInfo user : users) { dmp.getUsers().add(user); } dmpDao.createOrUpdate(dmp); } @Override public void assignToDmp(DMPDao dmpDao, eu.eudat.entities.UserInfo user, DMP dmp) { dmp.getUsers().add(user); dmpDao.createOrUpdate(dmp); } @Override public void createInvitations(InvitationDao invitationDao, MailService mailService, List users, DMP dmp, eu.eudat.entities.UserInfo creator) { for (eu.eudat.entities.UserInfo userInfo : users) { Invitation invitation = new Invitation(); invitation.setDmp(dmp); invitation.setInvitationEmail(userInfo.getEmail()); invitation.setUser(creator); invitation.setToken(UUID.randomUUID()); invitation.setAcceptedInvitation(false); invitationDao.createOrUpdate(invitation); sendInvitation(dmp, invitation, mailService); } } @Override public void sendInvitation(DMP dmp, Invitation invitation, MailService mailService) { SimpleMail mail = new SimpleMail(); mail.setSubject(createSubject(dmp, mailService.getMailTemplateSubject())); mail.setContent(createContent(invitation.getId(), dmp, mailService.getMailTemplateContent())); mail.setTo(invitation.getInvitationEmail()); mailService.sendSimpleMail(mail); } private String createSubject(DMP dmp, String templateSubject) { String subject = templateSubject.replace("{dmpname}", dmp.getLabel()); return subject; } private String createContent(UUID invitationID, DMP dmp, String templateContent) { String content = templateContent.replace("{dmpname}", dmp.getLabel()); content = content.replace("{invitationID}", invitationID.toString()); return content; } }