konta-walutowe/src/main/java/eu/ztsh/wymiana/service/UserService.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)));
}
}