
package de.ivu.elect.sitzberechnung.verteilung.trivial;

import static java.util.Collections.emptyList;

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

import de.ivu.elect.sitzberechnung.verteilung.AbstractVerteilungErgebnis;
import de.ivu.elect.sitzberechnung.verteilung.Teilnehmer;
import de.ivu.elect.sitzberechnung.verteilung.VerteilungContext;

public class NachStimmenErgebnis extends AbstractVerteilungErgebnis<NachStimmenTeilnehmerErgebnis> {

  private final List<NachStimmenTeilnehmerErgebnis> teilnehmerErgebnisseMitSitz;

  private final List<NachStimmenTeilnehmerErgebnis> teilnehmerErgebnisseOhneSitz;

  public NachStimmenErgebnis(VerteilungContext context, long anzahlSitzeZuVerlosen, List<NachStimmenTeilnehmerErgebnis> teilnehmerErgebnisse,
      List<NachStimmenTeilnehmerErgebnis> teilnehmerErgebnisseMitSitz, List<NachStimmenTeilnehmerErgebnis> teilnehmerErgebnisseImLosverfahren,
      List<NachStimmenTeilnehmerErgebnis> teilnehmerErgebnisseOhneSitz) {
    super(context, teilnehmerErgebnisse, anzahlSitzeZuVerlosen, teilnehmerErgebnisseImLosverfahren);

    this.teilnehmerErgebnisseMitSitz = teilnehmerErgebnisseMitSitz;
    this.teilnehmerErgebnisseOhneSitz = teilnehmerErgebnisseOhneSitz;
  }

  public List<NachStimmenTeilnehmerErgebnis> getTeilnehmerMitSitz() {
    return teilnehmerErgebnisseMitSitz;
  }

  public List<NachStimmenTeilnehmerErgebnis> getTeilnehmerOhneSitz() {
    return teilnehmerErgebnisseOhneSitz;
  }

  public static NachStimmenErgebnis ohneVerteilung(VerteilungContext context, List< ? extends Teilnehmer> teilnehmerInVerteilung) {
    List<NachStimmenTeilnehmerErgebnis> teilnehmerErgebnisse = new ArrayList<>();

    for (Teilnehmer teilnehmer : teilnehmerInVerteilung) {
      teilnehmerErgebnisse.add(NachStimmenTeilnehmerErgebnis.ohneVerteilung(teilnehmer));
    }

    return new NachStimmenErgebnis(context, 0L, teilnehmerErgebnisse, emptyList(), emptyList(), teilnehmerErgebnisse);
  }
}
