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

import java.io.Serializable;
import java.util.Collections;

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

import de.ivu.elect.business.gebietsbaum.boundary.GebietCreateEvent;
import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.wahlbeteiligung.boundary.WahlbeteiligungVerlaufDAO;
import de.ivu.elect.business.wahlbeteiligung.boundary.WahlbeteiligungVerlaufGebietDAO;
import de.ivu.elect.business.wahlbeteiligung.entity.WahlbeteiligungVerlauf;

public class WahlbeteiligungVerlaufGebietCreateEventListener implements Serializable {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient WahlbeteiligungVerlaufDAO wahlbeteiligungVerlaufDAO;

  @Inject
  private transient WahlbeteiligungVerlaufGebietDAO wahlbeteiligungVerlaufGebietDAO;

  public void listen(@Observes(notifyObserver = Reception.ALWAYS, during = TransactionPhase.IN_PROGRESS) GebietCreateEvent event) {
    Gebiet gebiet = event.getEntity();
    if (gebiet != null && gebiet.getWahl() != null) {
      for (WahlbeteiligungVerlauf wahlbeteiligungVerlauf : wahlbeteiligungVerlaufDAO.findByWahl(gebiet.getWahl())) {
        WahlbeteiligungVerlaufCreate.createVerlaufFuerGebiet(wahlbeteiligungVerlauf, gebiet, wahlbeteiligungVerlaufGebietDAO, Collections.emptyMap());
      }
    }

  }

}
