--- /dev/null
+/*
+* Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
+* This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
+*
+* Lilie is free software. You can redistribute it and/or modify since
+* you respect the terms of either (at least one of the both license) :
+* - under the terms of the GNU Affero General Public License as
+* published by the Free Software Foundation, either version 3 of the
+* License, or (at your option) any later version.
+* - the CeCILL-C as published by CeCILL-C; either version 1 of the
+* License, or any later version
+*
+* There are special exceptions to the terms and conditions of the
+* licenses as they are applied to this software. View the full text of
+* the exception in file LICENSE.txt in the directory of this software
+* distribution.
+*
+* Lilie is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* Licenses for more details.
+*
+* You should have received a copy of the GNU General Public License
+* and the CeCILL-C along with Lilie. If not, see :
+* <http://www.gnu.org/licenses/> and
+* <http://www.cecill.info/licences.fr.html>.
+*/
+package org.lilie.services.eliot.applications.absences.statistiques.periode
+
+import org.lilie.services.eliot.absences.PreferencesEtablissementAbsences
+import org.lilie.services.eliot.applications.absences.bilan.BilanService
+import org.lilie.services.eliot.applications.absences.statistiques.commons.StatsAbsencesParPeriode
+import org.lilie.services.eliot.applications.absences.bilan.BilanAbsencesParPersonneInfo
+import org.lilie.services.eliot.applications.absences.BasicCriteresRecherche
+import org.lilie.services.eliot.scolarite.personne.eleve.FicheEleveAbsencesReferentiel
+import org.lilie.services.eliot.applications.absences.bilan.BilanUtils
+
+/**
+ * Calcule les stats par période
+ * @author jbui
+ */
+class StatsPeriodesService extends BilanService {
+
+ StatsAbsencesParPeriode calculeStatsPeriodesAbsences(
+ FicheEleveAbsencesReferentiel ficheEleveAbsencesReferentiel,
+ BasicCriteresRecherche basicCriteresRecherche) {
+
+ StatsPeriodes statsPeriodes = new StatsPeriodes(
+ periodes: ficheEleveAbsencesReferentiel.periodes,
+ calendrier: ficheEleveAbsencesReferentiel.calendrier
+ )
+ statsPeriodes.lignes << new StatsPeriodesLigne(
+ ficheEleveAbsencesReferentiel.eleve
+ )
+
+ return calculeStatsPeriodesAbsences(
+ basicCriteresRecherche,
+ statsPeriodes,
+ ficheEleveAbsencesReferentiel.preferencesEtablissementAbsences
+ )
+ }
+
+ StatsAbsencesParPeriode calculeStatsPeriodesAbsences(
+ BasicCriteresRecherche criteres,
+ StatsAbsencesParPeriode stats,
+ PreferencesEtablissementAbsences pref
+ ) {
+
+ BilanAbsencesParPersonneInfo absencesDatas = findAbsencesDatas(criteres)
+
+ return calculeCountAbsences(
+ absencesDatas,
+ pref,
+ stats
+ )
+ }
+
+ StatsAbsencesParPeriode calculeStatsPeriodesRetardsDeparts(
+ FicheEleveAbsencesReferentiel ficheEleveAbsencesReferentiel,
+ BasicCriteresRecherche basicCriteresRecherche) {
+
+ StatsPeriodes statsPeriodes = new StatsPeriodes(
+ periodes: ficheEleveAbsencesReferentiel.periodes,
+ calendrier: ficheEleveAbsencesReferentiel.calendrier
+ )
+ statsPeriodes.lignes << new StatsPeriodesLigne(
+ ficheEleveAbsencesReferentiel.eleve
+ )
+
+ return calculeStatsPeriodesRetardsDeparts(
+ basicCriteresRecherche,
+ statsPeriodes,
+ ficheEleveAbsencesReferentiel.preferencesEtablissementAbsences
+ )
+ }
+
+ StatsAbsencesParPeriode calculeStatsPeriodesRetardsDeparts(
+ BasicCriteresRecherche criteres,
+ StatsAbsencesParPeriode stats,
+ PreferencesEtablissementAbsences pref
+ ) {
+
+ BilanAbsencesParPersonneInfo absencesDatas = findAbsencesDatas(criteres)
+
+ return BilanUtils.calculeCountAbsencesRetardDepart(
+ absencesDatas,
+ pref,
+ stats
+ )
+ }
+
+}