
package de.ivu.elect.presentation.gruppe;

import de.ivu.elect.business.ergebnis.control.AbstractKumulierteStimmenSearchParameters;
import de.ivu.elect.business.gruppe.entity.GruppeKumulierteStimmen;
import de.ivu.elect.jee.faces.PreConditionCheck;
import de.ivu.elect.presentation.ergebnis.AbstractKumulierteStimmenSearchView;

public abstract class AbstractGruppeKumulierteStimmenSearchView<SP extends AbstractKumulierteStimmenSearchParameters> extends AbstractKumulierteStimmenSearchView<SP, GruppeKumulierteStimmen> {

  private static final long serialVersionUID = 1L;

  public AbstractGruppeKumulierteStimmenSearchView() {
    super();
  }

  @Override
  @PreConditionCheck
  public String checkPreCondition() {
    String result = super.checkPreCondition();
    if (result == null) {
      if (!isWahlSelected() || !isWahlMitDirektkandidatengebieten() && !isWahlMitListengebieten()) {
        return getStartViewId();
      }
    }

    return result;
  }

  @Override
  protected boolean isRedirectNachGebietswechsel() {
    return true;
  }

  public boolean isWahlMitDirektkandidatengebieten() {
    return isWahlSelected() && getSelectedWahl().isWahlMitDirektkandidatengebieten();
  }

  public boolean isTabDirektstimmenRendered() {
    return isWahlMitDirektkandidatengebieten();
  }

  public boolean isTabListenstimmenRendered() {
    return isWahlMitListengebieten();
  }

  public boolean isTabGesamtstimmenRendered() {
    return isGesamtstimmenAuswerten();
  }

  public boolean isWahlMitListengebieten() {
    return isWahlSelected() && getSelectedWahl().isWahlMitListengebieten();
  }

  public boolean isGesamtstimmenAuswerten() {
    return isWahlSelected() && getSelectedWahl().isWahlMitGesamtstimmenauswertung();
  }
}
