
package de.ivu.elect.business.stimmeingabe.control.plausi;

import javax.inject.Inject;

import de.ivu.elect.business.stimmeingabe.entity.Ergebniseingang;
import de.ivu.elect.business.stimmeingabe.entity.StimmeingabeKopfzahlErfassenModel;
import de.ivu.elect.business.stimmeingabe.entity.StimmeingabePlausiFehlerart;

public class EuwKopfzahlPlausiBuilder extends AbstractKopfzahlPlausiBuilder {

  @Inject
  private transient EuwStimmeingabePlausiDefinitions euwStimmeingabePlausiDefinitions;

  public EuwKopfzahlPlausiBuilder() {
    super();
  }

  @Override
  protected AbstractStimmeingabePlausiDefinitions getStimmeingabePlausiDefinitions(Ergebniseingang ergebniseingang) {
    return euwStimmeingabePlausiDefinitions;
  }

  @Override
  protected void fillKopfzahlPlausisWahlartSpezifisch(StimmeingabeKopfzahlErfassenModel model, StimmeingabePlausiBuilderContext context) {
    if (!isBriefwahl(context)) {
      if (isSonderstimmbezirk(context)) {
        fillSonderstimmbezirkWahlberechtigtePlausis(model, context);
        fillSonderstimmbezirkWaehlerPlausis(model, context);
      } else {
        fillUrnenwahlbezirkWahlberechtigteAnzahlGleichWahlberechtigteAnzahlAmGebietPlausis(model, context);
        fillUrnenwahlbezirkKopfzahlSummenPlausis(model, context);
        fillUrnenwahlbezirkKopfzahlVergleichPlausis(model, context);
      }
    }

    fillKopfzahlEndgueltigMitVorlaeufigerStimmeingabeVergleichPlausis(model, context);
  }

  private void fillUrnenwahlbezirkKopfzahlVergleichPlausis(StimmeingabeKopfzahlErfassenModel model, StimmeingabePlausiBuilderContext context) {
    boolean stimmeingabeWahlberechtigteNichtImWaehlerverzeichnisRelevant = true;

    fillDefaultUrnenwahlbezirkKopfzahlVergleichPlausis(model, context, stimmeingabeWahlberechtigteNichtImWaehlerverzeichnisRelevant, 0.20D, 0.95D, StimmeingabePlausiFehlerart.WARNING, 0.95D);

    addPlausiWaehlerMitWahlscheinInUrnenwahlAnzahlAusBriefwahl(model, context);

    addPlausiWaehlerMitWahlscheinKleinerWahlberechtigteMitWahlschein(model, context, stimmeingabeWahlberechtigteNichtImWaehlerverzeichnisRelevant);
  }
}
