nOy39

Untitled

Oct 8th, 2018
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.50 KB | None | 0 0
  1. /**
  2. * Метод создания менеджера, принимает на вход addRequest существующего пользователя
  3. * проверяет наличие пользователя в базе, если пользователь не найден выкидывает
  4. * Exception и
  5. * @param addRequest payload ManagerAddRequest от пользователя приходит в виде JSON, содержит
  6. * user_id, Manager_FirstName, Manager_LastName.
  7. * @param userPrincipal авторизированный пользователь.
  8. * @return возвращает Response содержащий payload ApiResponse который содержит
  9. * статус выполнения операции с сообщением в формате JSON.
  10. */
  11. @PreAuthorize("hasRole('ADMIN')")
  12. @PostMapping("/add")
  13. public ResponseEntity<?> newManager(
  14. @Valid @RequestBody ManagerAddRequest addRequest,
  15. @CurrentUser UserPrincipal userPrincipal) {
  16. boolean isManager;
  17. Optional<User> userById = userRepo.findById(addRequest.getUserId());
  18.  
  19. try {
  20. isManager = userById.get().getRoles()
  21. .stream()
  22. .map(Role::getName)
  23. .anyMatch(n -> n == RoleName.ROLE_MANAGER);
  24.  
  25. } catch (NoSuchElementException e) {
  26. return new ResponseEntity<>(new ApiResponse(false, "User not found"),
  27. HttpStatus.NO_CONTENT);
  28. }
  29. if (!isManager) {
  30. Manager manager = new Manager(addRequest.getFirstName(),
  31. addRequest.getLastName(),
  32. userById.get(),
  33. userRepo.findByUsername(userPrincipal.getUsername()).get());
  34. try {
  35. managerRepo.save(manager);
  36. userRepo.save(roleService.addRole(
  37. userById.get(),
  38. RoleName.ROLE_MANAGER)
  39. );
  40.  
  41. } catch (Exception e) {
  42. //todo вставить сюда логирование
  43. return new ResponseEntity<>(new ApiResponse(false, "Something Shit"),
  44. HttpStatus.INTERNAL_SERVER_ERROR);
  45. }
  46. } else {
  47. return new ResponseEntity<>(new ApiResponse(false, "User is manager"),
  48. HttpStatus.EXPECTATION_FAILED);
  49. }
  50. return ResponseEntity.ok(new ApiResponse(true, "Manager added"));
  51. }
Add Comment
Please, Sign In to add comment