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

import java.util.Arrays;
import java.util.List;

import javax.inject.Inject;

import de.ivu.elect.business.person.entity.PersonStatus;
import de.ivu.elect.business.person.entity.Personendaten;
import de.ivu.elect.business.personenpruefung.boundary.PersonenKonfliktDAO;
import de.ivu.elect.business.personenpruefung.entity.PersonenKonflikt;
import de.ivu.elect.business.personenpruefung.entity.PersonenKonfliktArt;
import de.ivu.elect.business.personenpruefung.entity.PersonenKonfliktStatus;

/**
 * !!!!!! Klasse NICHT für Produktivzwecke gedacht !!!!!!
 */
// @Stateless
public abstract class AbstractPersonZuTestzweckenZulasser {

  @Inject
  private transient PersonenKonfliktDAO personenKonfliktDAO;

  public AbstractPersonZuTestzweckenZulasser() {
    super();
  }

  protected void loesePersonenKonflikte(Personendaten personendaten) {
    for (PersonenKonflikt personenKonflikt : findAllPersonenKonflikte(personendaten)) {
      if (personenKonflikt.isKonfliktStatusManuellZuPruefen()) {
        personenKonflikt.setPersonenKonfliktStatus(PersonenKonfliktStatus.IRRELEVANT);
      }
    }

    personendaten.setPersonStatus(PersonStatus.GEEIGNET);
  }

  private List<PersonenKonflikt> findAllPersonenKonflikte(Personendaten personendaten) {
    return personenKonfliktDAO.findByPersonAndKonfliktArt(personendaten, Arrays.asList(PersonenKonfliktArt.values()));
  }
}
