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

import java.util.Map;

import javax.inject.Inject;

import de.ivu.elect.business.gruppe.entity.GruppePK;
import de.ivu.elect.business.wahl.boundary.WahlSessionSelect;
import de.ivu.elect.business.wahl.entity.CommonWahlart;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.presentation.verteilung.form.VerteilungBerechnenViewFormBuilderVorbelegungSitze;

public class VerteilungBerechnenMenuItemEntryVorbelegungSitze extends AbstractVerteilungBerechnenMenuItemEntry {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient WahlSessionSelect wahlSessionSelect;

  @Inject
  private transient VerteilungBerechnenViewFormBuilderVorbelegungSitze verteilungBerechnenViewFormBuilderVorbelegungSitze;

  public VerteilungBerechnenMenuItemEntryVorbelegungSitze() {
    super();
  }

  @Override
  public boolean isRendered() {
    if (super.isRendered()) {
      Wahl wahl = wahlSessionSelect.getEntity();

      if (wahl != null) {
        return wahl.isWahlMitListengebieten() && !CommonWahlart.EUROPAWAHL.equalsWahlart(wahl) && !wahl.isWahlMitDirektkandidatengebieten();
      }
    }

    return false;
  }

  public String doAction(Map<GruppePK, Long> anzahlSitzePerGruppePK) {
    VerteilungBerechnenViewFormBuilderVorbelegungSitze viewFormBuilder = getViewFormBuilder();
    viewFormBuilder.initTeilnehmer(anzahlSitzePerGruppePK);

    return doAction(viewFormBuilder);
  }

  @Override
  protected VerteilungBerechnenViewFormBuilderVorbelegungSitze getViewFormBuilder() {
    return verteilungBerechnenViewFormBuilderVorbelegungSitze;
  }

  @Override
  public String getLabelKey() {
    return "VerteilungBerechnenMenuItemEntryVorbelegungSitze.menu.item.label";
  }
}
