package eu.ztsh.wymiana.service; import eu.ztsh.wymiana.data.repository.UserRepository; import eu.ztsh.wymiana.exception.UserAlreadyExistsException; import eu.ztsh.wymiana.model.User; import eu.ztsh.wymiana.util.UserMapper; import eu.ztsh.wymiana.validation.InstanceValidator; import eu.ztsh.wymiana.web.model.UserCreateRequest; import lombok.RequiredArgsConstructor; import org.hibernate.validator.constraints.pl.PESEL; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import java.util.Optional; @Validated @RequiredArgsConstructor @Service public class UserService { private final UserRepository userRepository; private final InstanceValidator validator; public User create(UserCreateRequest request) { validator.validate(request); if (userRepository.findById(request.pesel()).isPresent()) { throw new UserAlreadyExistsException(request); } return UserMapper.entityToPojo(userRepository.save(UserMapper.requestToEntity(request))); } public Optional get(@PESEL String pesel) { return userRepository.findById(pesel).map(UserMapper::entityToPojo); } public User update(User user) { return UserMapper.entityToPojo(userRepository.save(UserMapper.pojoToEntity(user))); } }