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

import javax.inject.Inject;

import de.ivu.elect.business.kandidatur.boundary.WaehlerBenannteKandidaturKonfiguration;
import de.ivu.elect.business.kandidatur.boundary.WasWaehlerBenannteKandidaturKonfiguration;
import de.ivu.elect.business.mandant.entity.Mandant;
import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.business.wahlvorschlag.boundary.DirektkandidatExtendedDAO;
import de.ivu.elect.presentation.kandidatur.WaehlerBenannteDirektkandidaturCreateViewResolver;

public class WaehlerBenannteDirektkandidaturCreateMenuItemEntry extends AbstractDirektkandidaturCreateMenuItemEntry {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient DirektkandidatExtendedDAO direktkandidatExtendedDAO;

  @Inject
  private transient WasWaehlerBenannteKandidaturKonfiguration waehlerBenannteKandidaturKonfiguration;

  @Inject
  private transient WaehlerBenannteDirektkandidaturCreateViewResolver waehlerBenannteDirektkandidaturCreateViewResolver;

  public WaehlerBenannteDirektkandidaturCreateMenuItemEntry() {
    super();
  }

  @Override
  public boolean isRendered() {
    return hasUseCasePermission(UseCasePermission.WAEHLER_BENANNTE_KANDIDATUR_CREATE)
        && waehlerBenannteKandidaturKonfiguration.isWaehlerBenannteDirektkandidaturManuellAnlegenZulaessig(getSelectedGebiet(), direktkandidatExtendedDAO::findByGebiet);
  }

  @Override
  protected String getViewId(Mandant mandant) {
    return waehlerBenannteDirektkandidaturCreateViewResolver.getViewId(mandant);
  }

  @Override
  public String getLabelKey() {
    return "waehler.benannte.direktkandidatur.create.menu.item.label";
  }

  @Override
  protected String getEntityEinzahlMessageKey() {
    return WaehlerBenannteKandidaturKonfiguration.MSG_KEY_WAEHLER_BENANNTE_DIREKTKANDIDATUR_EINZAHL;
  }
}
