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

import static java.util.Optional.ofNullable;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.business.wahl.entity.WahlParameter;
import de.ivu.elect.business.wahl.entity.WahlParameterWerte;
import de.ivu.elect.business.wahl.entity.Wahlart;
import de.ivu.elect.business.wahl.entity.Wahltermin;

public class WahlDokumentPlatzhalterKonfigurationInit extends AbstractWahlParameterInit {

  public WahlDokumentPlatzhalterKonfigurationInit() {
    super();
  }

  @Override
  protected Collection<WahlParameter> createDefaultParameters(Wahltermin wahltermin, Wahl wahl) {
    List<WahlParameter> result = new ArrayList<>();

    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLBEHOERRDE_GEBIETSNAME, "");
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLBEHOERRDE_NAME, "");
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLBEHOERRDE_POSTANSCHRIFT_STRASSE, "");
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLBEHOERRDE_POSTANSCHRIFT_HAUSNUMMER, "");
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLBEHOERRDE_POSTANSCHRIFT_POSTFACH, "");
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLBEHOERRDE_POSTANSCHRIFT_PLZ, "");
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLBEHOERRDE_POSTANSCHRIFT_ORT, "");

    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLBEHOERRDE_BESUCHANSCHRIFT_STRASSE, "");
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLBEHOERRDE_BESUCHANSCHRIFT_HAUSNUMMER, "");
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLBEHOERRDE_BESUCHANSCHRIFT_PLZ, "");
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLBEHOERRDE_BESUCHANSCHRIFT_ORT, "");

    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLBEHOERRDE_WAHLLEITER_NAME, "");
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLBEHOERRDE_SACHBEARBEITER_NAME, "");
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLBEHOERRDE_SACHBEARBEITER_TELEFON, "");
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLBEHOERRDE_SACHBEARBEITER_TELEFAX, "");
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLBEHOERRDE_SACHBEARBEITER_EMAIL, "");

    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_BUNDESLAND_NAME, "");
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_LANDKREIS_NAME, "");
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLKREIS_NAME, "");
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLKREIS_NUMMER, "");
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_GEMEINDE_NAME, "");
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_GEMEINDE_NUMMER, "");

    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLBEZEICHNUNG, ofNullable(wahl).map(Wahl::getWahlart).map(Wahlart::getWahlbezeichnungLang).orElse(""));
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLBEZEICHNUNG_KURZ, ofNullable(wahl).map(Wahl::getWahlart).map(Wahlart::getKurzname).orElse(""));
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLAUSSCHUSSBEZEICHNUNG, ofNullable(wahl).map(Wahl::getWahlart).map(Wahlart::getWahlausschussbezeichnung).orElse(""));
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_ZU_WAEHLENDES_GREMIUM, ofNullable(wahl).map(Wahl::getWahlart).map(Wahlart::getZuWaehlendesGremium).orElse(""));

    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_STICHWAHLDATUM, "");
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLPERIODE_BEGINN, "");
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLPERIODE_ENDE, "");

    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_STIMMZETTEL_KANDIDATUR_NAMEN_FORMAT, "");
    add(result, WahlParameterWerte.DOKUMENT_PLATZHALTER_STIMMZETTEL_KANDIDATUR_INFOTEXT_FORMAT, "");

    return result;
  }
}
