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

import static java.util.Collections.emptyList;
import static java.util.Collections.singletonList;

import javax.inject.Inject;

import de.ivu.elect.business.benutzerverwaltung.entity.Benutzer;
import de.ivu.elect.business.datei.entity.DateiExport;
import de.ivu.elect.business.dokumente.entity.DokumentVorlage;
import de.ivu.elect.business.fremdkandidatur.entity.Fremdkandidatur;
import de.ivu.elect.business.person.control.PersonendatenDateiExportCreate;
import de.ivu.elect.business.personenpruefung.boundary.PersonenPruefungStarter;
import de.ivu.elect.business.wahl.boundary.WahlDAO;

public class FremdkandidaturCreate extends AbstractFremdkandidaturCreate {

  @Inject
  private transient WahlDAO wahlDAO;

  @Inject
  private transient PersonendatenDateiExportCreate personendatenDateiExportCreate;

  @Inject
  private transient PersonenPruefungStarter personenPruefungStarter;

  public FremdkandidaturCreate() {
    super();
  }

  public void save(Fremdkandidatur fremdkandidatur, DateiExport dateiExportDetached, DokumentVorlage dokumentVorlageDetached, Benutzer benutzerDetached) {
    save(fremdkandidatur);

    if (fremdkandidatur.isPersistent() && dateiExportDetached != null && dokumentVorlageDetached != null) { // ELECTMUC-2217
      personendatenDateiExportCreate.save(singletonList(fremdkandidatur), dateiExportDetached, dokumentVorlageDetached, benutzerDetached, emptyList());
    }
  }

  @Override
  public void save(Fremdkandidatur fremdkandidatur) {
    fremdkandidatur.setWahl(wahlDAO.attach(fremdkandidatur.getWahl()));

    super.save(fremdkandidatur);

    startPersonenPruefung();
  }

  private void startPersonenPruefung() {
    personenPruefungStarter.startePersonenPruefung();
  }
}
