RED-9393: user stats endpoint
added endpoint
This commit is contained in:
parent
98c2aed8ba
commit
ecddef1851
@ -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();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|
||||||
|
|||||||
@ -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";
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user