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

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

import de.ivu.elect.business.gebietsbaum.boundary.GebietSessionSelect;
import de.ivu.elect.business.kandidatur.entity.Kandidatur;
import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.presentation.kandidatur.DirektkandidaturSearchView;

public class KandidaturDirektkandidaturSearchAuswaehlenAction extends AbstractKandidaturAction {

  private static final long serialVersionUID = 7538016891913758976L;

  @Inject
  private transient GebietSessionSelect gebietSessionSelect;

  public KandidaturDirektkandidaturSearchAuswaehlenAction() {
    super();
  }

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

  @Override
  public boolean isDisabledInternal(@Nonnull Kandidatur kandidatur) {
    return super.isDisabledInternal(kandidatur) || !kandidatur.isDirektkandidatur() || !getEinsehenGebietSecurity().isRechtVorhanden(kandidatur.getGebiet());
  }

  @Override
  public String doIt(Kandidatur kandidatur) {
    gebietSessionSelect.setEntity(kandidatur.getGebiet());

    return DirektkandidaturSearchView.VIEW_ID;
  }

  @Override
  public String getLabelKey() {
    return "kandidatur.direktkandidatur.auswaehlen.action";
  }

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