RED-9393: user stats endpoint

added endpoint
This commit is contained in:
yhampe 2024-07-10 08:27:39 +02:00
parent 98c2aed8ba
commit ecddef1851
3 changed files with 15 additions and 10 deletions

View File

@ -1,14 +1,16 @@
package com.iqser.red.persistence.service.v1.external.api.impl.controller; 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.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.RestController; 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.DossierEntity;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; 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.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.persistence.FileStatusPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.users.UserService; import com.iqser.red.service.persistence.management.v1.processor.service.users.UserService;
import com.iqser.red.service.persistence.service.v1.api.external.model.UserStats; 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 UserService userService;
private final DossierService dossierService; private final DossierService dossierService;
private final FileStatusManagementService fileStatusManagementService;
private final FileStatusPersistenceService fileStatusPersistenceService; private final FileStatusPersistenceService fileStatusPersistenceService;
@Override @Override
@PreAuthorize("hasAuthority('" + READ_USER_STATS + "')")
public UserStats getUserStats(String userId) { public UserStats getUserStats(String userId) {
if (userService.getUserById(userId) == null) { if (userService.getUserById(userId) == null) {
return null; return null;
} }
List<DossierEntity> allDossiers = dossierService.getAllDossiers(); List<DossierEntity> allDossiers = dossierService.getAllDossiers();
List<FileEntity> allFiels = fileStatusPersistenceService.getAllFiles() List<FileEntity> allFiles = fileStatusPersistenceService.getAllFiles()
.stream() .stream()
.filter(fileEntity -> fileEntity.getAssignee() != null)
.filter(file -> file.getAssignee().equals(userId)) .filter(file -> file.getAssignee().equals(userId))
.collect(Collectors.toList()); .collect(Collectors.toList());
int numberOfDossierOwnerships = allDossiers.stream() int numberOfDossierOwnerships = allDossiers.stream()
.filter(fileEntity -> fileEntity.getOwnerId() != null)
.filter(dossier -> dossier.getOwnerId().equals(userId)) .filter(dossier -> dossier.getOwnerId().equals(userId))
.collect(Collectors.toList()).size(); .collect(Collectors.toList()).size();
int numberOfDossierMemberships = allDossiers.stream() int numberOfDossierMemberships = allDossiers.stream()
.filter(fileEntity -> fileEntity.getMemberIds() != null)
.filter(dossier -> dossier.getMemberIds().contains(userId)) .filter(dossier -> dossier.getMemberIds().contains(userId))
.collect(Collectors.toList()).size(); .collect(Collectors.toList()).size();
int numberOfAssignedFiles = allFiels.size(); int numberOfAssignedFiles = allFiles.size();
return UserStats.builder() return new UserStats(numberOfDossierMemberships, numberOfDossierOwnerships, numberOfAssignedFiles);
.numberOfDossierOwnerships(numberOfDossierOwnerships)
.numberOfDossierMemberships(numberOfDossierMemberships)
.numberOfAssignedFiles(numberOfAssignedFiles)
.build();
} }
} }

View File

@ -4,10 +4,10 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.Setter;
@Data @Data
@Builder @Builder
@NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class UserStats { public class UserStats {

View File

@ -171,6 +171,10 @@ public final class ActionRoles {
// RSS // RSS
public static final String GET_RSS = "red-get-rss"; public static final String GET_RSS = "red-get-rss";
// USER STATS
public static final String READ_USER_STATS = "red-get-user-stats";
// Multitenancy // Multitenancy
public static final String CREATE_TENANT = "red-create-tenant"; public static final String CREATE_TENANT = "red-create-tenant";
public static final String GET_TENANTS = "red-get-tenants"; public static final String GET_TENANTS = "red-get-tenants";