DM-402 - Don't add double notifications when user is added to a dossier in documine
This commit is contained in:
parent
261d69fa52
commit
230e674c6f
@ -10,13 +10,13 @@ import java.time.OffsetDateTime;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.TreeSet;
|
import java.util.TreeSet;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
@ -33,17 +33,16 @@ import org.springframework.web.bind.annotation.RequestParam;
|
|||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.service.users.model.User;
|
|
||||||
import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity;
|
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.roles.ApplicationRoles;
|
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.acl.custom.dossier.DossierACLService;
|
import com.iqser.red.service.persistence.management.v1.processor.acl.custom.dossier.DossierACLService;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
|
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
|
||||||
|
import com.iqser.red.service.persistence.management.v1.processor.roles.ApplicationRoles;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.service.AccessControlService;
|
import com.iqser.red.service.persistence.management.v1.processor.service.AccessControlService;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.service.DossierManagementService;
|
import com.iqser.red.service.persistence.management.v1.processor.service.DossierManagementService;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusManagementService;
|
import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusManagementService;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.service.users.UserService;
|
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService;
|
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.NotificationPersistenceService;
|
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.NotificationPersistenceService;
|
||||||
|
import com.iqser.red.service.persistence.management.v1.processor.service.users.UserService;
|
||||||
|
import com.iqser.red.service.persistence.management.v1.processor.service.users.model.User;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.external.resource.DossierResource;
|
import com.iqser.red.service.persistence.service.v1.api.external.resource.DossierResource;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierChangeEntry;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierChangeEntry;
|
||||||
@ -55,6 +54,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.common.JSON
|
|||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.notification.NotificationType;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.notification.NotificationType;
|
||||||
|
import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -167,7 +167,10 @@ public class DossierController implements DossierResource {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Stream.concat(members.stream(), approvers.stream())
|
Set<String> uniqueMembers = new LinkedHashSet<>(members);
|
||||||
|
uniqueMembers.addAll(approvers);
|
||||||
|
|
||||||
|
uniqueMembers.stream()
|
||||||
.filter(member -> !member.equals(ownerId) && !member.equals(KeycloakSecurity.getUserId()) && (existingDossier.getMemberIds() == null || !existingDossier.getMemberIds()
|
.filter(member -> !member.equals(ownerId) && !member.equals(KeycloakSecurity.getUserId()) && (existingDossier.getMemberIds() == null || !existingDossier.getMemberIds()
|
||||||
.contains(member)))
|
.contains(member)))
|
||||||
.forEach(member -> notificationPersistenceService.insertNotification(AddNotificationRequest.builder()
|
.forEach(member -> notificationPersistenceService.insertNotification(AddNotificationRequest.builder()
|
||||||
|
|||||||
@ -42,7 +42,6 @@ public interface NotificationResource {
|
|||||||
@ResponseStatus(value = HttpStatus.NO_CONTENT)
|
@ResponseStatus(value = HttpStatus.NO_CONTENT)
|
||||||
@Operation(summary = "Mark a notifications as seen or unseen", description = "None")
|
@Operation(summary = "Mark a notifications as seen or unseen", description = "None")
|
||||||
@ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK")})
|
@ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK")})
|
||||||
|
|
||||||
@PostMapping(value = NOTIFICATION_PATH + TOGGLE_SEEN_PATH, consumes = MediaType.APPLICATION_JSON_VALUE)
|
@PostMapping(value = NOTIFICATION_PATH + TOGGLE_SEEN_PATH, consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||||
void toggleNotificationSeen(@RequestBody List<String> notificationIds, @RequestParam(SET_SEEN_PARAM) boolean setSeen);
|
void toggleNotificationSeen(@RequestBody List<String> notificationIds, @RequestParam(SET_SEEN_PARAM) boolean setSeen);
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user