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

import de.ivu.elect.business.ergebnis.control.ZwischenergebnisberechnungBackgroundService;
import de.ivu.elect.business.wahl.entity.NlWahlPhase;
import de.ivu.elect.presentation.ergebniskonflikt.menu.ErgebnisKonfliktSearchMenuItemEntry;

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

@Named(NlWasSitzberechnungWahlphaseSchrittMenuItem.COMPONENT_NAME)
public class NlWasSitzberechnungWahlphaseSchrittMenuItem extends AbstractNlWasWahlphaseSchrittMenuItem {
  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "nlWasSitzberechnungWahlphaseSchrittMenuItem";


  @Inject
  protected transient ErgebnisKonfliktSearchMenuItemEntry ergebnisKonfliktSearchMenuItemEntry;

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

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

  @Override
  protected boolean isPhaseDarfAktivWerdenInternal() {
    if (isErgebnisWirdGeradeBerechnet()) {
      addWarnMessage("nl.was.ergebnisberechnung.laeuft.noch.warnung");
      return false;
    }
    return true;
  }


  @Override
  public String doActionInternal() {
    boolean wasBefore = isBefore();
    String result = super.doActionInternal();

    if (!wasBefore) {
      if (isOffeneLoseVorhanden() && ergebnisKonfliktSearchMenuItemEntry.isPossible()) {
        addWarnMessage("nl.sitzberechnung.losentscheide.offen.hinweis");
        return ergebnisKonfliktSearchMenuItemEntry.getTargetViewId();
      }
    }

    return result;
  }

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


}



