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

import de.ivu.elect.business.stimmeingabe.entity.Stimmeingabe;
import de.ivu.elect.business.stimmeingabe.entity.StimmeingabePlausiKonfiguration;
import de.ivu.elect.jee.faces.Messages;

public class KommunalListenwahlWaehlerGesamtAnzahlKleinerGleichTheoretischesMaximumPlausi extends AbstractWaehlerGesamtAnzahlComparedToTheoretischeAnzahlPlausi
    implements
      StimmeingabePlausiAnzahlComparedToTheoretischesMaximum {

  public KommunalListenwahlWaehlerGesamtAnzahlKleinerGleichTheoretischesMaximumPlausi(Long anzahlStimmenProWaehlerMaximal, Long anzahlStimmenProWaehlerFuerListeMinimal,
      Long anzahlStimmenProWaehlerFuerListeMaximal, Stimmeingabe stimmzetteleingabeUngueltigeListenstimmen, KommunalListenwahlStimmeingabenGueltigeListenstimmen stimmeingabenGueltigeListenstimmen,
      StimmeingabePlausiKonfiguration stimmeingabePlausiKonfiguration, Messages messages) {
    super(anzahlStimmenProWaehlerMaximal, anzahlStimmenProWaehlerFuerListeMinimal, anzahlStimmenProWaehlerFuerListeMaximal, StimmeingabeAnzahlComparedToOperator.LESS_THAN_OR_EQUAL_TO,
        stimmzetteleingabeUngueltigeListenstimmen, stimmeingabenGueltigeListenstimmen, stimmeingabePlausiKonfiguration, messages);
  }

  @Override
  protected boolean isPlausibilisierenZulaessig(Stimmeingabe stimmeingabe) {
    return super.isPlausibilisierenZulaessig(stimmeingabe) && isErgebnismeldungKomplett();
  }

  @Override
  protected long getAnzahlStimmzettelBerechnetWahlvorschlagVeraendert() {
    long result = getAnzahlStimmenErfasstWahlvorschlagVeraendertMaximal(); // Auf jedem veränderten Stimmzettel nur eine Stimme -> maximale Anzahl der veränderten Stimmzettel!

    log("\t\t\t Stimmzettel berechnet Wahlvorschlag verändert -> maximal -> {}", result);

    return result;
  }
}
