
package de.ivu.elect.presentation.wahl;

import static java.util.Arrays.asList;
import static java.util.stream.Collectors.toList;

import java.util.List;

import javax.enterprise.context.RequestScoped;
import javax.enterprise.inject.Specializes;

import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.business.wahl.entity.NlWahlParameterWerte;
import de.ivu.elect.business.wahl.entity.WahlParameter;
import de.ivu.elect.business.wahl.entity.WahlParameterWerte;
import de.ivu.elect.presentation.View;
import de.ivu.elect.presentation.hilfe.OnlineHilfeId;

@Specializes
@RequestScoped
@OnlineHilfeId("786")
@View(viewId = WahlDokumentplatzhalterEditView.VIEW_ID, useCase = UseCasePermission.WAHL_DOKUMENT_PLATZHALTER_PARAMETER_EDIT)
public class NlWahlDokumentplatzhalterEditView extends WahlDokumentplatzhalterEditView {

  private static final long serialVersionUID = 1L;

  public NlWahlDokumentplatzhalterEditView() {
    super();
  }

  @Override
  protected List<WahlParameter> getWahlParameterListe() {
    if (wahlParameterListe == null) {
      List<String> wahlParameterSchluesselAnzuzeigen = collectWahlParameterSchluesselAnzuzeigen();

      wahlParameterListe = super.getWahlParameterListe().stream() //
          .filter(p -> wahlParameterSchluesselAnzuzeigen.contains(p.getSchluessel())) //
          .collect(toList());
    }

    return wahlParameterListe;
  }

  protected List<String> collectWahlParameterSchluesselAnzuzeigen() {
    return asList( //
        WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLBEZEICHNUNG.name(), //
        // WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLBEZEICHNUNG_KURZ.name(), //

        NlWahlParameterWerte.WAHLBEHOERDE_WAHLLEITER_NAME.getWahlParameterWerte().name(), //

        NlWahlParameterWerte.WAHLBEHOERDE_ANSCHRIFT_STRASSE_HAUSNUMMER.getWahlParameterWerte().name(), //
        NlWahlParameterWerte.WAHLBEHOERDE_ANSCHRIFT_PLZ.getWahlParameterWerte().name(), //
        NlWahlParameterWerte.WAHLBEHOERDE_ANSCHRIFT_ORT.getWahlParameterWerte().name(), //

        NlWahlParameterWerte.GEWAEHLTES_GREMIUM_NAME.getWahlParameterWerte().name(), //

        NlWahlParameterWerte.GEWAEHLTES_GREMIUM_DURCHFUEHRENDES_ORGAN.getWahlParameterWerte().name(), //

        NlWahlParameterWerte.GEWAEHLTES_GREMIUM_ANSCHRIFT_STRASSE_HAUSNUMMER.getWahlParameterWerte().name(), //
        NlWahlParameterWerte.GEWAEHLTES_GREMIUM_ANSCHRIFT_PLZ.getWahlParameterWerte().name(), //
        NlWahlParameterWerte.GEWAEHLTES_GREMIUM_ANSCHRIFT_ORT.getWahlParameterWerte().name(), //

        WahlParameterWerte.DOKUMENT_PLATZHALTER_BUNDESLAND_NAME.name(), //
        WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLKREIS_NUMMER.name(), //
        WahlParameterWerte.DOKUMENT_PLATZHALTER_WAHLKREIS_NAME.name(), //
        WahlParameterWerte.DOKUMENT_PLATZHALTER_GEMEINDE_NAME.name() //
    );
  }
}
