diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachService.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachService.java index 73439cf67fd9959222f2e8ae78b84aa641f62a41..f7c2600ff4cac30a5464e5db0967ae506d68f14e 100644 --- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachService.java +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachService.java @@ -22,8 +22,6 @@ */ package de.ozgcloud.nachrichten.postfach; -import static de.ozgcloud.nachrichten.postfach.PersistPostfachNachrichtServiceImpl.*; - import java.time.ZonedDateTime; import java.util.EnumSet; import java.util.Map; @@ -41,7 +39,6 @@ import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; -import de.ozgcloud.common.errorhandling.TechnicalException; import de.ozgcloud.nachrichten.antragraum.AntragraumService; import de.ozgcloud.nachrichten.attributes.ClientAttributeService; import de.ozgcloud.nachrichten.info.InfoManagerService; @@ -57,16 +54,13 @@ import lombok.extern.log4j.Log4j2; @Validated class PostfachService { - private static final Predicate<PostfachNachricht> IS_FROM_HUMAN_USER = nachricht -> !StringUtils.startsWith(nachricht.getCreatedBy(), "system"); static final Predicate<PostfachNachricht> IS_MUK_ANTWORT = nachricht -> StringUtils.isEmpty(nachricht.getVorgangId()) && StringUtils.isNotEmpty( nachricht.getReferencedNachricht()); + static final Set<ReplyOption> REPLY_POSSIBLE_OPTION = EnumSet.of(ReplyOption.POSSIBLE, ReplyOption.MANDATORY); + private static final Predicate<PostfachNachricht> IS_FROM_HUMAN_USER = nachricht -> !StringUtils.startsWith(nachricht.getCreatedBy(), "system"); private static final Set<String> POSTFACH_TYPES_WITH_ANTRAGSRAUM = Set.of("BayernId"); - @Autowired(required = false) private PostfachRemoteService postfachRemoteService; - - static final Set<ReplyOption> REPLY_POSSIBLE_OPTION = EnumSet.of(ReplyOption.POSSIBLE, ReplyOption.MANDATORY); - @Autowired private PostfachNachrichtMapper mapper; @@ -131,27 +125,19 @@ class PostfachService { } private void persistReceivedMail(PostfachNachricht nachricht) { - Optional<PostfachNachricht> linkedNachrichtOptional = Optional.of(nachricht); if (IS_MUK_ANTWORT.test(nachricht)) { - var vorgangMapOptional = findById(nachricht.getReferencedNachricht()); - linkedNachrichtOptional = vorgangMapOptional.map( - vorgangMap -> Optional.of(setVorgangId((String) vorgangMap.get(VORGANG_ID_FIELD), nachricht))) - .orElseThrow(); + var persistedNachricht = getNachricht(nachricht.getReferencedNachricht()); + nachricht = nachricht.toBuilder().vorgangId(persistedNachricht.getVorgangId()).build(); } - linkedNachrichtOptional.ifPresent(linkedNachricht -> { - persistMail(Optional.empty(), linkedNachricht); + persistMail(Optional.empty(), nachricht); - postfachRemoteService.deleteMessage(linkedNachricht.getMessageId()); - }); - } + postfachRemoteService.deleteMessage(nachricht.getMessageId()); - PostfachNachricht setVorgangId(String vorgangId, PostfachNachricht nachricht) { - if (StringUtils.isNotEmpty(vorgangId)) { - return nachricht.toBuilder().vorgangId(vorgangId).build(); - } + } - throw new TechnicalException("Cannot link nachricht [" + nachricht + "] to vorgang because vorgangId is empty"); + PostfachNachricht getNachricht(String id) { + return mapper.fromMapToPostfachMail(persistingService.getById(id)); } void persistMail(Optional<String> userId, PostfachNachricht mail) {