Skip to content

Commit

Permalink
Added: Emails to BRIDGHEAD_ADMINS_WHO_HAVE_NOT_ACCEPTED_NOR_REJECTED_…
Browse files Browse the repository at this point in the history
…THE_PROJECT
  • Loading branch information
djuarezgf committed Dec 29, 2023
1 parent f45812a commit 1c528d2
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 2 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,4 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
- Email Sender Aspect
- Thymeleaf Template Engine Configuration
- EmailSender repeatable
- Emails to BRIDGHEAD_ADMINS_WHO_HAVE_NOT_ACCEPTED_NOR_REJECTED_THE_PROJECT
22 changes: 22 additions & 0 deletions src/main/java/de/samply/aop/EmailSenderAspect.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import de.samply.notification.smtp.EmailRecipient;
import de.samply.notification.smtp.EmailService;
import de.samply.notification.smtp.EmailServiceException;
import de.samply.project.state.ProjectBridgeheadState;
import de.samply.security.SessionUser;
import de.samply.user.roles.OrganisationRoleToProjectRoleMapper;
import de.samply.user.roles.ProjectRole;
Expand Down Expand Up @@ -115,6 +116,8 @@ private Set<EmailRecipient> fetchEmailRecipients(EmailSender emailSender, Procee
case SESSION_USER -> fetchEmailRecipientsForSessionUser(projectCode, bridgehead);
case EMAIL_ANNOTATION -> fetchEmailRecipientsForEmailAnnotation(projectCode, bridgehead, email);
case BRIDGEHEAD_ADMIN -> fetchEmailRecipientsForBridgeheadAdmin(projectCode, bridgehead);
case BRIDGHEAD_ADMINS_WHO_HAVE_NOT_ACCEPTED_NOR_REJECTED_THE_PROJECT ->
fetchEmailRecipientsForBridgeheadAdminsWhoHaveNotAcceptedNorRejectedTheProject(projectCode);
case PROJECT_MANAGER_ADMIN -> fetchEmailRecipientsForProjectManagerAdmin();
case PROJECT_ALL -> fetchEmailRecipientsForAllProjectUsers(projectCode, bridgehead);
}));
Expand Down Expand Up @@ -190,6 +193,25 @@ private Set<EmailRecipient> fetchEmailRecipientsForBridgeheadAdmin(Optional<Stri
return result;
}

private Set<EmailRecipient> fetchEmailRecipientsForBridgeheadAdminsWhoHaveNotAcceptedNorRejectedTheProject(Optional<String> projectCode) {
Set<EmailRecipient> result = new HashSet<>();
fetchProjectBridgeheadsNotAcceptedNorRejected(projectCode).forEach(projectBridgehead ->
bridgeheadAdminUserRepository.findByBridgehead(projectBridgehead.getBridgehead()).forEach(bridgeheadAdminUser ->
result.add(new EmailRecipient(bridgeheadAdminUser.getEmail(), Optional.of(projectBridgehead.getBridgehead()), ProjectRole.BRIDGEHEAD_ADMIN))));
return result;
}

private Set<ProjectBridgehead> fetchProjectBridgeheadsNotAcceptedNorRejected(Optional<String> projectCode) {
if (projectCode.isPresent()) {
Optional<Project> project = projectRepository.findByCode(projectCode.get());
if (project.isPresent()) {
return projectBridgeheadRepository.findByProjectAndState(project.get(), ProjectBridgeheadState.CREATED);
}
}
return new HashSet<>();
}


private Set<ProjectBridgehead> fetchProjectBridgeheads(Optional<String> projectCode, Optional<String> bridgehead) {
if (projectCode.isPresent()) {
Optional<Project> project = projectRepository.findByCode(projectCode.get());
Expand Down
1 change: 1 addition & 0 deletions src/main/java/de/samply/app/ProjectManagerController.java
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ public ResponseEntity<String> setUserAsPilot(
@RoleConstraints(organisationRoles = {OrganisationRole.PROJECT_MANAGER_ADMIN})
@StateConstraints(projectStates = {ProjectState.FINAL})
@EmailSender(templateType = EmailTemplateType.INVITATION, recipients = {EmailRecipientType.EMAIL_ANNOTATION})
@EmailSender(templateType = EmailTemplateType.NEW_PROJECT, recipients = {EmailRecipientType.BRIDGHEAD_ADMINS_WHO_HAVE_NOT_ACCEPTED_NOR_REJECTED_THE_PROJECT})
@FrontendSiteModule(site = ProjectManagerConst.PROJECT_VIEW_SITE, module = ProjectManagerConst.USER_MODULE)
@FrontendAction(action = ProjectManagerConst.SET_FINAL_USER_ACTION)
@PostMapping(value = ProjectManagerConst.SET_FINAL_USER)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import de.samply.db.model.Project;
import de.samply.db.model.ProjectBridgehead;
import de.samply.project.state.ProjectBridgeheadState;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

Expand All @@ -12,8 +13,7 @@
public interface ProjectBridgeheadRepository extends JpaRepository<ProjectBridgehead, Long> {

Optional<ProjectBridgehead> findFirstByBridgeheadAndProject(String bridgehead, Project project);

Set<ProjectBridgehead> findByProject(Project project);

Set<ProjectBridgehead> findByProjectAndState(Project project, ProjectBridgeheadState state);

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@ public enum EmailRecipientType {
EMAIL_ANNOTATION,
PROJECT_MANAGER_ADMIN,
BRIDGEHEAD_ADMIN,
BRIDGHEAD_ADMINS_WHO_HAVE_NOT_ACCEPTED_NOR_REJECTED_THE_PROJECT,
PROJECT_ALL
}

0 comments on commit 1c528d2

Please sign in to comment.