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

import javax.inject.Inject;

import de.ivu.elect.business.kandidatenportal.entity.WvpWarnung;
import de.ivu.elect.business.kandidatur.boundary.KandidaturDAO;
import de.ivu.elect.business.kandidatur.entity.Kandidatur;
import de.ivu.elect.business.wahlvorschlag.entity.Wahlvorschlag;
import de.ivu.elect.business.wahlvorschlagsperson.boundary.WahlvorschlagsPersonDAO;
import de.ivu.elect.business.wahlvorschlagsperson.entity.WahlvorschlagsPerson;

public class WvpWarnungCreate extends AbstractWvpWarnungCreate {

  @Inject
  private transient KandidaturDAO kandidaturDAO;

  @Inject
  private transient WahlvorschlagsPersonDAO wahlvorschlagsPersonDAO;

  public WvpWarnungCreate() {
    super();
  }

  @Override
  public void save(WvpWarnung wvpWarnung) {
    Wahlvorschlag wahlvorschlag = wvpWarnung.getWahlvorschlag();

    if (wahlvorschlag == null) {
      Kandidatur kandidatur = kandidaturDAO.attach(wvpWarnung.getKandidatur());

      if (kandidatur != null) {
        wahlvorschlag = kandidatur.getWahlvorschlag();
      } else {
        WahlvorschlagsPerson wahlvorschlagsPerson = wahlvorschlagsPersonDAO.attach(wvpWarnung.getWahlvorschlagsPerson());

        if (wahlvorschlagsPerson != null) {
          wahlvorschlag = wahlvorschlagsPerson.getWahlvorschlag();
        }
      }
    }

    wvpWarnung.setWahlvorschlag(wahlvorschlag); // ELECT-11659, Wahlvorschlag IMMER setzen, um danach per Wahl suchen zu können, cf. WvpWarnungDAO#findByWahl...

    super.save(wvpWarnung);
  }
}
