
package de.ivu.elect.dokumente.wahlausschuss;

import de.ivu.document.generator.template.annotations.Document;
import de.ivu.document.generator.template.annotations.DocumentComplexField;
import de.ivu.document.generator.template.annotations.DocumentSimpleField;
import de.ivu.elect.business.dokumente.entity.DokumentVorlageArt;
import de.ivu.elect.business.wahlausschuss.entity.Wahlausschussmitglied;
import de.ivu.elect.dokumente.CoreElectContext;

@Document(value = DokumentVorlageArt.WAHLAUSSCHUSSMITGLIED_SUB_TEMPLATE, isSubTemplate = true)
public class WahlausschussmitgliedDokument extends WahlausschussmitgliedOhneVertreterDokument {

  private static final long serialVersionUID = 1L;

  public static final WahlausschussmitgliedDokument EMPTY_OBJECT = new WahlausschussmitgliedDokument();

  @DocumentComplexField("Vertreter")
  public final WahlausschussmitgliedOhneVertreterDokument vertreter;

  @DocumentComplexField("Vertritt")
  public final WahlausschussmitgliedOhneVertreterDokument vertritt;

  @DocumentSimpleField("LaufendeNummer")
  public final Long laufendeNummer;

  protected WahlausschussmitgliedDokument() {
    super();

    this.vertreter = WahlausschussmitgliedOhneVertreterDokument.EMPTY_OBJECT;
    this.vertritt = WahlausschussmitgliedOhneVertreterDokument.EMPTY_OBJECT;

    this.laufendeNummer = null;
  }

  public WahlausschussmitgliedDokument(CoreElectContext coreElectContext, Wahlausschussmitglied wahlausschussmitglied, Long laufendeNummer) {
    super(coreElectContext, wahlausschussmitglied);

    if (wahlausschussmitglied.isVertreterVorhanden()) {
      this.vertreter = new WahlausschussmitgliedOhneVertreterDokument(coreElectContext, wahlausschussmitglied.getVertreter());
    } else {
      this.vertreter = WahlausschussmitgliedOhneVertreterDokument.EMPTY_OBJECT;
    }

    if (wahlausschussmitglied.isVertrittJemanden()) {
      this.vertritt = new WahlausschussmitgliedOhneVertreterDokument(coreElectContext, wahlausschussmitglied.getZuVertetendesWahlausschussmitglied());
    } else {
      this.vertritt = WahlausschussmitgliedOhneVertreterDokument.EMPTY_OBJECT;
    }

    this.laufendeNummer = laufendeNummer;
  }
}
