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

import java.util.List;

import javax.enterprise.event.Observes;
import javax.inject.Inject;

import de.ivu.elect.business.security.control.ElectCommonPrincipal;
import de.ivu.elect.business.wahl.entity.Wahltermin;
import de.ivu.elect.jee.security.LoginChangeEvent;

public class SetzeWahlterminLoginChangeListener {

  @Inject
  private transient WahlterminSessionSelect wahlterminSelect;

  @Inject
  private transient  WahlterminExtendedDAO wahlterminExtendedDAO;

  @Inject
  protected transient ElectCommonPrincipal principal;

  public void onLoginChanged(@Observes LoginChangeEvent event) {
    login();
  }

  protected void login() {
    clearWahlterminSelect();
    initWahlterminSelect();
  }

  protected void clearWahlterminSelect() {
    setWahltermin(null);
  }

  protected void initWahlterminSelect() {
    List<Wahltermin> wahltermine = getWahltermine();

    if (wahltermine.size() == 1) {
      setWahltermin(wahltermine.get(0));
    }
  }

  protected void setWahltermin(Wahltermin wahl) {
    wahlterminSelect.setEntity(wahl);
  }

  protected List<Wahltermin> getWahltermine() {
    return wahlterminExtendedDAO.findByAll(principal.getMandant());
  }

}
