
package de.ivu.elect.business.ergebnis.boundary;

import java.util.List;
import java.util.stream.Collectors;

import javax.inject.Inject;

import de.ivu.elect.business.ergebnis.control.SitzeImportContext;
import de.ivu.elect.business.ergebnis.entity.Sitze;
import de.ivu.elect.business.gruppe.control.ImporterFindVorhandeneGruppeVerhalten;
import de.ivu.elect.jee.exchange.Violations;
import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.gruppe.entity.Gruppe;
import de.ivu.elect.business.gruppeimgebiet.control.GruppeImGebietGruppenGebieteValidator;
import de.ivu.elect.business.wahl.boundary.WahlDAO;
import de.ivu.elect.business.wahl.entity.Wahl;

public class SitzeImportValidator {

  @Inject
  private GruppeImGebietGruppenGebieteValidator gruppeImGebietGruppenGebieteValidator;

  @Inject
  private WahlDAO wahlDAO;

  public void validiere(Violations violations, List<Sitze> importObject, SitzeImportContext context) {
    Wahl wahl = wahlDAO.attach(context.getWahl());

    List<Gruppe> gruppen = importObject.stream().map(Sitze::getGruppe).collect(Collectors.toList());
    List<Gebiet> gebiete = importObject.stream().map(Sitze::getGebiet).collect(Collectors.toList());

    // TODO ELECT-16308 Option für Sitzeimport anbieten
    gruppeImGebietGruppenGebieteValidator.pruefeExistenzAlleGruppenUndGebiete(gruppen, gebiete, wahl, violations, ImporterFindVorhandeneGruppeVerhalten.NUR_SCHLUESSEL);
  }
}
