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

import java.util.List;

import javax.enterprise.inject.Instance;
import javax.enterprise.inject.Specializes;
import javax.inject.Inject;

import de.ivu.elect.jee.presentation.menu.MenuEntry;
import de.ivu.elect.presentation.protokollierung.menu.LoeschProtokollMenuItemEntry;

@Specializes
public class WasWahlMainMenuEntry extends CoreWahlMainMenuEntry {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient WahlStatusuebersichtMenuItemEntry wahlStatusuebersichtMenuItemEntry;

  @Inject
  private transient WahlStimmenuebergabeStatusMenuItemEntry wahlStimmenuebergabeStatusMenuItemEntry;

  @Inject
  private transient WahlResetMenuItemEntry wahlResetMenuItemEntry;

  @Inject
  private transient LoeschProtokollMenuItemEntry loeschProtokollMenuItemEntry;

  @Inject
  private transient WasWahlMandantenAufteilenMenuItemEntry wasWahlMandantenAufteilenMenuItemEntry;

  @Inject
  private transient Instance<WahlAdditionalMenuItemEntry> wahlAdditionalMenuItemEntries;

  public WasWahlMainMenuEntry() {
    super();
  }

  @Override
  protected void addWahlMenuEntries(List<MenuEntry> result) {
    result.add(wahlStatusuebersichtMenuItemEntry);

    super.addWahlMenuEntries(result);

    result.add(wahlStimmenuebergabeStatusMenuItemEntry);
    result.add(loeschProtokollMenuItemEntry);
    result.add(wahlResetMenuItemEntry);
    result.add(result.indexOf(wahlCreateMenuItemEntry) + 1, wasWahlMandantenAufteilenMenuItemEntry); // ELECT-8023

    if (!wahlAdditionalMenuItemEntries.isUnsatisfied()) {
      for (var wahlAdditionalMenuItemEntry : wahlAdditionalMenuItemEntries) {
        wahlAdditionalMenuItemEntry.addWahlMenuEntries(result);
      }
    }

  }
}
