diff --git a/src/main/java/de/hmmh/pmt/ApiController.java b/src/main/java/de/hmmh/pmt/ApiController.java index 5d2a8f4..5c07ff5 100644 --- a/src/main/java/de/hmmh/pmt/ApiController.java +++ b/src/main/java/de/hmmh/pmt/ApiController.java @@ -19,8 +19,8 @@ import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.RestClientException; import java.time.ZoneOffset; -import java.util.List; -import java.util.Optional; +import java.util.*; +import java.util.stream.Collectors; @Controller @RequestMapping("${openapi.projectManagement.base-path:/api/v1}") @@ -153,4 +153,30 @@ public class ApiController implements DefaultApi { allocationRepository.delete(allocation.get()); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } + + @Override + public ResponseEntity> getAListOfAllEmployeesFromASpecificProject(Long id) { + if (!projectRepository.existsById(id)) { + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + + List allocationsByProject = allocationRepository.findAllByProjectId(id); + if (allocationsByProject.isEmpty()) { + return new ResponseEntity<>(Collections.emptyList(), HttpStatus.OK); + } + + Set employeeIds = allocationsByProject.stream() + .map(Allocation::getEmployeeId) + .collect(Collectors.toSet()); + + List employees = apiClientFactory.getEmployeeApi().findAll1().stream() + .filter(employeeResponseDTO -> employeeIds.contains(employeeResponseDTO.getId())) + .toList(); + + // Was wenn, die Liste der Allocation und die Liste der EmployeeResponseDTO nicht die gleiche Anzahl haben. + // Das EmployeeResponseDTO wird vom EmployeeService gestellt, sollte man die Daten auf eigenes DTO mappen. + + return new ResponseEntity<>(employees, HttpStatus.OK); + + } }