change package,change message_code
Test Workflow / test (push) Waiting to run

This commit is contained in:
vladp
2025-12-10 19:12:54 +07:00
parent 76da2e94c9
commit a30b0488e8
60 changed files with 154 additions and 161 deletions
@@ -0,0 +1,86 @@
package ru.soune.nocopy.service;
import lombok.AllArgsConstructor;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import ru.soune.nocopy.dto.ChangePasswordRequest;
import ru.soune.nocopy.dto.UserDTO;
import ru.soune.nocopy.dto.UserRequest;
import ru.soune.nocopy.entity.User;
import ru.soune.nocopy.exception.InvalidUserEmail;
import ru.soune.nocopy.exception.NotValidationPasswordException;
import ru.soune.nocopy.exception.UserNotFoundException;
import ru.soune.nocopy.repository.UserRepository;
@Service
@AllArgsConstructor
public class UserService {
private final UserRepository userRepository;
private final PasswordEncoder passwordEncoder;
@Transactional
public User changePassword(User user, ChangePasswordRequest request) {
if (!passwordEncoder.matches(request.getCurrentPassword(), user.getPassword())) {
throw new NotValidationPasswordException("Current password is incorrect");
}
user.setPassword(passwordEncoder.encode(request.getNewPassword()));
return userRepository.save(user);
}
@Transactional
public UserDTO updateUser(UserRequest userRequest, User currentUser) {
User user = userRepository.findById(currentUser.getId())
.orElseThrow(() -> new UserNotFoundException("User not found with id: " + currentUser.getId()));
updateUserFromRequest(user, userRequest);
User updatedUser = userRepository.save(user);
return mapToDTO(updatedUser);
}
private void updateUserFromRequest(User user, UserRequest request) {
if (request.getFullName() != null) {
user.setFullName(request.getFullName());
}
if (request.getCompany() != null) {
user.setCompany(request.getCompany());
}
if (request.getEmail() != null && !request.getEmail().equals(user.getEmail())) {
if (userRepository.existsByEmail(request.getEmail())) {
throw new InvalidUserEmail("Email already exists: " + request.getEmail());
}
user.setEmail(request.getEmail());
}
if (request.getPhone() != null) {
user.setPhone(request.getPhone());
}
if (request.getGenderType() != null) {
user.setGenderType(request.getGenderType());
}
if (request.getBirthday() != null) {
user.setBirthday(request.getBirthday());
}
}
private UserDTO mapToDTO(User user) {
return UserDTO.builder()
.fullName(user.getFullName())
.email(user.getEmail())
.company(user.getCompany())
.phone(user.getPhone())
.genderType(user.getGenderType())
.birthday(user.getBirthday())
.subscriptionType(user.getSubscriptionType())
.createdAt(user.getCreatedAt())
.build();
}
}