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

import javax.inject.Inject;

import de.ivu.elect.business.gebietsbaum.boundary.GebietDAO;
import de.ivu.elect.business.person.control.PersonendatenWildfly11HackPersist;
import de.ivu.elect.business.veranstaltung.boundary.VeranstaltungDAO;
import de.ivu.elect.business.veranstaltung.entity.Veranstaltung;
import de.ivu.elect.business.wahl.boundary.WahlDAO;
import de.ivu.elect.business.wahl.boundary.WahlterminDAO;

public class VeranstaltungCreate extends AbstractVeranstaltungCreate {

  @Inject
  private transient WahlDAO wahlDAO;

  @Inject
  private transient WahlterminDAO wahlterminDAO;

  @Inject
  private transient VeranstaltungDAO veranstaltungDAO;

  @Inject
  private transient GebietDAO gebietDAO;

  @Inject
  private transient PersonendatenWildfly11HackPersist wildfly11HackPersist;

  @Override
  public void save(Veranstaltung entity) {
    entity.setWahltermin(wahlterminDAO.attach(entity.getWahltermin()));
    entity.setWahl(wahlDAO.attach(entity.getWahl()));
    entity.setGebiet(gebietDAO.attach(entity.getGebiet()));
    entity.getAnsprechpartner().setWahl(entity.getWahl());
    entity.getAnsprechpartner().setWahltermin(entity.getWahltermin());
    entity.setVerknuepfteVeranstaltung(veranstaltungDAO.attach(entity.getVerknuepfteVeranstaltung()));

    wildfly11HackPersistUndFlush(entity); // ELECT-8342 WFLY11-Hack

    if (!entity.getVeranstaltungArt().isSchulung()) {
      entity.setSchulungArt(null);
    }

    super.save(entity);
  }

  private void wildfly11HackPersistUndFlush(Veranstaltung entity) {
    wildfly11HackPersist.persist(entity.getAnsprechpartner());
    wildfly11HackPersist.persist(entity.getAnschrift());
    wildfly11HackPersist.flush();
  }



}
