
package de.ivu.elect.presentation.kandidatur;

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

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import de.ivu.elect.business.gebietsbaum.boundary.GebietSessionStore;
import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.jee.faces.PreConditionCheck;
import de.ivu.elect.jee.presentation.dynamicform.FormBuilder;

@Specializes
public class NlKandidaturSearchView extends KandidaturSearchView {

  private static final Logger LOG = LoggerFactory.getLogger(NlKandidaturSearchView.class);

  private static final long serialVersionUID = 1L;

  @Inject
  private transient GebietSessionStore gebietSessionStore;

  public NlKandidaturSearchView() {
    super();
  }

  @Nullable
  @Override
  @PreConditionCheck
  public String checkCondition() {
    String result = super.checkCondition();

    // ELECT-13370
    Gebiet selectedGebiet = getSelectedGebiet();

    if (selectedGebiet != null) {
      Gebiet uebergeordnetesGebiet = selectedGebiet.getUebergeordnetesGebiet();

      if (uebergeordnetesGebiet != null) {
        LOG.info("Wechsle Gebiet: " + uebergeordnetesGebiet);

        gebietSessionStore.setEntityPK(uebergeordnetesGebiet.getPk()); // Kein event feuern...

        reset();
      }
    }

    return result;
  }

  @Override
  public void addProperties(FormBuilder formBuilder) {
    formBuilder.addProperty(getSearchParameters().getPolitischeGruppeProperty(getAllePolitischenGruppenSortiert(), getAlleWahlvorschlaegeProGruppe()));
    formBuilder.addProperty(getSearchParameters().getFamiliennameProperty());
    formBuilder.addProperty(getSearchParameters().getVornameProperty());
  }
}
