
package de.ivu.elect.business.personenpruefung.entity;

import static java.util.Collections.emptyList;

import java.util.Collection;
import java.util.EnumSet;
import java.util.List;
import java.util.function.BiFunction;

import de.ivu.elect.business.person.entity.Personendaten;

public class NlPersonenKonfliktFinder {

  public static final NlPersonenKonfliktFinder IGNORED = new NlPersonenKonfliktFinder(false, (x, y) -> emptyList());

  private final BiFunction<Personendaten, Collection<PersonenKonfliktArt>, List<PersonenKonflikt>> personenKonflikteFct;

  private final boolean enabled;

  public NlPersonenKonfliktFinder(BiFunction<Personendaten, Collection<PersonenKonfliktArt>, List<PersonenKonflikt>> personenKonflikteFct) {
    this(true, personenKonflikteFct);
  }

  private NlPersonenKonfliktFinder(boolean enabled, BiFunction<Personendaten, Collection<PersonenKonfliktArt>, List<PersonenKonflikt>> personenKonflikteFct) {
    super();

    this.enabled = enabled;

    this.personenKonflikteFct = personenKonflikteFct;
  }

  public boolean isPersonenregisterAbgleichStatusManuellGeprueft(Personendaten personendaten) {
    return !personenKonflikteFct.apply(personendaten, EnumSet.of(PersonenKonfliktArt.ABGLEICH_FEHLGESCHLAGEN)).isEmpty();
  }

  public boolean isEnabled() {
    return enabled;
  }
}
