Wnioski o kwalifikacje pracownikow#52
Conversation
mistermotopl
left a comment
There was a problem hiding this comment.
Ogólnie wygląda git
|
|
||
| List<Qualification> allowedQualifications = qualificationRepository.findAllByIdInAndUserSupervisorId(ids, managerId); | ||
|
|
||
| if (allowedQualifications.size() != ids.size()) { |
There was a problem hiding this comment.
Nie powinniśmy rzucać ACCESS_DENIED w sekcji z logiką biznesową, a raczej taki rodzaj błędu tutaj niezbyt pasuje.
| for (Qualification qualification : allowedQualifications) { | ||
| var action = activeRequestsMap.get(qualification.getId()).action(); | ||
|
|
||
| validateWaitingStatus(qualification); |
There was a problem hiding this comment.
Jeżeli chcemy tytlko WAITING to można też odrazu z bazy pobrać tylko kwalifikacje z WAITING.
There was a problem hiding this comment.
z uwagi na to, że wyżej ma miejsce taka walidacja:
if (allowedQualifications.size() != ids.size()) {
throw new ApplicationException(ApiErrorCode.QUALIFICATION_OWNER_NOT_SUBORDINATE);
}to rozmiary mogłyby się nie zgadzać m.in. przez wyciągnięcie samych rekordów ze statusem WAITING, chyba najprościej jest to rozwiązać wyciągając wszystkie i sprawdzać na dalszym etapie czy coś ma inny status niż waiting
| validateWaitingStatus(qualification); | ||
|
|
||
| if (action == QualificationUpdateAction.ACCEPT) { | ||
| qualification.setStatus(QualificationStatus.ACCEPTED); |
There was a problem hiding this comment.
Tą logike też można przenieść do encji Qualification.
| variant="outline" | ||
| className="border-amber-500 text-amber-700 bg-amber-50 font-medium" | ||
| > | ||
| {count} {count === 1 ? 'WNIOSEK' : 'WNIOSKI'} OCZEKUJĄCE |
There was a problem hiding this comment.
Jak chcemy być dokładni to:
- dla 1 WNIOSEK
- dla 2 do 4 WNIOSKI
- reszta to WNIOSKÓW
| @GetMapping("/qualifications/details") | ||
| @PreAuthorize("hasRole('LINEAR_MANAGER')") | ||
| public ResponseEntity<List<QualificationDetailsResponse>> getQualificationRequestDetails( | ||
| @AuthenticationPrincipal UserPrincipal principal, | ||
| @RequestParam UUID userId | ||
| ) { | ||
| return ResponseEntity.ok(qualificationService.getPendingForUser(principal.userId(), userId)); |
There was a problem hiding this comment.
Myślę, że warto sprawdzić czy manager liniowy jest managerem użytkownika, którego kwalifikacje chce zobaczyć, można wykorzystać preauthorize
dodałem obsługę wniosków o kwalifikacje pracownika