package de.ivu.elect.business.stimmzettel.control;

import java.util.List;

import javax.annotation.Nullable;

import de.ivu.elect.business.gruppe.entity.Gruppe;
import de.ivu.elect.business.stimmzettel.entity.Stimmzettel;
import de.ivu.elect.business.stimmzettel.entity.StimmzettelErfassungValidationEntry;
import de.ivu.elect.business.stimmzettel.entity.StimmzettelKopfdatum;
import de.ivu.elect.business.stimmzettel.entity.StimmzettelKopfdatumArt;

public class StimmzettelInsgesamtGroesserWahlberechtigteValidator extends AbstractStimmzettelKopfdatumValidator {
  private static final long serialVersionUID = 1L;

  public static final StimmzettelKopfdatumArt ANZAHL_STIMMZETTEL_GESAMT = StimmzettelKopfdatumArt.ANZAHL_STIMMZETTEL_GESAMT;

  @Override
  public StimmzettelErfassungValidationEntry validiere(StimmzettelKopfdatumArt art, @Nullable Gruppe gruppe, List<StimmzettelKopfdatum> stimmzettelKopfdaten, List<Stimmzettel> stimmzettel) {

    var longValueGesamt = getLongValue(art, stimmzettelKopfdaten);
    var longValueWahlberechtigte = getLongValue(StimmzettelKopfdatumArt.ANZAHL_WAHLBERECHTIGTE_GESAMT, stimmzettelKopfdaten);

    if (longValueGesamt == null || longValueWahlberechtigte == null) {
      return StimmzettelErfassungValidationEntry.SUCCESS;
    }

    if (longValueGesamt > longValueWahlberechtigte) {
      return StimmzettelErfassungValidationEntry.createWarn("wes.stimmzettel.validator.stimmzettel.gesamt.groesser.wahlberechtigte");
    }
    return StimmzettelErfassungValidationEntry.SUCCESS;
  }

}
