From 9b3d6f2fbbef05987e1c67736f438f78c7bfdb18 Mon Sep 17 00:00:00 2001 From: "k.triantafyllou" Date: Thu, 9 Sep 2021 19:25:44 +0300 Subject: [PATCH] Add methods to count members of an entity and members by type --- .../controllers/MemberController.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/MemberController.java b/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/MemberController.java index 951db15..a454715 100644 --- a/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/MemberController.java +++ b/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/MemberController.java @@ -20,6 +20,7 @@ import org.springframework.web.client.HttpClientErrorException; import java.util.Collection; import java.util.HashSet; import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; @RestController @RequestMapping("/member") @@ -68,6 +69,32 @@ public class MemberController { throw new ResourceNotFoundException("Role has not been found"); } + /** + * Get the number of the members of a type(Community, etc.) with id(ee, egi, etc.) + */ + @RequestMapping(value = "/{type}/{id}/count", method = RequestMethod.GET) + public ResponseEntity getCount(@PathVariable("type") String type, @PathVariable("id") String id) { + Integer couId = registryService.getCouId(AuthoritiesUtils.memberRole(type, id)); + if (couId != null) { + JsonArray users = registryService.getUserIdByCouId(couId, false); + return ResponseEntity.ok((users.size())); + } + throw new ResourceNotFoundException("Role has not been found"); + } + + /** + * Get the number of the members of a type(Community, etc.) + */ + @RequestMapping(value = "/{type}/count", method = RequestMethod.GET) + public ResponseEntity getCountByType(@PathVariable("type") String type) { + JsonArray cous = registryService.getCous(type + "."); + AtomicInteger counter = new AtomicInteger(0); + cous.forEach(cou -> { + counter.addAndGet(registryService.getUserIdByCouId(cou.getAsJsonObject().get("Id").getAsInt(), false).size()); + }); + return ResponseEntity.ok(counter.get()); + } + /** * Assign member role to logged in user or user with @email * If role doesn't exists, use force=true to create and assign the role