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

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

import de.ivu.elect.business.gebietsbaum.boundary.GebietConversationSelect;
import de.ivu.elect.business.gebietsbaum.boundary.GebietSessionSelect;
import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.presentation.gebietsbaum.AnzahlWahlberechtigteEditView;
import de.ivu.elect.presentation.gebietsbaum.AnzahlWahlberechtigteErfassungState;
import de.ivu.elect.presentation.menu.AbstractActionEntry;
import de.ivu.elect.presentation.security.AbstractGebietSecurity;

public class AnzahlWahlberechtigteEditAction extends AbstractActionEntry<Gebiet> {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient AnzahlWahlberechtigteErfassungState anzahlWahlberechtigteErfassungState;

  @Inject
  private transient GebietSessionSelect gebietSessionSelect;

  @Inject
  private transient GebietConversationSelect gebietConversationSelect;

  public AnzahlWahlberechtigteEditAction() {
    super();
  }

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

  @Override
  protected AbstractGebietSecurity getGebietSecurity() {
    return getBearbeitenGebietSecurity();
  }

  @Override
  protected boolean isDisabledInternal(@Nonnull Gebiet gebiet) {
    return !anzahlWahlberechtigteErfassungState.isErfassungMoeglich(gebiet);
  }

  @Override
  protected String doIt(Gebiet gebiet) {
    gebietSessionSelect.setEntity(gebiet);
    gebietConversationSelect.setEntity(gebiet);

    return AnzahlWahlberechtigteEditView.VIEW_ID;
  }

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

  @Override
  protected void fireChangeEvent() {
    // Do nothing...
  }

  @Override
  public String getLabelKey() {
    return "entity.edit.action.edit";
  }

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