package de.ivu.elect.business.sitzberechnung.control.wahlbeteiligung.intern;

public class Wahlbeteiligungsparameter {

  private long summeWahllokalwaehler = 0; // in den ausgezaehlten Urnenwahlbezirken

  private long summeBriefwaehler = 0; // in den ausgezaehlten Urnenwahlbezirken

  private double summeErwartetenBriefwaehler = 0; // in den ausgezaehlten Urnenwahlbezirken, , wenn summeBW in diesen noch nicht bekannt ist

  private long summeWahlberechtigteAusgezaehlt = 0; //  Anzahl der Wahlberechtigte in den ausgezählten Urnenwahlbezirken

  private long summeWahlberechtigte = 0; //  Anzahl der Wahlberechtigte in allen Urnenwahlbezirken

  public void addLokalwaehler(long anzahlLokalwaehler) {
    summeWahllokalwaehler += anzahlLokalwaehler;
  }

  public void addBriefwaehler(long anzahlBriefwaehler) {
    summeBriefwaehler += anzahlBriefwaehler;
  }

  public void addErwarteteBriefwaehler(double rucklaufquote, long anzahlAusgegebeneWahlscheine) {
    this.summeErwartetenBriefwaehler += (rucklaufquote * anzahlAusgegebeneWahlscheine);
  }

  public void addWahlberechtigteAusgezaehlt(long anzahlWahlberechtigte) {
    summeWahlberechtigteAusgezaehlt += anzahlWahlberechtigte;
  }

  public void addWahlberechtigte(long anzahlWahlberechtigte) {
    summeWahlberechtigte += anzahlWahlberechtigte;
  }

  public long getSummeWahlberechtigteAusgezaehlt() {
    return summeWahlberechtigteAusgezaehlt;
  }

  public long getSummeWahlberechtigte() {
    return summeWahlberechtigte;
  }

  public double getWahlbeteiligung() {
    if (summeWahlberechtigteAusgezaehlt != 0) {
      return (summeWahllokalwaehler + summeBriefwaehler + summeErwartetenBriefwaehler) / summeWahlberechtigteAusgezaehlt;
    } else {
      return 0;
    }
  }
}
