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

import javax.inject.Inject;
import javax.inject.Named;

import de.ivu.elect.business.kandidatur.boundary.KandidaturConversationSelect;
import de.ivu.elect.business.kandidatur.entity.Ersatzkandidatur;
import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.presentation.kandidatur.ErsatzkandidaturCreateViewResolver;

@Named(ErsatzkandidaturErsatzkandidaturCreateAction.COMPONENT_NAME)
public class ErsatzkandidaturErsatzkandidaturCreateAction extends AbstractErsatzkandidaturAction {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "ersatzkandidaturErsatzkandidaturCreateAction";

  @Inject
  private transient KandidaturConversationSelect uebergeordneteKandidaturSelect;

  @Inject
  private transient ErsatzkandidaturCreateViewResolver ersatzkandidaturCreateViewResolver;

  public ErsatzkandidaturErsatzkandidaturCreateAction() {
    super();
  }

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

  @Override
  protected boolean isDisabledInternal(Ersatzkandidatur ersatzkandidatur) {
    return !ersatzkandidaturCreateViewResolver.isUntergeordneteErsatzkandidaturCreatable(ersatzkandidatur.getWahl(), ersatzkandidatur);
  }

  @Override
  protected String doIt(Ersatzkandidatur ersatzkandidatur) {
    uebergeordneteKandidaturSelect.setEntity(ersatzkandidatur);

    return ersatzkandidaturCreateViewResolver.getViewId(getMandant(ersatzkandidatur));
  }

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

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