RED-9393: user stats endpoint

added endpoint
This commit is contained in:
yhampe 2024-07-10 08:27:39 +02:00
parent 05a1a7de54
commit 21ed61bc61
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;
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<DossierEntity> allDossiers = dossierService.getAllDossiers();
List<FileEntity> allFiels = fileStatusPersistenceService.getAllFiles()
List<FileEntity> 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);
}
}

View File

@ -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 {

View File

@ -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";