From 44d722e38b37c7d5a8d4122d824505666903a452 Mon Sep 17 00:00:00 2001 From: djuarezgf Date: Mon, 2 Dec 2024 15:42:17 +0100 Subject: [PATCH] Added: Last document variables in email context --- CHANGELOG.md | 3 ++- .../de/samply/app/ProjectManagerConst.java | 7 +++++++ .../repository/ProjectDocumentRepository.java | 2 ++ .../java/de/samply/email/EmailKeyValues.java | 20 ++++++++++++++++++- .../samply/email/EmailKeyValuesFactory.java | 8 ++++++-- 5 files changed, 36 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e0ba222..746e90b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). -## [0.0.1 - 2024-11-29] +## [0.0.1 - 2024-12-02] ### Added - First version of the project - Spring Application @@ -168,3 +168,4 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - Email context project bridgeheads variable - Decode Base64 values of email context - Enable minus in variables of email context +- Last document variables in email context diff --git a/src/main/java/de/samply/app/ProjectManagerConst.java b/src/main/java/de/samply/app/ProjectManagerConst.java index aae64ca..00ed1f8 100644 --- a/src/main/java/de/samply/app/ProjectManagerConst.java +++ b/src/main/java/de/samply/app/ProjectManagerConst.java @@ -246,6 +246,13 @@ public class ProjectManagerConst { public final static String EMAIL_CONTEXT_EMAIL_TO_FIRST_NAME = "email-to-first-name"; public final static String EMAIL_CONTEXT_EMAIL_TO_LAST_NAME = "email-to-last-name"; public final static String EMAIL_CONTEXT_EMAIL_TO_NAME = "email-to-name"; + public final static String EMAIL_CONTEXT_LAST_DOCUMENT_LABEL = "last-document-label"; + public final static String EMAIL_CONTEXT_LAST_DOCUMENT_FILENAME = "last-document-filename"; + public final static String EMAIL_CONTEXT_LAST_DOCUMENT_URL = "last-document-url"; + public final static String EMAIL_CONTEXT_LAST_DOCUMENT_SENDER_NAME = "last-document-url-sender-name"; + public final static String EMAIL_CONTEXT_LAST_DOCUMENT_SENDER_FIRST_NAME = "last-document-url-sender-first-name"; + public final static String EMAIL_CONTEXT_LAST_DOCUMENT_SENDER_LAST_NAME = "last-document-url-sender-last-name"; + public final static String EMAIL_CONTEXT_LAST_DOCUMENT_SENDER_EMAIL = "last-document-url-sender-email"; public final static String[] EMAIL_CONTEXT_VARIABLES = { diff --git a/src/main/java/de/samply/db/repository/ProjectDocumentRepository.java b/src/main/java/de/samply/db/repository/ProjectDocumentRepository.java index 194a2a0..77e2108 100644 --- a/src/main/java/de/samply/db/repository/ProjectDocumentRepository.java +++ b/src/main/java/de/samply/db/repository/ProjectDocumentRepository.java @@ -19,6 +19,8 @@ public interface ProjectDocumentRepository extends JpaRepository findFirstByProjectAndDocumentTypeAndBridgeheadOrderByCreatedAtDesc(Project project, DocumentType documentType, String bridgehead); + Optional findTopByProjectOrderByCreatedAtDesc(Project project); + List findAllByProjectAndDocumentTypeOrderByLabelAsc(Project project, DocumentType documentType); @Query("SELECT pd FROM ProjectDocument pd WHERE (pd.bridgehead = :bridgehead OR pd.bridgehead = 'NONE') " + diff --git a/src/main/java/de/samply/email/EmailKeyValues.java b/src/main/java/de/samply/email/EmailKeyValues.java index 62fcecf..92eaa46 100644 --- a/src/main/java/de/samply/email/EmailKeyValues.java +++ b/src/main/java/de/samply/email/EmailKeyValues.java @@ -7,6 +7,7 @@ import de.samply.db.model.ProjectBridgeheadUser; import de.samply.db.model.Query; import de.samply.db.repository.ProjectBridgeheadRepository; +import de.samply.db.repository.ProjectDocumentRepository; import de.samply.db.repository.ProjectRepository; import de.samply.db.repository.UserRepository; import de.samply.frontend.FrontendService; @@ -29,6 +30,7 @@ public class EmailKeyValues { private final ProjectRepository projectRepository; private final UserRepository userRepository; private final BridgeheadConfiguration bridgeheadConfiguration; + private final ProjectDocumentRepository projectDocumentRepository; public EmailKeyValues(FrontendService frontendService, @@ -36,12 +38,14 @@ public EmailKeyValues(FrontendService frontendService, ProjectBridgeheadRepository projectBridgeheadRepository, ProjectRepository projectRepository, UserRepository userRepository, - BridgeheadConfiguration bridgeheadConfiguration) { + BridgeheadConfiguration bridgeheadConfiguration, + ProjectDocumentRepository projectDocumentRepository) { this.frontendService = frontendService; this.projectBridgeheadRepository = projectBridgeheadRepository; this.projectRepository = projectRepository; this.userRepository = userRepository; this.bridgeheadConfiguration = bridgeheadConfiguration; + this.projectDocumentRepository = projectDocumentRepository; keyValues.putAll(emailContext.getContext()); } @@ -141,6 +145,7 @@ public EmailKeyValues add(Project project) { addKeyValue(ProjectManagerConst.EMAIL_CONTEXT_PROJECT_TYPE, () -> project.getType().toString()); add(project.getQuery()); addBridgeheads(project); + addLastDocument(project); } return this; } @@ -152,6 +157,19 @@ private void addBridgeheads(Project project) { .collect(Collectors.joining(","))); } + private void addLastDocument(Project project) { + projectDocumentRepository.findTopByProjectOrderByCreatedAtDesc(project).ifPresent(projectDocument -> { + addKeyValue(ProjectManagerConst.EMAIL_CONTEXT_LAST_DOCUMENT_LABEL, projectDocument::getLabel); + addKeyValue(ProjectManagerConst.EMAIL_CONTEXT_LAST_DOCUMENT_FILENAME, projectDocument::getOriginalFilename); + addKeyValue(ProjectManagerConst.EMAIL_CONTEXT_LAST_DOCUMENT_URL, projectDocument::getUrl); + addEmailData(projectDocument.getCreatorEmail(), + ProjectManagerConst.EMAIL_CONTEXT_LAST_DOCUMENT_SENDER_EMAIL, + ProjectManagerConst.EMAIL_CONTEXT_LAST_DOCUMENT_SENDER_FIRST_NAME, + ProjectManagerConst.EMAIL_CONTEXT_LAST_DOCUMENT_SENDER_LAST_NAME, + ProjectManagerConst.EMAIL_CONTEXT_LAST_DOCUMENT_SENDER_NAME); + }); + } + public EmailKeyValues add(Query query) { if (query != null) { addKeyValue(ProjectManagerConst.EMAIL_CONTEXT_QUERY, diff --git a/src/main/java/de/samply/email/EmailKeyValuesFactory.java b/src/main/java/de/samply/email/EmailKeyValuesFactory.java index 63dabf1..47b2dfb 100644 --- a/src/main/java/de/samply/email/EmailKeyValuesFactory.java +++ b/src/main/java/de/samply/email/EmailKeyValuesFactory.java @@ -2,6 +2,7 @@ import de.samply.bridgehead.BridgeheadConfiguration; import de.samply.db.repository.ProjectBridgeheadRepository; +import de.samply.db.repository.ProjectDocumentRepository; import de.samply.db.repository.ProjectRepository; import de.samply.db.repository.UserRepository; import de.samply.frontend.FrontendService; @@ -16,24 +17,27 @@ public class EmailKeyValuesFactory { private final ProjectRepository projectRepository; private final UserRepository userRepository; private final BridgeheadConfiguration bridgeheadConfiguration; + private final ProjectDocumentRepository projectDocumentRepository; public EmailKeyValuesFactory(FrontendService frontendService, EmailContext emailContext, ProjectBridgeheadRepository projectBridgeheadRepository, ProjectRepository projectRepository, UserRepository userRepository, - BridgeheadConfiguration bridgeheadConfiguration) { + BridgeheadConfiguration bridgeheadConfiguration, + ProjectDocumentRepository projectDocumentRepository) { this.frontendService = frontendService; this.emailContext = emailContext; this.projectBridgeheadRepository = projectBridgeheadRepository; this.projectRepository = projectRepository; this.userRepository = userRepository; this.bridgeheadConfiguration = bridgeheadConfiguration; + this.projectDocumentRepository = projectDocumentRepository; } public EmailKeyValues newInstance() { return new EmailKeyValues(frontendService, emailContext, projectBridgeheadRepository, projectRepository, - userRepository, bridgeheadConfiguration); + userRepository, bridgeheadConfiguration, projectDocumentRepository); } }