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

import java.util.List;

import javax.ejb.Stateless;
import javax.inject.Inject;

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

import de.ivu.elect.business.mandant.boundary.MandantDAO;
import de.ivu.elect.business.mandant.entity.Mandant;
import de.ivu.elect.business.wahl.boundary.WahlDAO;
import de.ivu.elect.business.wahl.boundary.WahlterminDAO;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.business.wahl.entity.Wahltermin;
import de.ivu.elect.jee.startup.PostStartupAsync;

@Stateless
public class PersonPruefungKonfigurationPostStartup implements PostStartupAsync {

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

  @Inject
  private transient WahlDAO wahlDAO;

  @Inject
  private transient WahlterminDAO wahlterminDAO;

  @Inject
  private transient MandantDAO mandantDAO;

  @Inject
  private transient PersonPruefungKonfigurationInit personPruefungKonfigurationInit;

  @Override
  public void postStartup() {
    LOG.info("Initialisiere PersonPruefungKonfiguration");

    for (Mandant mandant : mandantDAO.findByAll()) {
      List<Wahl> wahlen = wahlDAO.findByAll(mandant);
      if (wahlen.isEmpty()) {
        for (Wahltermin wahltermin : wahlterminDAO.findByAll(mandant)) {
          personPruefungKonfigurationInit.init(wahltermin);
        }
      } else {
        for (Wahl wahl : wahlen) {
          personPruefungKonfigurationInit.init(wahl);
        }
      }
    }
    LOG.info("Initialisiere PersonPruefungKonfiguration - done");

  }
}
