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

import javax.inject.Inject;
import javax.inject.Named;

import org.apache.deltaspike.core.api.scope.ViewAccessScoped;

import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.business.stimmeingabe.boundary.StimmeingabeErfassenDescription;
import de.ivu.elect.business.stimmeingabe.boundary.bundestagswahl.BtwStimmeingabeErfassenDescription;
import de.ivu.elect.business.wahl.entity.CommonWahlart;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.business.wahl.entity.WahlParameterStimmeingabeErfassungsmaskeUmgangKennung;
import de.ivu.elect.presentation.View;
import de.ivu.elect.presentation.stimmeingabe.AbstractStimmeingabeGruppeStimmenErfassenView;

@ViewAccessScoped
@Named(BtwStimmeingabeGruppeStimmenErfassenView.COMPONENT_NAME)
@View(viewId = BtwStimmeingabeGruppeStimmenErfassenView.VIEW_ID, useCase = UseCasePermission.STIMMEINGABE_ANZEIGEN)
public class BtwStimmeingabeGruppeStimmenErfassenView extends AbstractStimmeingabeGruppeStimmenErfassenView {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "btwStimmeingabeGruppeStimmenErfassenView";

  public static final String VIEW_ID = "/stimmeingabe/bundestagswahl-stimmeingabe-gruppe-stimmen-erfassen.xhtml";

  @Inject
  protected transient BtwStimmeingabeErfassenDescription stimmeingabeErfassenDescription;

  public BtwStimmeingabeGruppeStimmenErfassenView() {
    super();
  }

  @Override
  public boolean isApplicable(Wahl wahl) {
    return CommonWahlart.BUNDESTAGSWAHL.equalsWahlart(wahl);
  }

  @Override
  public String getViewId() {
    return VIEW_ID;
  }

  @Override
  protected StimmeingabeErfassenDescription getStimmeingabeErfassenDescription() {
    return stimmeingabeErfassenDescription;
  }

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

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

  // ELECT-3908 Abzuziehende Stimmen gemäß BWG §6 Abs. 1 Satz 2
  public boolean isStimmeingabenGruppeStimmenListenstimmeAbzuziehenRendered() {
    return getGebiet().getErfassungsbesonderheit().isAbzuziehendeListenstimmenErfassen();
  }

  public String getStimmeingabenGruppeStimmenListenstimmeAbzuziehenBezeichnung() {
    return stimmenartLabelGenerator.getListenstimmeBezeichnungPlural(getGebiet()) + " " + getMessage("bundestagswahl.zweitstimmen.abzuziehen");
  }

  @Override
  protected WahlParameterStimmeingabeErfassungsmaskeUmgangKennung getStimmeingabeErfassenUmgangKennungDefault() {
    return WahlParameterStimmeingabeErfassungsmaskeUmgangKennung.VOR_STIMMEINGABE; // ELECTVAPP-184, bei Änderung muss bundestagswahl-stimmeingabe-gruppe-stimmen-erfassen.xhtml um neue Spalte(n) erweitert werden!
  }
}
