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

import java.io.Serializable;

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.wahllokalsystem.boundary.WahllokalsystemStatusDAO;
import de.ivu.elect.business.wahllokalsystem.entity.WahllokalsystemAusstattung;
import de.ivu.elect.business.wahllokalsystem.entity.WahllokalsystemStatus;

public class WahllokalsystemStatusGebietCreateEventListener implements Serializable {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient WahllokalsystemStatusDAO wahllokalsystemStatusDAO;

  @Inject
  private transient WahllokalsystemAktiv wahllokalsystemAktiv;

  public void listen(@Observes(notifyObserver = Reception.ALWAYS, during = TransactionPhase.IN_PROGRESS) GebietCreateEvent event) {
    if (wahllokalsystemAktiv.isAktiv()) {
      Gebiet gebiet = event.getEntity();
      if (gebiet.isErfassungsgebiet()) {
        WahllokalsystemStatus wahllokalsystemStatus = new WahllokalsystemStatus();
        wahllokalsystemStatus.setGebiet(gebiet);
        wahllokalsystemStatus.setWahl(gebiet.getWahl());
        wahllokalsystemStatus.setAusstattung(WahllokalsystemAusstattung.VORHANDEN);
        wahllokalsystemStatusDAO.persist(wahllokalsystemStatus);
      }
    }

  }

}
