Improved Performance For Invitations
Fixed Email Template To support dynamic domains
This commit is contained in:
parent
b112748ba4
commit
66e66be4a1
|
@ -8,6 +8,7 @@ import eu.eudat.data.entities.Invitation;
|
|||
|
||||
import javax.mail.MessagingException;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
|
||||
public interface InvitationService {
|
||||
|
@ -17,5 +18,5 @@ public interface InvitationService {
|
|||
|
||||
void createInvitations(InvitationDao invitationDao, MailService mailService, List<eu.eudat.data.entities.UserInfo> users, DMP dmp, eu.eudat.data.entities.UserInfo creator) throws MessagingException;
|
||||
|
||||
void sendInvitation(DMP dmp, Invitation invitation, String recipient, MailService mailService) throws MessagingException;
|
||||
CompletableFuture sendInvitationAsync(DMP dmp, Invitation invitation, String recipient, MailService mailService) throws MessagingException;
|
||||
}
|
||||
|
|
|
@ -1,19 +1,33 @@
|
|||
package eu.eudat.logic.services.utilities;
|
||||
|
||||
import eu.eudat.core.logger.Logger;
|
||||
import eu.eudat.data.dao.entities.DMPDao;
|
||||
import eu.eudat.data.dao.entities.InvitationDao;
|
||||
import eu.eudat.data.entities.DMP;
|
||||
import eu.eudat.data.entities.Invitation;
|
||||
import eu.eudat.models.data.mail.SimpleMail;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.mail.MessagingException;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
|
||||
@Service("invitationService")
|
||||
public class InvitationServiceImpl implements InvitationService {
|
||||
|
||||
private Logger logger;
|
||||
private Environment environment;
|
||||
|
||||
@Autowired
|
||||
public InvitationServiceImpl(Logger logger, Environment environment) {
|
||||
this.logger = logger;
|
||||
this.environment = environment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void assignToDmp(DMPDao dmpDao, List<eu.eudat.data.entities.UserInfo> users, DMP dmp) {
|
||||
for (eu.eudat.data.entities.UserInfo user : users) {
|
||||
|
@ -38,17 +52,23 @@ public class InvitationServiceImpl implements InvitationService {
|
|||
invitation.setToken(UUID.randomUUID());
|
||||
invitation.setAcceptedInvitation(false);
|
||||
invitationDao.createOrUpdate(invitation);
|
||||
sendInvitation(dmp, invitation, userInfo.getName(), mailService);
|
||||
sendInvitationAsync(dmp, invitation, userInfo.getName(), mailService);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendInvitation(DMP dmp, Invitation invitation, String recipient, MailService mailService) throws MessagingException {
|
||||
SimpleMail mail = new SimpleMail();
|
||||
mail.setSubject(createSubject(dmp, mailService.getMailTemplateSubject()));
|
||||
mail.setContent(createContent(invitation.getId(), dmp, recipient, mailService.getMailTemplateContent()));
|
||||
mail.setTo(invitation.getInvitationEmail());
|
||||
mailService.sendSimpleMail(mail);
|
||||
public CompletableFuture sendInvitationAsync(DMP dmp, Invitation invitation, String recipient, MailService mailService) {
|
||||
return CompletableFuture.runAsync(() -> {
|
||||
SimpleMail mail = new SimpleMail();
|
||||
mail.setSubject(createSubject(dmp, mailService.getMailTemplateSubject()));
|
||||
mail.setContent(createContent(invitation.getId(), dmp, recipient, mailService.getMailTemplateContent()));
|
||||
mail.setTo(invitation.getInvitationEmail());
|
||||
try {
|
||||
mailService.sendSimpleMail(mail);
|
||||
} catch (MessagingException e) {
|
||||
this.logger.error(e, e.getMessage());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private String createSubject(DMP dmp, String templateSubject) {
|
||||
|
@ -60,6 +80,7 @@ public class InvitationServiceImpl implements InvitationService {
|
|||
String content = templateContent.replace("{dmpname}", dmp.getLabel());
|
||||
content = content.replace("{invitationID}", invitationID.toString());
|
||||
content = content.replace("{recipient}", recipient);
|
||||
content = content.replace("{host}", this.environment.getProperty("dmp.domain"));
|
||||
|
||||
return content;
|
||||
}
|
||||
|
|
|
@ -271,7 +271,7 @@
|
|||
<table border="0" cellpadding="0" cellspacing="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td> <a href="http://dl043.madgik.di.uoa.gr/dmps/invitation/{invitationID}" target="_blank">Join</a> </td>
|
||||
<td> <a href="{host}/dmps/invitation/{invitationID}" target="_blank">Join</a> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<div class="dataset-wizard">
|
||||
<h3 *ngIf="isNew">New Dataset</h3>
|
||||
<h3 *ngIf="isNew">{{ 'DATASET-WIZARD.TITLE.NEW' | translate }}</h3>
|
||||
<div class="flex-container">
|
||||
<div fxLayout="row">
|
||||
<h3 *ngIf="!isNew">{{datasetWizardModel?.label}} {{ 'GENERAL.NAMES.DATASET' | translate }}</h3>
|
||||
|
@ -10,14 +10,14 @@
|
|||
<div class="flex-container">
|
||||
|
||||
<button mat-raised-button color="primary" *ngIf="datasetWizardModel&&datasetWizardModel?.status != 1" style="margin-top: 15px;margin-bottom: 15px;margin-right: 15px;"
|
||||
(click)="save();" type="button">Save</button>
|
||||
(click)="save();" type="button">{{ 'DATASET-WIZARD.ACTIONS.SAVE' | translate }}</button>
|
||||
|
||||
<button mat-raised-button color="primary" *ngIf="datasetWizardModel&&datasetWizardModel?.status != 1" style="margin-top: 15px;margin-bottom: 15px;margin-right: 15px;"
|
||||
(click)="saveFinalize();" type="button">Save and Finalize</button>
|
||||
(click)="saveFinalize();" type="button">{{ 'DATASET-WIZARD.ACTIONS.SAVE-AND-FINALISE' | translate }}</button>
|
||||
<button mat-raised-button color="primary" *ngIf="datasetWizardModel&&datasetWizardModel?.status == 1" style="margin-top: 15px;margin-bottom: 15px;margin-right: 15px;"
|
||||
(click)="downloadPDF();" type="button">Download PDF</button>
|
||||
(click)="downloadPDF();" type="button">{{ 'DATASET-WIZARD.ACTIONS.DOWNLOAD-PDF' | translate }}</button>
|
||||
<button mat-raised-button color="primary" *ngIf="datasetWizardModel&&datasetWizardModel?.status == 1" style="margin-top: 15px;margin-bottom: 15px;margin-right: 15px;"
|
||||
(click)="downloadXML();" type="button">Download XML</button>
|
||||
(click)="downloadXML();" type="button">{{ 'DATASET-WIZARD.ACTIONS.DOWNLOAD-XML' | translate }}</button>
|
||||
<div class="fill-space"></div>
|
||||
<!-- <button mat-button (click)="redirectToProject()">
|
||||
<mat-icon>arrow_right_alt</mat-icon>{{'DATASET-WIZARD.ACTIONS.GO-TO-PROJECT' | translate}}</button>
|
||||
|
|
|
@ -75,6 +75,9 @@
|
|||
}
|
||||
},
|
||||
"DATASET-WIZARD": {
|
||||
"TITLE": {
|
||||
"NEW": "New Dataset Description"
|
||||
},
|
||||
"EDITOR": {
|
||||
"FIELDS": {
|
||||
"EXTERNAL-DATASET-TYPE": "Type"
|
||||
|
@ -95,7 +98,11 @@
|
|||
"NEXT": "Next",
|
||||
"BACK": "Back",
|
||||
"GO-TO-PROJECT": "Go to Dataset Project",
|
||||
"GO-TO-DMP": "Go to Dataset DMP"
|
||||
"GO-TO-DMP": "Go to Dataset DMP",
|
||||
"SAVE": "Save",
|
||||
"SAVE-AND-FINALISE": "Save and Finalise",
|
||||
"DOWNLOAD-PDF": "Download PDF",
|
||||
"DOWNLOAD-XML": "Download XML"
|
||||
}
|
||||
},
|
||||
"DATASET-LISTING": {
|
||||
|
|
Loading…
Reference in New Issue