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

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

import de.ivu.elect.business.wahl.entity.NlWahlPhase;
import de.ivu.elect.presentation.ergebnis.menu.NlWasErgebnisArtefaktNachGebietFreigabeBulkExportMenuItemEntry;

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

  public static final String COMPONENT_NAME = "nlWasFreigabeWahlphaseSchrittMenuItem";

  @Inject
  private transient NlWasErgebnisArtefaktNachGebietFreigabeBulkExportMenuItemEntry nlWasErgebnisArtefaktNachGebietFreigabeBulkExportMenuItemEntry;

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

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

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

    if (!wasBefore) {
      if (nlWasErgebnisArtefaktNachGebietFreigabeBulkExportMenuItemEntry.isPossible()) {
        return nlWasErgebnisArtefaktNachGebietFreigabeBulkExportMenuItemEntry.getTargetViewId();
      }
    }

    return result;
  }

  @Override
  protected boolean isPhaseDarfAktivWerdenInternal() {
    if (!isBefore()) {
      if (isOffeneLoseVorhanden()) {
        return false;
      }
    }

    // im CSB gibt es eine Phase mehr...
    if (NlWahlPhase.SITZBERECHNUNG.isAccept(currentCustomer.getCustomer(), getSelectedWahl())) {
      return NlWahlPhase.SITZBERECHNUNG.equals(getAktuellePhase());
    }
    return true;
  }

  @Nullable
  @Override
  public String getDialogName() {
    if (!isBefore()) {
      return "freigabe";
    }

    return super.getDialogName();
  }
}

