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
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Dear {recipient},
+ You have been invited to co-develop the Template {templateName}.
+ Click the button to redirect to {templateName}.
+
+
+
+ |
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+ |
+ |
+
+
+
+
\ No newline at end of file