package org.lilie.services.eliot.absences.statistiques.tableaudebord
import org.lilie.services.eliot.absences.Sanction
+import org.lilie.services.eliot.scolarite.structureenseignement.LocalStructureEnseignementService
/**
* @author jbui
*/
class TableauDeBordSanctionService {
+
+ LocalStructureEnseignementService localStructureEnseignementService
+
/**
* Compte le nombre de sanctions sur la période et pour la liste de structures
*/
Integer calculeTotalSanction(TableauDeBordParams criteres,
TableauDeBord tableauDeBord) {
+ List<Long> autoriteEleveIds = []
if (criteres.hasSeuil()) {
- return calculeTotalSanctionForEleves(criteres, tableauDeBord)
+ autoriteEleveIds = tableauDeBord.lignesSansPagination*.autoriteEleveId
} else {
- return calculeTotalSanctionForCriteres(criteres)
+ autoriteEleveIds = localStructureEnseignementService.
+ listeElevesActifsOuSortants(criteres.classes*.id)*.autoriteId
}
+ return calculeTotalSanctionForEleves(criteres, autoriteEleveIds)
+
}
/**
* @return un Integer
*/
private Integer calculeTotalSanctionForEleves(TableauDeBordParams criteres,
- TableauDeBord tableauDeBord) {
- if (tableauDeBord.lignes) {
+ List<Long> autoriteEleveIds) {
+ if (autoriteEleveIds) {
List result =
Sanction.executeQuery(TableauDeBordSanctionServiceHql.HQL_COUNT_SANCTIONS_ELEVES, [
- autoriteIds: tableauDeBord.lignesSansPagination*.autoriteEleveId,
+ autoriteIds: autoriteEleveIds,
dateDebut: criteres.dateDebut,
- dateFin: criteres.dateFin
+ dateFin: criteres.dateFin,
+ etablissementId: criteres.classes[0].etablissementId
])
return (Integer) result[0]
} else {
}
}
- /**
- * Calcule le nombre de sanction en fonction des critères (dates et classes)
- * @param criteres : les critères
- * @return un Integer
- */
- private Integer calculeTotalSanctionForCriteres(TableauDeBordParams criteres) {
- List result =
- Sanction.executeQuery(TableauDeBordSanctionServiceHql.HQL_COUNT_SANCTIONS_FOR_CRITERES, [
- structures: criteres.classes,
- dateDebut: criteres.dateDebut,
- dateFin: criteres.dateFin
- ])
- return (Integer) result[0]
- }
-
/**
* Prépare les lignes du résultat en fonction du seuil demandé
*/