
package de.ivu.elect.business.wahl.entity;

public enum WahlartErgebnisartVorlaeufigErfassungsart {

  ERGEBNIS_KOMPLETT { // A.k.a. "Wie endgültiges Ergebnis"...

    @Override
    public boolean isGruppeStimmenDetailliertErfassen(Wahl wahl) {
      return true;
    }

    @Override
    public boolean isGruppeStimmzettelNurEinzelnerWahlvorschlagDetailliertErfassen(Wahl wahl) {
      return true;
    }

    @Override
    public boolean isKomplettmeldung() {
      return true;
    }
  },

  /**
   * Nur Stimmzettel für einen einzelnen Wahlvorschlag auszählen (Unverändert und innerhalb verändert)
   */
  TREND_STIMMZETTEL_NUR_EINZELNER_WAHLVORSCHLAG { // ELECTKOM-749

    @Override
    public boolean isGruppeStimmenDetailliertErfassen(Wahl wahl) {
      return false;
    }

    @Override
    public boolean isGruppeStimmzettelNurEinzelnerWahlvorschlagDetailliertErfassen(Wahl wahl) {
      return true;
    }
  },

  /**
   * Nur Stimmzettel für einen einzelnen Wahlvorschlag auszählen (Nur unverändert)
   */
  TREND_STIMMZETTEL_NUR_EINZELNER_WAHLVORSCHLAG_GESAMT {
    @Override
    public boolean isGruppeStimmenDetailliertErfassen(Wahl wahl) {
      return false;
    }

    @Override
    public boolean isGruppeStimmzettelNurEinzelnerWahlvorschlagDetailliertErfassen(Wahl wahl) {
      return false;
    }
  },

  ;

  WahlartErgebnisartVorlaeufigErfassungsart() {
  }

  public static WahlartErgebnisartVorlaeufigErfassungsart defaultValue() {
    return ERGEBNIS_KOMPLETT;
  }

  public boolean isKomplettmeldung() {
    return false;
  }

  public boolean isTrendmeldung() {
    return !isKomplettmeldung();
  }

  public abstract boolean isGruppeStimmenDetailliertErfassen(Wahl wahl);

  public abstract boolean isGruppeStimmzettelNurEinzelnerWahlvorschlagDetailliertErfassen(Wahl wahl);

}
