
package de.ivu.elect.dokumente.veranstaltung;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import de.ivu.document.generator.template.annotations.Document;
import de.ivu.document.generator.template.annotations.DocumentRepeat;
import de.ivu.elect.business.dokumente.entity.DokumentVorlageArt;
import de.ivu.elect.business.veranstaltung.entity.Teilnahme;
import de.ivu.elect.business.veranstaltung.entity.Veranstaltung;
import de.ivu.elect.dokumente.BaseElectContext;
import de.ivu.elect.dokumente.ElectDocument;

@Document(DokumentVorlageArt.VERANSTALTUNGEN_ALS_LISTE_DOKUMENT_PREFIX)
public class VeranstaltungenAlsListeDocument extends ElectDocument {

  private static final long serialVersionUID = 1L;

  @DocumentRepeat(value = "Veranstaltungen", elementClass = VeranstaltungDocument.class, itemName = "veranstaltung")
  public final List<VeranstaltungDocument> veranstaltungen;

  public VeranstaltungenAlsListeDocument(BaseElectContext baseElectContext, List<Veranstaltung> veranstaltungen,
      Map<Veranstaltung, List<Teilnahme>> teilnehmerProVeranstaltung) {
    super(baseElectContext);

    this.veranstaltungen = erzeugeVeranstaltungen(baseElectContext, veranstaltungen, teilnehmerProVeranstaltung);
  }

  private List<VeranstaltungDocument> erzeugeVeranstaltungen(BaseElectContext baseElectContext, List<Veranstaltung> veranstaltungen,
      Map<Veranstaltung, List<Teilnahme>> teilnehmerProVeranstaltung) {
    List<VeranstaltungDocument> result = new ArrayList<>();

    for (Veranstaltung veranstaltung : veranstaltungen) {
      result.add(new VeranstaltungDocument(baseElectContext, veranstaltung, teilnehmerProVeranstaltung.get(veranstaltung)));
    }

    return result;
  }
}
