
package de.ivu.elect.dokumente.veranstaltung;

import java.util.List;

import javax.enterprise.inject.Specializes;
import javax.inject.Inject;

import de.ivu.elect.business.dokumente.control.DokumentExtraFileOutput;
import de.ivu.elect.business.stimmzettel.boundary.EntityAufStimmzettelDatenDAOFactory;
import de.ivu.elect.business.veranstaltung.control.VeranstaltungDokumentContext;
import de.ivu.elect.business.veranstaltung.entity.Teilnahme;
import de.ivu.elect.business.veranstaltung.entity.Veranstaltung;
import de.ivu.elect.dokumente.CoreElectContext;
import de.ivu.elect.dokumente.CoreElectContextBuilder;
import de.ivu.elect.dokumente.kandidatur.KandidaturCoreDaten;

@Specializes
public class CoreVeranstaltungDokumentKonverter extends ElectVeranstaltungDokumentKonverter {

  @Inject
  private transient CoreElectContextBuilder coreElectContextBuilder;

  @Inject
  private transient EntityAufStimmzettelDatenDAOFactory entityAufStimmzettelDatenDAOFactory;

  public CoreVeranstaltungDokumentKonverter() {
    super();
  }

  @Override
  protected Object konvertiere(Veranstaltung veranstaltung, VeranstaltungDokumentContext context, DokumentExtraFileOutput dokumentExtraFileOutput) {
    CoreElectContext coreElectContext = coreElectContextBuilder.create(createBaseElectContext(context, dokumentExtraFileOutput));

    return konvertiere(coreElectContext, veranstaltung, new KandidaturCoreDaten(coreElectContext, entityAufStimmzettelDatenDAOFactory.getEntityAufStimmzettelDaten()), context.getTeilnahmen());
  }

  protected Object konvertiere(CoreElectContext coreElectContext, Veranstaltung veranstaltung, KandidaturCoreDaten kandidaturCoreDaten, List<Teilnahme> teilnahmen) {
    return new CoreVeranstaltungDocument(coreElectContext, veranstaltung, kandidaturCoreDaten, teilnahmen);
  }
}
