Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,26 @@ public ResponseEntity<UserDTO> updateUserById(
@ModelAttribute @Valid UserCreateEditDTO userCreateEditDTO,
Authentication authentication) {
userService.allowedToEditUser(id, authentication.getName());
return ResponseEntity.ok(userService.update(id, userCreateEditDTO));
return ResponseEntity.ok(userService.updateUserById(id, userCreateEditDTO));
}

@Operation(
summary = "Изменение данных авторизованного пользователя",
description = "Метод, для того чтобы пользователь изменил данные своего профиля"
)
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Успешно"),
@ApiResponse(responseCode = "404", description = "Пользователь не найден", content = @Content),
@ApiResponse(responseCode = "422", description = "Ошибка валидации", content = @Content),
@ApiResponse(responseCode = "500", description = "Непредвиденная ошибка со стороны сервера", content = @Content)
})
@PreAuthorize("hasAuthority('ROLE_ADMIN') or hasAuthority('ROLE_USER')")
@SecurityRequirement(name = "JWT")
@PatchMapping(path = "/me", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<UserDTO> updateUser(
@ModelAttribute @Valid UserCreateEditDTO userCreateEditDTO,
Authentication authentication) {
return ResponseEntity.ok(userService.updateUserByEmail(authentication.getName(), userCreateEditDTO));
}

@Operation(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,17 @@ public interface UserService {

User getUserById(Long id);

UserDTO save(UserDTO userDTO);

UserDTO createWithImage(UserCreateEditDTO userCreateEditDTO);

void deleteById(long id);

ImageDTO uploadImage(MultipartFile file, long id);

UserDTO update(long id, UserCreateEditDTO userCreateEditDTO);
UserDTO updateUserById(long id, UserCreateEditDTO userCreateEditDTO);

UserDTO updateUser(User user, UserCreateEditDTO userCreateEditDTO);

UserDTO updateUserByEmail(String email, UserCreateEditDTO userCreateEditDTO);

boolean allowedToEditUser(long id, String email);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,16 +67,6 @@ public UserDTO findById(Long id) {
return userMapper.fromUser(getUserById(id));
}

@Transactional
@Override
public UserDTO save(UserDTO userDTO) {
User user = userMapper.fromDTO(userDTO);
user.setRegistrationDate(LocalDate.now());

user = userRepository.save(user);
return userMapper.fromUser(user);
}

@Transactional
@Override
public UserDTO createWithImage(UserCreateEditDTO userCreateEditDTO) {
Expand Down Expand Up @@ -111,35 +101,36 @@ public ImageDTO uploadImage(MultipartFile file, long id) {

@Transactional
@Override
public UserDTO update(long id, UserCreateEditDTO userCreateEditDTO) {
public UserDTO updateUserByEmail(String email, UserCreateEditDTO userCreateEditDTO) {
User user = userRepository.findByEmail(email).orElseThrow(
() -> new NotFoundException(String.format("User with email %s not found", email))
);

return updateUser(user, userCreateEditDTO);
}

@Transactional
@Override
public UserDTO updateUserById(long id, UserCreateEditDTO userCreateEditDTO) {
User user = getUserById(id);

if (userCreateEditDTO.getName() != null && !userCreateEditDTO.getName().isBlank()) {
user.setName(userCreateEditDTO.getName());
}
if (userCreateEditDTO.getSurname() != null && !userCreateEditDTO.getSurname().isBlank()) {
user.setSurname(userCreateEditDTO.getSurname());
}
if (userCreateEditDTO.getEmail() != null && !userCreateEditDTO.getEmail().isBlank()) {
user.setEmail(userCreateEditDTO.getEmail());
}
if (userCreateEditDTO.getBirthDate() != null) {
user.setBirthDate(userCreateEditDTO.getBirthDate());
}
return updateUser(user, userCreateEditDTO);
}

if (userCreateEditDTO.getGender() != null) {
user.setGender(userCreateEditDTO.getGender());
}
@Transactional
@Override
public UserDTO updateUser(User user, UserCreateEditDTO userCreateEditDTO) {

if (userCreateEditDTO.getRole() != null) {
user.setRole(userCreateEditDTO.getRole());
}
User updatedUser = userMapper.fromUserCreateEditDTO(userCreateEditDTO);

updatedUser.setUserId(user.getUserId());
updatedUser.setRegistrationDate(user.getRegistrationDate());

if (userCreateEditDTO.getFile() != null && !userCreateEditDTO.getFile().isEmpty()) {
return uploadImage(userCreateEditDTO.getFile(), user);
return uploadImage(userCreateEditDTO.getFile(), updatedUser);
}

return userMapper.fromUser(userRepository.save(user));
return userMapper.fromUser(userRepository.save(updatedUser));
}

@Override
Expand Down
Loading