ExternalUserServiceImpl.java

package fr.avenirsesr.portfolio.user.domain.service;

import fr.avenirsesr.portfolio.common.data.domain.model.enums.EUserCategory;
import fr.avenirsesr.portfolio.common.error.domain.exception.UserNotFoundException;
import fr.avenirsesr.portfolio.user.domain.model.ExternalUser;
import fr.avenirsesr.portfolio.user.domain.model.enums.EExternalSource;
import fr.avenirsesr.portfolio.user.domain.port.input.ExternalUserService;
import fr.avenirsesr.portfolio.user.domain.port.output.repository.ExternalUserRepository;
import fr.avenirsesr.portfolio.user.domain.port.output.repository.UserRepository;
import java.util.UUID;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@AllArgsConstructor
public class ExternalUserServiceImpl implements ExternalUserService {
  private final UserRepository userRepository;
  private final ExternalUserRepository externalUserRepository;

  @Override
  public ExternalUser importExternalUser(
      UUID userId,
      String firstName,
      String lastName,
      String email,
      EUserCategory category,
      String externalId,
      EExternalSource source) {
    var user = userRepository.findById(userId).orElseThrow(UserNotFoundException::new);
    var externalUser =
        ExternalUser.create(user, externalId, source, category, firstName, lastName, email);
    externalUserRepository.save(externalUser);
    return externalUser;
  }
}