
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.wahlvorschlag.ListeSearchView;

public class KandidaturListeSearchAuswaehlenAction extends AbstractKandidaturAction {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient GebietSessionSelect gebietSessionSelect;

  public KandidaturListeSearchAuswaehlenAction() {
    super();
  }

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

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

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

    return ListeSearchView.VIEW_ID;
  }

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

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