
package de.ivu.elect.presentation.wahlvorschlag;

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

import javax.annotation.Nullable;
import javax.enterprise.inject.Specializes;
import javax.inject.Inject;

import de.ivu.elect.business.wahlvorschlag.entity.ListeProperties;
import de.ivu.elect.jee.presentation.dynamicform.FormBuilder;
import de.ivu.elect.jee.presentation.redirect.Redirect;
import de.ivu.elect.jee.presentation.search.AbstractSearchParameters;
import de.ivu.elect.presentation.hilfe.OnlineHilfeId;
import de.ivu.elect.presentation.wahlvorschlag.action.NlListeZulassungAblehnenMitBemerkungAction;
import de.ivu.elect.presentation.wahlvorschlag.menu.NlUbergeordnetesGebietWechselnMenuItemEntry;

@Specializes
@OnlineHilfeId(value = "443", mehrfachVergebenOk = true)
public class NlListeSearchView extends ListeSearchView {

  private static final long serialVersionUID = 1L;

  private String wahlvorschlagStatusBemerkung;

  @Inject
  private transient NlUbergeordnetesGebietWechselnMenuItemEntry nlUbergeordnetesGebietWechselnMenuItemEntry;

  public NlListeSearchView() {
    super();
  }

  @Override
  public void addProperties(FormBuilder formBuilder) {
    String wildcardTooltip = getMessage(AbstractSearchParameters.WILDCARD_TOOLTIP_MSG_KEY);

    ListeProperties listeProperties = getSearchParameters().getListe().getProperties();

    formBuilder.addProperty(listeProperties.getKennwortProperty()).withTooltip(wildcardTooltip);

    addZulassungsProperty(formBuilder, listeProperties);
  }

  protected void addZulassungsProperty(FormBuilder formBuilder, ListeProperties listeProperties) {
    formBuilder.addProperty(listeProperties.getWahlvorschlagStatusMitLeererAuswahlProperty()).withRequired(false);
  }

  @Override
  public boolean isBtnAlleListenLoeschenRendered() {
    return false; // ELECTVAPP-323
  }

  @Redirect
  @Override
  public String reset() {
    setWahlvorschlagStatusBemerkung("");

    return super.reset();
  }

  public String getWahlvorschlagStatusBemerkung() {
    return wahlvorschlagStatusBemerkung;
  }

  public void setWahlvorschlagStatusBemerkung(String wahlvorschlagStatusBemerkung) {
    this.wahlvorschlagStatusBemerkung = wahlvorschlagStatusBemerkung;
  }

  @Override
  public List<String> getDialogTemplates() {
    List<String> result = new ArrayList<>(super.getDialogTemplates());

    result.add(NlListeZulassungAblehnenMitBemerkungAction.DIALOG_TEMPLATE_PATH); // ELECT-10224

    return result;
  }

  @Override
  public boolean isBtnGebietHoeherRendered() {
    return nlUbergeordnetesGebietWechselnMenuItemEntry.isPossible();
  }

  @Override
  public String getGebietHoeherLabel() {
    return nlUbergeordnetesGebietWechselnMenuItemEntry.getLabelFinal();
  }

  @Override
  @Redirect
  @Nullable
  public String gebietHoeher() {
    return nlUbergeordnetesGebietWechselnMenuItemEntry.doAction();
  }

}
