
package de.ivu.elect.business.gruppeimgebiet.control;

import java.util.List;

import javax.inject.Inject;

import de.ivu.elect.business.ergebnis.entity.Stimmen;
import de.ivu.elect.jee.exchange.Violations;
import de.ivu.elect.business.gruppeimgebiet.boundary.GruppeImGebietDAO;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.presentation.gebietsbaum.GebietNummerFormatter;
import de.ivu.elect.presentation.gruppe.GruppeSchluesselFormatter;

public class GruppeImGebietStimmenWahlvorschlagValidator {

  @Inject
  transient GruppeImGebietDAO gruppeImGebietDAO;

  @Inject
  transient GebietNummerFormatter gebietNummerFormatter;

  @Inject
  transient GruppeSchluesselFormatter gruppeSchluesselFormatter;

  public void pruefeExistenzWahlvorschlagZugelassenOderUnbestimmt(Violations violations, List<Stimmen> importObject,
      Wahl wahl) {
// TODO überdenken....
//    List<GruppeImGebiet> gruppenInGebieten = gruppeImGebietDAO.findByWahl(wahl);
//    Map<GruppeImGebietTK, GruppeImGebiet> vorhandeneGruppeImGebietNachTKMap = GruppeImGebietTK
//        .mappeGruppeImGebietNachTK(gruppenInGebieten);
//
//    for (Stimmen s : importObject) {
//      GruppeImGebiet gruppeImGebiet = s.getGruppeImGebiet();
//      GruppeImGebiet vorhandeneGruppeImGebiet = vorhandeneGruppeImGebietNachTKMap.get(gruppeImGebiet
//          .getGruppeImGebietTK());
//      String nummerGebietFormatiert = gebietNummerFormatter.getNummer(gruppeImGebiet.getGebiet());
//      String schluesselGruppeFormatiert = gruppeSchluesselFormatter.getSchluessel(gruppeImGebiet.getGruppe());
//      if (vorhandeneGruppeImGebiet == null) {
//        violations.add(new GruppeImGebietNichtGefundenViolation(s.getGruppeImGebiet(), nummerGebietFormatiert,
//            schluesselGruppeFormatiert));
//      } else {
////        if (!vorhandeneGruppeImGebiet.isSystemGruppe()
////            && vorhandeneGruppeImGebiet.getGebiet()
////                .isWahlOderDirektwahlOderListenwahlgebietOderHatEntprechendesUntergebiet()) {
////          if (s.isDirektstimme()) {
////            if (!vorhandeneGruppeImGebiet.isStatusUnbestimmtOderZugelassen()
////                || !vorhandeneGruppeImGebiet.hatDirektkandidatZugelassenOderUnbestimmtInGebietshierarchie()) {
////              violations.add(new DirektkandidatNichtGefundenViolation(gruppeImGebiet, nummerGebietFormatiert,
////                  schluesselGruppeFormatiert));
////            }
////          }
////          if (s.isListenstimme()) {
////            if (!vorhandeneGruppeImGebiet.isStatusUnbestimmtOderZugelassen()
////                || !vorhandeneGruppeImGebiet.hatListeZugelassenOderUnbestimmtInGebietshierarchie()) {
////              violations.add(new ListeNichtGefundenViolation(gruppeImGebiet, nummerGebietFormatiert,
////                  schluesselGruppeFormatiert));
////            }
////          }
////        }
//      }
//    }
  }
}
