
package de.ivu.elect.presentation.personenpruefung.action;

import javax.annotation.Nonnull;
import javax.inject.Inject;

import de.ivu.elect.business.mandant.entity.EntityMitMandant;
import de.ivu.elect.business.personenpruefung.entity.PersonenKonflikt;
import de.ivu.elect.business.personenpruefung.entity.PersonenKonfliktArt;
import de.ivu.elect.business.personenregister.boundary.PersonenregisterSwitch;

public abstract class AbstractPersonenKonfliktPersonenregisterAbgleichAufloesenAction extends AbstractPersonenKonfliktAufloesenAction {

  private static final long serialVersionUID = 1L;

  @Inject
  private PersonenregisterSwitch personenregisterSwitch;

  protected AbstractPersonenKonfliktPersonenregisterAbgleichAufloesenAction() {
    super();
  }

  @Override
  public PersonenKonfliktArt getKonfliktArt() {
    return PersonenKonfliktArt.ABGLEICH_FEHLGESCHLAGEN;
  }

  @Override
  public boolean isDisabledInternal(@Nonnull PersonenKonflikt personenKonflikt) {
    return !isPersonenregisterAvailable(getMandant(personenKonflikt)) || super.isDisabledInternal(personenKonflikt);
  }

  public boolean isPersonenregisterAvailable(EntityMitMandant entityMitMandant) {
    return entityMitMandant != null && entityMitMandant.getMandant() != null && personenregisterSwitch.isPersonenregisterAvailable(entityMitMandant.getMandant());
  }
}
