From 21ed61bc61f99f0184fb6c07f4d3f189c6cdc2cd Mon Sep 17 00:00:00 2001 From: yhampe Date: Wed, 10 Jul 2024 08:27:39 +0200 Subject: [PATCH] RED-9393: user stats endpoint added endpoint --- .../impl/controller/UserStatsController.java | 19 ++++++++++--------- .../v1/api/external/model/UserStats.java | 2 +- .../v1/processor/roles/ActionRoles.java | 4 ++++ 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java index 25135a9ec..45891c46e 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UserStatsController.java @@ -1,14 +1,16 @@ package com.iqser.red.persistence.service.v1.external.api.impl.controller; +import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.READ_USER_STATS; + import java.util.List; import java.util.stream.Collectors; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.RestController; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; import com.iqser.red.service.persistence.management.v1.processor.service.DossierService; -import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusManagementService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.users.UserService; import com.iqser.red.service.persistence.service.v1.api.external.model.UserStats; @@ -24,33 +26,32 @@ public class UserStatsController implements UserStatsResource { private final UserService userService; private final DossierService dossierService; - private final FileStatusManagementService fileStatusManagementService; private final FileStatusPersistenceService fileStatusPersistenceService; @Override + @PreAuthorize("hasAuthority('" + READ_USER_STATS + "')") public UserStats getUserStats(String userId) { if (userService.getUserById(userId) == null) { return null; } List allDossiers = dossierService.getAllDossiers(); - List allFiels = fileStatusPersistenceService.getAllFiles() + List allFiles = fileStatusPersistenceService.getAllFiles() .stream() + .filter(fileEntity -> fileEntity.getAssignee() != null) .filter(file -> file.getAssignee().equals(userId)) .collect(Collectors.toList()); int numberOfDossierOwnerships = allDossiers.stream() + .filter(fileEntity -> fileEntity.getOwnerId() != null) .filter(dossier -> dossier.getOwnerId().equals(userId)) .collect(Collectors.toList()).size(); int numberOfDossierMemberships = allDossiers.stream() + .filter(fileEntity -> fileEntity.getMemberIds() != null) .filter(dossier -> dossier.getMemberIds().contains(userId)) .collect(Collectors.toList()).size(); - int numberOfAssignedFiles = allFiels.size(); - return UserStats.builder() - .numberOfDossierOwnerships(numberOfDossierOwnerships) - .numberOfDossierMemberships(numberOfDossierMemberships) - .numberOfAssignedFiles(numberOfAssignedFiles) - .build(); + int numberOfAssignedFiles = allFiles.size(); + return new UserStats(numberOfDossierMemberships, numberOfDossierOwnerships, numberOfAssignedFiles); } } diff --git a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/model/UserStats.java b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/model/UserStats.java index b42656c94..1988b77b1 100644 --- a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/model/UserStats.java +++ b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/model/UserStats.java @@ -4,10 +4,10 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.Setter; @Data @Builder -@NoArgsConstructor @AllArgsConstructor public class UserStats { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/roles/ActionRoles.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/roles/ActionRoles.java index cb81b38d3..3db46c5a1 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/roles/ActionRoles.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/roles/ActionRoles.java @@ -171,6 +171,10 @@ public final class ActionRoles { // RSS public static final String GET_RSS = "red-get-rss"; + // USER STATS + + public static final String READ_USER_STATS = "red-get-user-stats"; + // Multitenancy public static final String CREATE_TENANT = "red-create-tenant"; public static final String GET_TENANTS = "red-get-tenants";