From 016acaaa0f3059a752c0e3ecb0c42176c5046548 Mon Sep 17 00:00:00 2001 From: George Kalampokis Date: Mon, 19 Jul 2021 18:34:29 +0300 Subject: [PATCH] When counting organizations for the user count only the active ones --- .../eu/eudat/data/dao/criteria/OrganisationCriteria.java | 9 +++++++++ .../eu/eudat/data/dao/entities/OrganisationDaoImpl.java | 5 +++++ .../java/eu/eudat/logic/managers/DashBoardManager.java | 5 ++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/dmp-backend/data/src/main/java/eu/eudat/data/dao/criteria/OrganisationCriteria.java b/dmp-backend/data/src/main/java/eu/eudat/data/dao/criteria/OrganisationCriteria.java index 5cc857a24..30e437df0 100644 --- a/dmp-backend/data/src/main/java/eu/eudat/data/dao/criteria/OrganisationCriteria.java +++ b/dmp-backend/data/src/main/java/eu/eudat/data/dao/criteria/OrganisationCriteria.java @@ -5,6 +5,7 @@ import eu.eudat.data.entities.Organisation; public class OrganisationCriteria extends Criteria { private String labelLike; private Boolean isPublic; + private boolean isActive; public String getLabelLike() { return labelLike; @@ -19,4 +20,12 @@ public class OrganisationCriteria extends Criteria { public void setPublic(Boolean aPublic) { isPublic = aPublic; } + + public boolean isActive() { + return isActive; + } + + public void setActive(boolean active) { + isActive = active; + } } diff --git a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/OrganisationDaoImpl.java b/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/OrganisationDaoImpl.java index 6d2e63ee2..3892e7a04 100644 --- a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/OrganisationDaoImpl.java +++ b/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/OrganisationDaoImpl.java @@ -38,6 +38,11 @@ public class OrganisationDaoImpl extends DatabaseAccess implements query.where((builder, root) -> builder.equal(root.join("dmps", JoinType.LEFT).get("status"), DMP.DMPStatus.FINALISED.getValue())); } } + + if (criteria.isActive()) { + query.where((builder, root) -> builder.notEqual(root.join("dmps").get("status"), DMP.DMPStatus.DELETED.getValue())).distinct(); + } + return query; } diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java index a01ef19ef..01eb9e4e4 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java @@ -137,6 +137,9 @@ public class DashBoardManager { grantCriteria.setActive(true); + OrganisationCriteria organisationCriteria = new OrganisationCriteria(); + organisationCriteria.setActive(true); + List roles = new LinkedList<>(); List finalDmps = dmps; CompletableFuture dmpFuture = dataManagementPlanRepository.getAuthenticated((dmps != null && !dmps.isEmpty()) ? dataManagementPlanRepository.asQueryable().where((builder, root) -> root.get("id").in(finalDmps.stream().map(Dmp::getId).collect(Collectors.toList()))) : dataManagementPlanRepository.getWithCriteria(dataManagementPlanCriteria), principal.getId(), roles).distinct().countAsync() @@ -146,7 +149,7 @@ public class DashBoardManager { .whenComplete((datasetsStats, throwable) -> statistics.setTotalDataSetCount(datasetsStats)); CompletableFuture grantFuture = grantRepository.getAuthenticated(grantRepository.getWithCriteria(grantCriteria), user).countAsync() .whenComplete((grantsStats, throwable) -> statistics.setTotalGrantCount(grantsStats)); - CompletableFuture orgnanisationFuture = organisationRepository.getAuthenticated(organisationRepository.asQueryable().withHint("organisationRecentActivity"), user).countAsync() + CompletableFuture orgnanisationFuture = organisationRepository.getAuthenticated(organisationRepository.getWithCriteria(organisationCriteria).withHint("organisationRecentActivity"), user).countAsync() .whenComplete((organisationStats, throwable) -> statistics.setTotalOrganisationCount(organisationStats)); CompletableFuture.allOf(dmpFuture, datasetFuture, grantFuture, orgnanisationFuture).join();