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

import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Named;

import de.ivu.elect.business.gebietsbaum.boundary.GebietExtendedDAO;
import de.ivu.elect.business.wahl.entity.NlWahlPhase;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.business.wahlvorschlag.boundary.WahlvorschlagExtendedDAO;

@Named(NlWasErfassungWahlphaseSchrittMenuItem.COMPONENT_NAME)
public class NlWasErfassungWahlphaseSchrittMenuItem extends AbstractNlWasWahlphaseSchrittMenuItem {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient GebietExtendedDAO gebietExtendedDAO;

  @Inject
  private transient WahlvorschlagExtendedDAO wahlvorschlagExtendedDAO;

  public static final String COMPONENT_NAME = "nlWasErfassungWahlphaseSchrittMenuItem";

  @Override
  public String getLabelKey() {
    return "nl.wahlphase.schritt.erfassung";
  }

  @Override
  protected NlWahlPhase getZielWahlPhase() {
    return NlWahlPhase.ERFASSUNG;
  }

  @Override
  protected boolean isPhaseDarfAktivWerdenInternal() {
    Wahl selectedWahl = getSelectedWahl();
    if (selectedWahl == null) {
      return false;
    }
    return wahlvorschlagExtendedDAO.findByCountWahlvorschlagByWahl(selectedWahl) > 0 && gebietExtendedDAO.findByCountErfassungsgebieteByWahl(selectedWahl) > 0;
  }

  @Nullable
  @Override
  public String getDialogName() {
    if (isBefore()) {
      return "erfassung-zurueck";
    }
    return "erfassung";
  }
}
