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

import de.ivu.elect.business.personenpruefung.boundary.PersonPruefungKonfigurationEdit;
import de.ivu.elect.business.personenpruefung.entity.PersonPruefungKonfiguration;
import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.jee.faces.FacesMessageUtil;
import de.ivu.elect.presentation.personenpruefung.PersonPruefungKonfigurationSearchView;

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

public class PersonPruefungKonfigurationDeaktivierenAction extends AbstractPersonPruefungKonfigurationAction {

  @Inject
  private transient PersonPruefungKonfigurationEdit personPruefungKonfigurationEdit;

  @Override
  protected UseCasePermission getRequiredPermission() {
    return UseCasePermission.PERSON_PRUEFUNG_KONFIGURATION_EDIT;
  }

  @Override
  protected boolean isDisabledInternal(@Nonnull PersonPruefungKonfiguration personPruefungKonfiguration) {
    return super.isDisabledInternal(personPruefungKonfiguration) || !personPruefungKonfiguration.getStatus().isAktiv();
  }

  @Override
  protected boolean isFireChangeEvent() {
    return true;
  }

  @Override
  protected String doIt(PersonPruefungKonfiguration personPruefungKonfiguration) {
    personPruefungKonfigurationEdit.deaktiviere(personPruefungKonfiguration);
    FacesMessageUtil.addInfoMessage("person.pruefung.konfiguration.action.deaktivieren.success.message",
        "person.pruefung.konfiguration.action.deaktivieren.success.message", entityMeta.getEinzahlMessage(),
        personPruefungKonfiguration.getName());
    return PersonPruefungKonfigurationSearchView.VIEW_ID;
  }

  @Override
  public String getLabelKey() {
    return "person.pruefung.konfiguration.action.deaktivieren";
  }

  @Override
  public String getIcon() {
    return appIcons.getIconCancel();
  }
}
