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

import java.util.Collections;
import java.util.List;

import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;

import de.ivu.elect.business.wahl.boundary.WahlSessionSelect;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.jee.presentation.menu.AbstractBaseMenuItemEntry;
import de.ivu.elect.jee.presentation.menu.AbstractSubMenuEntry;
import de.ivu.elect.jee.presentation.menu.MenuEntry;

@RequestScoped
public class StimmenMainMenuEntry extends AbstractSubMenuEntry {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient StimmeingabeMenuBuilder stimmeingabeMenuBuilder;

  @Inject
  private transient WahlSessionSelect wahlSessionSelect;

  public StimmenMainMenuEntry() {
    super();
  }

  @Override
  protected List<MenuEntry> getSubMenuEntriesSorted() {
    if (isMigrierteWahl()) {
      // ELECT-14965
      return Collections.emptyList();
    }
    return stimmeingabeMenuBuilder.getSubMenuEntriesSorted();
  }

  private boolean isMigrierteWahl() {
    Wahl wahl = wahlSessionSelect.getEntity();
    return wahl != null && wahl.getStatus().isMigriert();
  }

  @Override
  public String getLabelKey() {
    return "stimmen.main.menu.item.label"; // msc, elect: Erfassung ist besser, als "Stimmen", weil dann klar ist, was genau passiert
  }

  public boolean isSubTopicActive() {
    return getSubMenuEntriesSorted().stream().filter(menuEntry -> menuEntry instanceof AbstractBaseMenuItemEntry).anyMatch(MenuEntry::isTopicActive);
  }
}

