
package de.ivu.elect.presentation.ergebnis.dokumente.gesamtergebnis;

import java.util.HashMap;

import de.ivu.document.generator.template.annotations.DocumentComplexField;
import de.ivu.document.generator.template.annotations.DocumentSubTemplate;
import de.ivu.elect.business.ergebnis.control.ErgebnisDaten;
import de.ivu.elect.business.internet.control.GebietUndStimmabgabeart;
import de.ivu.elect.dokumente.CoreElectContext;
import de.ivu.elect.dokumente.wahlausschuss.WahlausschussDokument;

public class GebietMitStimmenUndWahlausschussDocument extends GebietMitStimmenDocument {

  private static final long serialVersionUID = 1L;

  @DocumentComplexField("Wahlgebiet-Uebergeordnet")
  public final GebietMitStimmenDocument wahlgebietUebergeordnet; // ELECT-10412

  @DocumentComplexField("Quorum-Wahlberechtigte")
  public final ErgebnisQuorumDocument quorumWahlberechtigte; // ELECT-13229

  @DocumentSubTemplate
  @DocumentComplexField("Wahlausschuss")
  public final WahlausschussDokument wahlausschuss;

  /**
   * @deprecated
   * @see GebietMitStimmenUndWahlausschussDocument#wahlausschuss
   */
  @Deprecated
  @DocumentSubTemplate
  @DocumentComplexField("Wahlauschuss")
  public final WahlausschussDokument wahlauschuss;

  public GebietMitStimmenUndWahlausschussDocument(CoreElectContext coreElectContext, ErgebnisDaten ergebnisDaten, GebietUndStimmabgabeart gebietUndStimmabgabeart,
      GebietMitStimmenDocument wahlgebietUebergeordnet) {
    super(coreElectContext, ergebnisDaten, gebietUndStimmabgabeart);

    this.wahlgebietUebergeordnet = wahlgebietUebergeordnet;

    this.quorumWahlberechtigte = new ErgebnisQuorumDocument(coreElectContext, ergebnisDaten.getErgebnisDatenQuorumWahlberechtigte(), gebietUndStimmabgabeart);

    this.wahlausschuss = new WahlausschussDokument(coreElectContext, gebietUndStimmabgabeart.getWahldurchfuehrungsgebiet(), new HashMap<>(ergebnisDaten.getWahlausschussmitgliederAufGebiet()));
    this.wahlauschuss = wahlausschuss;
  }
}
