40 lines
1.3 KiB
Java
40 lines
1.3 KiB
Java
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<User> get(@PESEL String pesel) {
|
|
return userRepository.findById(pesel).map(UserMapper::entityToPojo);
|
|
}
|
|
|
|
public User update(User user) {
|
|
return UserMapper.entityToPojo(userRepository.save(UserMapper.pojoToEntity(user)));
|
|
}
|
|
|
|
}
|