package com.airlock.iam.common.domain.model.user;

import com.airlock.iam.common.api.domain.model.contextdata.ContextData;
import com.airlock.iam.common.api.domain.model.role.Role;
import com.airlock.iam.common.api.domain.model.user.PersistentUser;
import com.airlock.iam.common.api.domain.model.user.User;
import com.airlock.iam.common.domain.model.contextdata.ContextDataFactory;
import com.airlock.iam.common.domain.model.role.Roles;
import jakarta.inject.Inject;
import java.util.Set;

public class UserFactoryImpl implements UserFactory {
   private final ContextDataFactory contextDataFactory;

   @Inject
   public UserFactoryImpl(ContextDataFactory contextDataFactory) {
      this.contextDataFactory = contextDataFactory;
   }

   @Override
   public User createUser(PersistentUser user) {
      ContextData contextData = this.contextDataFactory.fromPersistency(user.getContextData());
      return new UserImpl(user.getName(), contextData, roles(user));
   }

   private static Set<Role> roles(PersistentUser user) {
      return Roles.builder().user(user).build().getAll();
   }
}
