package de.ivu.elect.business.security.boundary;

import java.util.Collections;
import java.util.List;

import javax.ejb.Stateless;
import javax.enterprise.inject.Specializes;
import javax.inject.Inject;

import de.ivu.elect.business.benutzerverwaltung.entity.Benutzer;
import de.ivu.elect.business.mandant.entity.Mandant;
import de.ivu.elect.business.security.control.NlAdminRolleVorhanden;
import de.ivu.elect.business.security.entity.PasswortSalt;

/*
ELECTVAPP-102
 */
@Stateless
@Specializes
public class NlCoreBenutzerCreator extends BenutzerCreator {

  public final static String NL_ADMIN_ROLLEN_NAME  = "Beheerder"; // ELECTVAPP-218

  @Inject
  private transient NlAdminRolleVorhanden nlAdminRolleVorhanden;

  @Override
  protected boolean isAdminBenutzerMitAdminRolleAnlegen(Mandant mandant) {
    return nlAdminRolleVorhanden.isAdminRolleVorhanden(mandant);
  }

  @Override
  protected List<Benutzer> getAnzulegendeBenutzer(Mandant mandant) {
    if (isAdminBenutzerMitAdminRolleAnlegen(mandant)) {
      return Collections.emptyList(); // wie bisher
    }
    // ELECTVAPP-102

    // ELECT-11172
    PasswortSalt passwordSalt = bestimmeAdminPasswortSaltAusSystemProperty();
    if (passwordSalt == null) {
      return Collections.singletonList(createBenutzer(ADMIN_KENNUNG, ADMIN_PASSWORT, "", NL_ADMIN_ROLLEN_NAME));
    } else {
      return Collections.singletonList(createBenutzer(ADMIN_KENNUNG, passwordSalt.getPasswort(), passwordSalt.getSalt(), NL_ADMIN_ROLLEN_NAME));

    }

  }
}
