All Downloads are FREE. Search and download functionalities are using the official Maven repository.

uk.co.mruoc.nac.api.converter.ApiUserConverter Maven / Gradle / Ivy

package uk.co.mruoc.nac.api.converter;

import java.util.Collection;
import java.util.Collections;
import java.util.Optional;
import lombok.RequiredArgsConstructor;
import uk.co.mruoc.nac.api.dto.ApiCandidateGamePlayer;
import uk.co.mruoc.nac.api.dto.ApiCreateUserRequest;
import uk.co.mruoc.nac.api.dto.ApiUpdateUserRequest;
import uk.co.mruoc.nac.api.dto.ApiUser;
import uk.co.mruoc.nac.api.dto.ApiUserPage;
import uk.co.mruoc.nac.api.dto.ApiUserPageRequest;
import uk.co.mruoc.nac.entities.UpsertUserRequest;
import uk.co.mruoc.nac.entities.User;
import uk.co.mruoc.nac.entities.UserName;
import uk.co.mruoc.nac.entities.UserPage;
import uk.co.mruoc.nac.entities.UserPageRequest;

@RequiredArgsConstructor
public class ApiUserConverter {

  private final ApiSortConverter sortConverter;

  public ApiUserConverter() {
    this(new ApiSortConverter());
  }

  public UserPageRequest toRequest(ApiUserPageRequest apiRequest) {
    return UserPageRequest.builder()
        .limit(apiRequest.getLimit())
        .offset(apiRequest.getOffset())
        .sort(sortConverter.toSort(apiRequest.getSort()))
        .groups(apiRequest.getGroups())
        .searchTerm(apiRequest.getSearchTerm())
        .build();
  }

  public ApiUserPage toApiUserPage(UserPage page) {
    return ApiUserPage.builder().total(page.getTotal()).users(toApiUsers(page.getUsers())).build();
  }

  public Collection toApiUsers(Collection users) {
    return users.stream().map(this::toApiUser).toList();
  }

  public ApiUser toApiUser(User user) {
    return ApiUser.builder()
        .id(user.getId())
        .username(user.getUsername())
        .fullName(user.getFullName())
        .firstName(user.getFirstName())
        .lastName(user.getLastName())
        .email(user.getEmail())
        .emailVerified(user.isEmailVerified())
        .status(user.getStatus())
        .groups(user.getGroups())
        .build();
  }

  public ApiCandidateGamePlayer toApiCandidateGamePlayer(User user) {
    return ApiCandidateGamePlayer.builder()
        .username(user.getUsername())
        .fullName(user.getFullName())
        .build();
  }

  public UpsertUserRequest toCreateUserRequest(ApiCreateUserRequest apiRequest) {
    return UpsertUserRequest.builder()
        .username(apiRequest.getUsername())
        .name(UserName.toUserName(apiRequest.getFirstName(), apiRequest.getLastName()))
        .email(apiRequest.getEmail())
        .emailVerified(apiRequest.isEmailVerified())
        .groups(apiRequest.getGroups())
        .build();
  }

  public Collection toApiCreateUserRequests(
      Collection requests) {
    return requests.stream().map(this::toApiCreateUserRequest).toList();
  }

  public ApiCreateUserRequest toApiCreateUserRequest(UpsertUserRequest request) {
    return ApiCreateUserRequest.builder()
        .username(request.getUsername())
        .firstName(request.getFirstName())
        .lastName(request.getLastName())
        .email(request.getEmail())
        .emailVerified(request.isEmailVerified())
        .groups(request.getGroups())
        .build();
  }

  public UpsertUserRequest toUpsertUserRequest(String username, ApiUpdateUserRequest apiRequest) {
    return UpsertUserRequest.builder()
        .username(username)
        .name(UserName.toUserName(apiRequest.getFirstName(), apiRequest.getLastName()))
        .email(apiRequest.getEmail())
        .emailVerified(apiRequest.isEmailVerified())
        .groups(Optional.ofNullable(apiRequest.getGroups()).orElse(Collections.emptySet()))
        .build();
  }

  public ApiUser toMinimalApiUser(User user) {
    return ApiUser.builder().username(user.getUsername()).fullName(user.getFullName()).build();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy