diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java index 738fd7283..35502693f 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java @@ -24,6 +24,7 @@ import eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.Field; import eu.eudat.models.data.externaldataset.ExternalAutocompleteFieldModel; import eu.eudat.models.data.helpers.common.DataTableData; import eu.eudat.models.data.listingmodels.UserInfoListingModel; +import eu.eudat.models.data.mail.SimpleMail; import eu.eudat.models.data.security.Principal; import eu.eudat.queryable.QueryableList; import eu.eudat.types.Authorities; @@ -49,6 +50,7 @@ import javax.xml.xpath.*; import java.io.*; import java.nio.file.Files; import java.util.*; +import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; @@ -286,21 +288,29 @@ public class DatasetProfileManager { if (entity.getUsers() == null) { entity.setUsers(new HashSet<>()); } - model.getUsers().stream().filter(userInfoListingModel -> entity.getUsers().stream().filter(userDatasetProfile -> userDatasetProfile.getUser().getId().equals(userInfoListingModel.getId())).count() == 0).forEach(userInfoListingModel -> { + model.getUsers().stream().filter(userInfoListingModel -> entity.getUsers().stream() + .filter(userDatasetProfile -> userDatasetProfile.getUser().getId().equals(userInfoListingModel.getId())).count() == 0) + .forEach(userInfoListingModel -> { UserDatasetProfile userDatasetProfile1 = new UserDatasetProfile(); userDatasetProfile1.setDatasetProfile(entity); UserInfo userInfo1 = apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().find(userInfoListingModel.getId()); userDatasetProfile1.setUser(userInfo1); userDatasetProfile1.setRole(1); apiContext.getOperationsContext().getDatabaseRepository().getUserDatasetProfileDao().createOrUpdate(userDatasetProfile1); + sendJoinMail(userDatasetProfile1); }); - entity.getUsers().stream().filter(userDatasetProfile -> model.getUsers().stream().filter(userInfoListingModel -> userDatasetProfile.getUser().getId().equals(userInfoListingModel.getId())).count() > 0 && userDatasetProfile.getRole() == 2).forEach(userDatasetProfile -> { + entity.getUsers().stream().filter(userDatasetProfile -> model.getUsers().stream() + .filter(userInfoListingModel -> userDatasetProfile.getUser().getId().equals(userInfoListingModel.getId())).count() > 0 + && userDatasetProfile.getRole() == 2).forEach(userDatasetProfile -> { userDatasetProfile.setRole(1); apiContext.getOperationsContext().getDatabaseRepository().getUserDatasetProfileDao().createOrUpdate(userDatasetProfile); + sendJoinMail(userDatasetProfile); }); } if (entity.getUsers() != null && !entity.getUsers().isEmpty()) { - entity.getUsers().stream().filter(userDatasetProfile -> model.getUsers().stream().filter(userInfoListingModel -> userDatasetProfile.getUser().getId().equals(userInfoListingModel.getId())).count() == 0).forEach(userDatasetProfile -> { + entity.getUsers().stream().filter(userDatasetProfile -> model.getUsers().stream() + .filter(userInfoListingModel -> userDatasetProfile.getUser().getId().equals(userInfoListingModel.getId())).count() == 0) + .forEach(userDatasetProfile -> { userDatasetProfile.setRole(2); apiContext.getOperationsContext().getDatabaseRepository().getUserDatasetProfileDao().createOrUpdate(userDatasetProfile); }); @@ -320,4 +330,22 @@ public class DatasetProfileManager { }).collect(Collectors.toList())); } } + + private void sendJoinMail(UserDatasetProfile userDatasetProfile) { + SimpleMail mail = new SimpleMail(); + mail.setSubject(environment.getProperty("admin.mail.subject").replace( "{templateName}", userDatasetProfile.getDatasetProfile().getLabel())); + String content = apiContext.getUtilitiesService().getMailService().getMailTemplateContent(environment.getProperty("email.dataset.template")); + content = content.replace("{recipient}", userDatasetProfile.getUser().getName()); + content = content.replace("{templateName}", userDatasetProfile.getDatasetProfile().getLabel()); + content = content.replace("{host}", this.environment.getProperty("dmp.domain")); + content = content.replace("{templateID}", userDatasetProfile.getDatasetProfile().getId().toString()); + mail.setContent(content); + mail.setTo(userDatasetProfile.getUser().getEmail()); + try { + apiContext.getUtilitiesService().getMailService().sendSimpleMail(mail); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + + } } diff --git a/dmp-backend/web/src/main/resources/config/application.properties b/dmp-backend/web/src/main/resources/config/application.properties index 7eda52fd3..9ae11ab94 100644 --- a/dmp-backend/web/src/main/resources/config/application.properties +++ b/dmp-backend/web/src/main/resources/config/application.properties @@ -24,6 +24,9 @@ management.metrics.export.prometheus.enabled=true mail.subject=Invitation to DMP Plan {dmpname} mail.from=opendmp-dev@cite.gr +####################DATASET TEMPLATE MAIL CONFIGURATIONS################# +admin.mail.subject=You have been invited to the Dataset Template {templateName} + ####################SPRING MAIL CONFIGURATIONS################# spring.mail.default-encoding=UTF-8 spring.mail.host=hermes.local.cite.gr @@ -43,6 +46,7 @@ configuration.configurable_login_providers=ConfigurableLoginProviders.json email.invite=file:templates/email/email.html email.confirmation=file:templates/email/emailConfirmation.html email.merge=file:templates/email/emailMergeConfirmation.html +email.dataset.template=file:templates/email/emailAdmin.html #############LOGIN CONFIGURATIONS######### #############GENERIC LOGIN CONFIGURATIONS######### diff --git a/dmp-backend/web/src/main/resources/templates/email/emailAdmin.html b/dmp-backend/web/src/main/resources/templates/email/emailAdmin.html new file mode 100644 index 000000000..7214de36b --- /dev/null +++ b/dmp-backend/web/src/main/resources/templates/email/emailAdmin.html @@ -0,0 +1,305 @@ + + + + + + Simple Transactional Email + + + + + + + + + +
  +
+ + + This is preheader text. Some clients will show this text as a preview. + + + + + + + + +
+ + + + +
+

Dear {recipient},

+

You have been invited to co-develop the Template {templateName}.

+

Click the button to redirect to {templateName}.

+ + + + + + + +
+ + + + + + +
{templateName}
+
+ +
+
+ + + + + + +
+
 
+ + \ No newline at end of file