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

import java.util.Collections;
import java.util.List;

import javax.ejb.Stateless;

import de.ivu.elect.business.wahlbeteiligung.entity.QWahlbeteiligungAuswertung;
import de.ivu.elect.business.wahlbeteiligung.entity.WahlbeteiligungAuswertung;
import de.ivu.elect.jee.entity.QueryDsl;

@Stateless
public class WahlbeteiligungAuswertungSearch extends AbstractWahlbeteiligungAuswertungSearch {

  public WahlbeteiligungAuswertungSearch() {
    super();
  }

  @Override
  protected List<WahlbeteiligungAuswertung> querySearchResult(WahlbeteiligungAuswertungSearchParameters searchParameters) {

    if (searchParameters.getWahl() == null) {
      return Collections.emptyList();
    }

    QueryDsl qdsl = dao.getQueryDsl();

    QWahlbeteiligungAuswertung wahlbeteiligungAuswertung = QWahlbeteiligungAuswertung.wahlbeteiligungAuswertung;
    qdsl.from(wahlbeteiligungAuswertung);

    qdsl.eq(wahlbeteiligungAuswertung.wahl, searchParameters.getWahl());
    qdsl.eqIfNotNull(wahlbeteiligungAuswertung.status, searchParameters.getWahlbeteiligungAuswertung().getStatus());
    qdsl.eqIfNotNull(wahlbeteiligungAuswertung.typ, searchParameters.getWahlbeteiligungAuswertung().getTyp());

    qdsl.orderBy(wahlbeteiligungAuswertung.datum.asc());
    return qdsl.list(wahlbeteiligungAuswertung);

  }
}
