Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package eu.hexgate.sexyrankbackend.domain.users;
- import eu.hexgate.sexyrankbackend.domain.shared.AppError;
- import eu.hexgate.sexyrankbackend.domain.users.api.EmptyRequireData;
- import eu.hexgate.sexyrankbackend.domain.users.api.UserDto;
- import io.vavr.collection.List;
- import io.vavr.control.Either;
- class UsersFactory {
- Either<AppError, User> create(UserDto dto) {
- return getValidUserOrReturnError(dto)
- .map(this::toDto);
- }
- private Either<AppError, UserDto> getValidUserOrReturnError(UserDto userDto) {
- List<String> errors = List.empty();
- if (userDto.getEmail() == null)
- errors = errors.append("email");
- if (userDto.getUsername() == null)
- errors = errors.append("username");
- if (userDto.getGender() == null)
- errors = errors.append("gender");
- return errors.isEmpty() ?
- Either.right(userDto) :
- Either.left(new EmptyRequireData(String.join(", ", errors.toJavaList())));
- }
- private User toDto(UserDto dto) {
- return User.builder()
- .birthday(new Birthday(dto.getBirthday()))
- .email(new Email(dto.getEmail()))
- .username(new Username(dto.getUsername()))
- .photos(createPhotos(dto.getPhotos()))
- .gender(Gender.from(dto.getGender()))
- .rank(Rank.ofStartValue())
- .points(Points.zero())
- .build();
- }
- private Photos createPhotos(java.util.List<String> photosStr) {
- return new Photos(List.ofAll(
- photosStr
- .stream()
- .map(Photo::new))
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement