package de.ivu.elect.presentation.personenregister;

import de.ivu.elect.business.konfiguration.entity.KonfigurationLoader;
import de.ivu.elect.business.konfiguration.entity.MandantKonfigurationWerte;
import de.ivu.elect.business.personenregister.entity.PersonenregisterSource;
import de.ivu.elect.business.security.control.ElectCommonPrincipal;

import javax.enterprise.context.RequestScoped;
import javax.enterprise.inject.Instance;
import javax.inject.Inject;
import javax.inject.Named;
import java.util.ArrayList;
import java.util.List;

@RequestScoped
@Named(PersonenregisterTestView.COMPONENT_NAME)
public class PersonenregisterTestView {
  public static final String COMPONENT_NAME = "personenregisterTestView";

  @Inject
  private transient Instance<PersonenregisterStatusTestInterface> personenregisterStatusTest;

  @Inject
  private transient KonfigurationLoader konfigurationLoader;

  @Inject
  private transient ElectCommonPrincipal principal;

  public List<PersonenregisterStatusTestInterface> getPersonenregisterStatusTest() {
    PersonenregisterSource source = konfigurationLoader.resolveEnumValue(
        principal.getMandant(), MandantKonfigurationWerte.PERSONENREGISTER_SOURCE,
        PersonenregisterSource.class);

    List<PersonenregisterStatusTestInterface> personenregisters = new ArrayList<>();

    for (PersonenregisterStatusTestInterface personenregisterStatus : personenregisterStatusTest) {
      if (personenregisterStatus.getSource().equals(source)) {
        personenregisters.add(personenregisterStatus);
      }
    }

    return personenregisters;
  }

  public boolean isPersonenregisterPresent() {
    return getPersonenregisterStatusTest() != null
        && !getPersonenregisterStatusTest().isEmpty();
  }
}
