diff --git a/buisnesslogic/src/main/java/com/plannaplan/services/UserService.java b/buisnesslogic/src/main/java/com/plannaplan/services/UserService.java index 4ef2800..8769809 100755 --- a/buisnesslogic/src/main/java/com/plannaplan/services/UserService.java +++ b/buisnesslogic/src/main/java/com/plannaplan/services/UserService.java @@ -186,4 +186,11 @@ public class UserService { return response; } + /** + * @return ammount of how many users haven't created an assignment yet + */ + public Integer getAmmountOfUsersWithNoAssignedGroups() { + return this.getAllStudents().size() - this.getAmmountOfUsersWithAssignedGroups(); + } + } diff --git a/restservice/src/main/java/com/plannaplan/controllers/StatisticsController.java b/restservice/src/main/java/com/plannaplan/controllers/StatisticsController.java index 961e790..5454e10 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/StatisticsController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/StatisticsController.java @@ -55,4 +55,15 @@ public class StatisticsController { return new ResponseEntity<>(response, HttpStatus.OK); } + /** + * @return amount of students not registered to any groups + */ + @PreAuthorize("hasRole('ROLE_DEANERY')") + @GetMapping(path = "/users/noregistered") + public ResponseEntity getNonCommisionsAmmounts() { + final StatisticSimpleNumberResponse response = new StatisticSimpleNumberResponse( + this.userService.getAmmountOfUsersWithNoAssignedGroups()); + return new ResponseEntity<>(response, HttpStatus.OK); + } + } diff --git a/restservice/src/test/java/com/plannaplan/controllers/StatisticsControllerTest.java b/restservice/src/test/java/com/plannaplan/controllers/StatisticsControllerTest.java index 91612eb..c85a72e 100755 --- a/restservice/src/test/java/com/plannaplan/controllers/StatisticsControllerTest.java +++ b/restservice/src/test/java/com/plannaplan/controllers/StatisticsControllerTest.java @@ -24,6 +24,7 @@ public class StatisticsControllerTest extends AbstractControllerTest { private static final String GROUP_AMMOUNTS_ENDPOINT = "/api/v1/statistics/groups/created"; private static final String USER_ASSIGNED_AMMOUNTS_ENDPOINT = "/api/v1/statistics/users/registered"; + private static final String USER_NO_ASSIGNED_AMMOUNTS_ENDPOINT = "/api/v1/statistics/users/noregistered"; @Autowired private UserService userService; @@ -97,4 +98,39 @@ public class StatisticsControllerTest extends AbstractControllerTest { mockMvc.perform(get(USER_ASSIGNED_AMMOUNTS_ENDPOINT)).andExpect(status().is4xxClientError()); } + + /* USERS NO ASSIGNED TESTS */ + + @Test + public void shouldFailWithWrongAccesNoRegisteredStudentsAmmount() throws Exception { + final String mail = "shouldFailWithWrongAccesNoRegisteredStudentsAmmount@StatisticsController.test"; + final User usr = this.userService.save(new User(null, null, mail, UserRoles.TEST_USER)); + + final String token = this.userService.login(usr).getToken(); + + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); + mockMvc.perform(get(USER_NO_ASSIGNED_AMMOUNTS_ENDPOINT).header("Authorization", "Bearer " + token)) + .andExpect(status().is4xxClientError()); + + } + + @Test + public void shouldOkGettingNoRegisteredStudentsAmmount() throws Exception { + final String mail = "shouldOkGettingNoRegisteredStudentsAmmount@StatisticsController.test"; + final User usr = this.userService.save(new User(null, null, mail, UserRoles.DEANERY)); + + final String token = this.userService.login(usr).getToken(); + + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); + mockMvc.perform(get(USER_NO_ASSIGNED_AMMOUNTS_ENDPOINT).header("Authorization", "Bearer " + token)) + .andExpect(status().isOk()); + + } + + @Test + public void shouldFailWithNoTokenNoRegisteredStudentsAmmount() throws Exception { + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); + mockMvc.perform(get(USER_NO_ASSIGNED_AMMOUNTS_ENDPOINT)).andExpect(status().is4xxClientError()); + + } }