* @param calendrier calendrier concerné
* @return le modèle enrichi
*/
- public Map marshallAnneeScolaire(Map modele, Calendrier calendrier) {
+ private Map marshallAnneeScolaire(Map modele, Calendrier calendrier) {
Map anneeScolaire = [
debutAnneeScolaire: formateDate(calendrier.premierJour),
finAnneeScolaire: formateDate(calendrier.dernierJour)
package org.lilie.services.eliot.absences.consultation
-import org.lilie.services.eliot.absences.consultation.sqlbuilder.AbstractSqlBuilder
+import org.lilie.services.eliot.absences.consultation.sqlbuilder.AbstractSqlBuilder as ASB
/**
* DTO contenant une ligne de résultat des requêtes de consultation.
* qui sont définis par les constantes dans AbstractSqlBuilder : ALIAS_*
* @author jbui
*/
-@SuppressWarnings("AbcComplexity")
class LigneResultatRequeteConsultation {
Long appelLigneId
Boolean retard
* @param row : Map contenant la ligne de résultat
*/
LigneResultatRequeteConsultation(Map row) {
- this.appelLigneId = (Long) row.get(AbstractSqlBuilder.ALIAS_APPEL_LIGNE_ID)
- this.retard = (Boolean) row.get(AbstractSqlBuilder.ALIAS_RETARD)
- this.departAnticipe = (Boolean) row.get(AbstractSqlBuilder.ALIAS_DEPART_ANTICIPE)
- this.heureArrivee = (Date) row.get(AbstractSqlBuilder.ALIAS_HEURE_ARRIVEE)
- this.heureDepart = (Date) row.get(AbstractSqlBuilder.ALIAS_HEURE_DEPART)
- this.heureDebut = (Date) row.get(AbstractSqlBuilder.ALIAS_HEURE_DEBUT)
- this.heureFin = (Date) row.get(AbstractSqlBuilder.ALIAS_HEURE_FIN)
- this.demiPension = (Boolean) row.get(AbstractSqlBuilder.ALIAS_DEMI_PENSION)
- this.internat = (Boolean) row.get(AbstractSqlBuilder.ALIAS_INTERNAT)
- this.absencePrevisionnelle = (Boolean) row.get(AbstractSqlBuilder.ALIAS_ABSENCE_PREVISIONNELLE)
- this.absenceJustifiee = (Boolean) row.get(AbstractSqlBuilder.ALIAS_ABSENCE_JUSTIFIEE)
- this.presence = (Boolean) row.get(AbstractSqlBuilder.ALIAS_PRESENCE)
- this.appelDateHeureDebut = (Date) row.get(AbstractSqlBuilder.ALIAS_APPEL_DATE_HEURE_DEBUT)
- this.appelDateHeureFin = (Date) row.get(AbstractSqlBuilder.ALIAS_APPEL_DATE_HEURE_FIN)
- this.eleveNom = (String) row.get(AbstractSqlBuilder.ALIAS_ELEVE_NOM)
- this.elevePrenom = (String) row.get(AbstractSqlBuilder.ALIAS_ELEVE_PRENOM)
- this.personneId = (Long) row.get(AbstractSqlBuilder.ALIAS_PERSONNE_ID)
- this.groupeMotifLibelle = (String) row.get(AbstractSqlBuilder.ALIAS_GROUPE_MOTIF_LIBELLE)
- this.motifLibelle = (String) row.get(AbstractSqlBuilder.ALIAS_MOTIF_LIBELLE)
- this.regimeCode = (String) row.get(AbstractSqlBuilder.ALIAS_REGIME_CODE)
- this.structureCode = (String) row.get(AbstractSqlBuilder.ALIAS_STRUCTURE_CODE)
- this.evenementDateHeureDebut = (Date) row.get(AbstractSqlBuilder.ALIAS_EVENEMENT_DATE_HEURE_DEBUT)
- this.absenceJourneeDate = (Date) row.get(AbstractSqlBuilder.ALIAS_ABSENCE_JOURNEE_DATE)
- this.dateSort = (Date) row.get(AbstractSqlBuilder.ALIAS_DATE_SORT)
- this.autoriteAppelantId=(Long)row.get(AbstractSqlBuilder.ALIAS_AUTORITE_ID)
+ this.appelLigneId = (Long) row.get(ASB.ALIAS_APPEL_LIGNE_ID)
+ this.retard = (Boolean) row.get(ASB.ALIAS_RETARD)
+ this.departAnticipe = (Boolean) row.get(ASB.ALIAS_DEPART_ANTICIPE)
+ this.heureArrivee = (Date) row.get(ASB.ALIAS_HEURE_ARRIVEE)
+ this.heureDepart = (Date) row.get(ASB.ALIAS_HEURE_DEPART)
+ this.heureDebut = (Date) row.get(ASB.ALIAS_HEURE_DEBUT)
+ this.heureFin = (Date) row.get(ASB.ALIAS_HEURE_FIN)
+ this.demiPension = (Boolean) row.get(ASB.ALIAS_DEMI_PENSION)
+ this.internat = (Boolean) row.get(ASB.ALIAS_INTERNAT)
+ this.absencePrevisionnelle = (Boolean) row.get(ASB.ALIAS_ABSENCE_PREVISIONNELLE)
+ this.absenceJustifiee = (Boolean) row.get(ASB.ALIAS_ABSENCE_JUSTIFIEE)
+ this.presence = (Boolean) row.get(ASB.ALIAS_PRESENCE)
+ this.appelDateHeureDebut = (Date) row.get(ASB.ALIAS_APPEL_DATE_HEURE_DEBUT)
+ this.appelDateHeureFin = (Date) row.get(ASB.ALIAS_APPEL_DATE_HEURE_FIN)
+ this.eleveNom = (String) row.get(ASB.ALIAS_ELEVE_NOM)
+ this.elevePrenom = (String) row.get(ASB.ALIAS_ELEVE_PRENOM)
+ this.personneId = (Long) row.get(ASB.ALIAS_PERSONNE_ID)
+ this.groupeMotifLibelle = (String) row.get(ASB.ALIAS_GROUPE_MOTIF_LIBELLE)
+ this.motifLibelle = (String) row.get(ASB.ALIAS_MOTIF_LIBELLE)
+ this.regimeCode = (String) row.get(ASB.ALIAS_REGIME_CODE)
+ this.structureCode = (String) row.get(ASB.ALIAS_STRUCTURE_CODE)
+ this.evenementDateHeureDebut = (Date) row.get(ASB.ALIAS_EVENEMENT_DATE_HEURE_DEBUT)
+ this.absenceJourneeDate = (Date) row.get(ASB.ALIAS_ABSENCE_JOURNEE_DATE)
+ this.dateSort = (Date) row.get(ASB.ALIAS_DATE_SORT)
+ this.autoriteAppelantId=(Long)row.get(ASB.ALIAS_AUTORITE_ID)
}
InfoPourAffichageHeure getInfoPourAffichageHeure() {
return formatDate.parse(date)
}
- private static final CodeComparator comparateurLogique = new CodeComparator()
+ private static final CodeComparator COMPARATEUR_LOGIQUE = new CodeComparator()
private List<StructureEnseignement> getAllStructuresForEnseignantOrEtabCourant(Map params, Etablissement etablissement) {
List<StructureEnseignement> structures
}
// Trie logique
- structures.sort {a, b -> comparateurLogique.compare(a.code, b.code)}
+ structures.sort {a, b -> COMPARATEUR_LOGIQUE.compare(a.code, b.code)}
return structures
}
Map hqlParams = [etablissementId: etablissement.id]
String hql = FIND_INCIDENTS
- Boolean estSeulementEnseig = droitsService.hasOnlyPerimetreEnseignement(
- securiteSession
- )
+ Boolean estSeulementEnseig = droitsService.hasOnlyPerimetreEnseignement(securiteSession)
if (estSeulementEnseig) {
List<Enseignement> enseignements =
hqlParams.elevesEnseignant = elevesEnseignant?.collect { it.autorite }
}
-
if (criteres.dateDebut != null) {
hql += ' and incident.date >= :dateDebut'
hqlParams['dateDebut'] = criteres.dateDebut
hqlParams['typesIncident'] = criteres.typesIncident
}
+ if ((criteres.typesProtagoniste != null) && (criteres.typesProtagoniste.size() > 0)) {
+ hql += ' and protagoniste_incident.type in (:typesProtagoniste) '
+ hqlParams['typesProtagoniste'] = criteres.typesProtagoniste
+ }
+
+ List<Personne> personnes = getAllPersonneAFiltrer(securiteSession, etablissement, criteres)
+
+ if (personnes.size() > 0) {
+ hql += ' and protagoniste_incident.autorite in (:personnes) '
+ hqlParams['personnes'] = personnes.collect { it.autorite }
+ }
+
+ String hqlCount = """
+ select count (distinct incident.id)
+ ${hql.replaceAll(' join fetch ', ' join ')}
+ """
+
+ switch (champOrdre) {
+ case ConsultationIncidentNomColonnes.TYPE_INCIDENT:
+ hql += ' order by typeIncident.libelle ' + (ascendant ? 'asc' : 'desc')
+ break
+ case ConsultationIncidentNomColonnes.LIEU:
+ hql += ' order by lieuIncident.libelle ' + (ascendant ? 'asc' : 'desc')
+ break
+ default:
+ hql += ' order by ' + champOrdre + (ascendant ? ' asc' : ' desc')
+ }
+
+ Map paginationMap = limit ? [max: limit, offset: start] : [:]
+
+ result.incidents = Incident.executeQuery(hql, hqlParams, paginationMap).unique()
+
+ result.nbIncidents = Incident.executeQuery(hqlCount, hqlParams).first()
+
+ return result
+ }
+
+ private List<Personne> getAllPersonneAFiltrer(SecuriteSession securiteSession,
+ Etablissement etablissement,
+ Map criteres) {
+
List<Personne> personnes = []
if ((criteres.personnes != null) && (criteres.personnes.size() > 0)) {
criteres.typesProtagoniste.contains(TypeProtagonisteIncident.CENSEUR)) {
if (((criteres.typesProtagoniste != null) && (criteres.typesProtagoniste.size() > 0)) ||
- ((criteres.profils != null) && (criteres.profils.size() > 0))) {
+ ((criteres.profils != null) && (criteres.profils.size() > 0))) {
Boolean direction = true
Boolean personnelsEducation = true
criteres.classes
))
}
-
- }
-
- if (personnes.size() > 0) {
- hql += ' and protagoniste_incident.autorite in (:personnes) '
- hqlParams['personnes'] = personnes.collect { it.autorite }
- }
-
- if ((criteres.typesProtagoniste != null) && (criteres.typesProtagoniste.size() > 0)) {
- hql += ' and protagoniste_incident.type in (:typesProtagoniste) '
- hqlParams['typesProtagoniste'] = criteres.typesProtagoniste
- }
-
- String hqlCount = """
- select count (distinct incident.id)
- ${hql.replaceAll(' join fetch ', ' join ')}
- """
-
- switch (champOrdre) {
- case ConsultationIncidentNomColonnes.TYPE_INCIDENT:
- hql += ' order by typeIncident.libelle ' + (ascendant ? 'asc' : 'desc')
- break
- case ConsultationIncidentNomColonnes.LIEU:
- hql += ' order by lieuIncident.libelle ' + (ascendant ? 'asc' : 'desc')
- break
- default:
- hql += ' order by ' + champOrdre + (ascendant ? ' asc' : ' desc')
}
- Map paginationMap = limit ? [max: limit, offset: start] : [:]
-
- result.incidents = Incident.executeQuery(
- hql,
- hqlParams,
- paginationMap
- ).unique()
-
- result.nbIncidents = Incident.executeQuery(hqlCount, hqlParams).first()
-
- return result
+ return personnes
}
/**
hqlParams.elevesEnseignant = elevesEnseignant
}
- if (criteres.dateDebut != null) {
- hqlFromPunition += ' and punition.date >= :dateDebut'
- hqlParams['dateDebut'] = criteres.dateDebut
- }
-
- if (criteres.dateFin != null) {
- hqlFromPunition += ' and punition.date <= :dateFin'
- hqlParams['dateFin'] = criteres.dateFin
- }
-
if ((criteres.classes != null) && (criteres.classes.size() > 0)) {
List<Personne> elevesClasse = scolariteService.findAllPersonneEleveForStructure(
securiteSession,
}
}
- if ((criteres.eleves != null) && (criteres.eleves.size() > 0)) {
- hqlFromPunition += ' and eleve in (:eleves)'
- hqlParams['eleves'] = criteres.eleves
- }
-
- if ((criteres.responsables != null) && (criteres.responsables.size() > 0)) {
- hqlFromPunition += ' and punition.censeur in (:responsables)'
- hqlParams['responsables'] = criteres.responsables
- }
-
- if ((criteres.typesPunition != null) && (criteres.typesPunition.size() > 0)) {
- hqlFromPunition += ' and punition.typePunition in (:typesPunition)'
- hqlParams['typesPunition'] = criteres.typesPunition
- }
-
- if (criteres.effectue != null) {
- hqlFromPunition += ' and punition.effectue = :effectue'
- hqlParams['effectue'] = criteres.effectue
- }
+ hqlFromPunition = ajouteFiltresParCriteresSimples(hqlFromPunition, hqlParams, criteres)
String hqlCount = hqlFromPunition
.replace(
return result
}
+ private String ajouteFiltresParCriteresSimples(String hqlFromPunition,
+ Map hqlParams,
+ Map criteres) {
+ if (criteres.dateDebut != null) {
+ hqlFromPunition += ' and punition.date >= :dateDebut'
+ hqlParams['dateDebut'] = criteres.dateDebut
+ }
+
+ if (criteres.dateFin != null) {
+ hqlFromPunition += ' and punition.date <= :dateFin'
+ hqlParams['dateFin'] = criteres.dateFin
+ }
+
+ if ((criteres.eleves != null) && (criteres.eleves.size() > 0)) {
+ hqlFromPunition += ' and eleve in (:eleves)'
+ hqlParams['eleves'] = criteres.eleves
+ }
+
+ if ((criteres.responsables != null) && (criteres.responsables.size() > 0)) {
+ hqlFromPunition += ' and punition.censeur in (:responsables)'
+ hqlParams['responsables'] = criteres.responsables
+ }
+
+ if ((criteres.typesPunition != null) && (criteres.typesPunition.size() > 0)) {
+ hqlFromPunition += ' and punition.typePunition in (:typesPunition)'
+ hqlParams['typesPunition'] = criteres.typesPunition
+ }
+
+ if (criteres.effectue != null) {
+ hqlFromPunition += ' and punition.effectue = :effectue'
+ hqlParams['effectue'] = criteres.effectue
+ }
+ hqlFromPunition
+ }
+
private String getNomCompletChampOrdre(String champOrdre) {
String champ
switch (champOrdre) {
Boolean ascendant,
Integer start,
Integer limit,
- Map criteres = [:]
- ) {
-
- boolean personneIsEnseignant = droitsService.hasOnlyPerimetreEnseignement(
- securiteSession
- )
+ Map criteres = [:]) {
List sanctionsInfo = []
Map resultats = [
sanctionsInfo: sanctionsInfo
]
- String hqlFromSanction = findAllSanctionsHqlFromSanctions()
- Map hqlParams = [
- etablissementId: etablissement.id,
- typeClasse: StructureEnseignement.TYPE_CLASSE
- ]
-
- if (personneIsEnseignant) {
- List<Personne> elevesEnseignant = eleveRecupService.findAllEleveByEnseignantAndEtablissement(
- securiteSession,
- personne,
- etablissement
- )
+ Map hqlParams = [
+ etablissementId: etablissement.id,
+ typeClasse: StructureEnseignement.TYPE_CLASSE
+ ]
- if (elevesEnseignant.size() == 0) {
- return resultats
- }
+ String hqlFromSanction = findAllSanctionsHqlFromSanctions()
- hqlFromSanction += ' and eleve in (:elevesEnseignant)'
- hqlParams['elevesEnseignant'] = elevesEnseignant
- }
+ hqlFromSanction = ajouteFiltresParCriteresSimples(hqlFromSanction, hqlParams, criteres)
- if (criteres.dateDebut != null) {
- hqlFromSanction += ' and sanction.date >= :dateDebut'
- hqlParams['dateDebut'] = criteres.dateDebut
- }
+ Boolean personneIsEnseignant = droitsService.hasOnlyPerimetreEnseignement(securiteSession)
- if (criteres.dateFin != null) {
- hqlFromSanction += ' and sanction.date <= :dateFin'
- hqlParams['dateFin'] = criteres.dateFin
+ if (personneIsEnseignant) {
+ List<Personne> elevesEnseignant = eleveRecupService.findAllEleveByEnseignantAndEtablissement(
+ securiteSession,
+ personne,
+ etablissement
+ )
+
+ if (elevesEnseignant.size() == 0) {
+ return resultats
}
- if ((criteres.classes != null) && (criteres.classes.size() > 0)) {
- List<Personne> elevesClasse = scolariteService.findAllPersonneEleveForStructure(
- securiteSession,
- criteres.classes.collect {it.id}
- )
+ hqlFromSanction += ' and eleve in (:elevesEnseignant)'
+ hqlParams['elevesEnseignant'] = elevesEnseignant
+ }
- if (elevesClasse.size() > 0) {
- hqlFromSanction += ' and eleve in (:elevesClasse)'
- hqlParams['elevesClasse'] = elevesClasse
- }
- }
+ if ((criteres.classes != null) && (criteres.classes.size() > 0)) {
+ List<Personne> elevesClasse = scolariteService.findAllPersonneEleveForStructure(
+ securiteSession,
+ criteres.classes.collect {it.id}
+ )
- if ((criteres.eleves != null) && (criteres.eleves.size() > 0)) {
- hqlFromSanction += ' and eleve in (:eleves)'
- hqlParams['eleves'] = criteres.eleves
+ if (elevesClasse.size() > 0) {
+ hqlFromSanction += ' and eleve in (:elevesClasse)'
+ hqlParams['elevesClasse'] = elevesClasse
}
+ }
- if ((criteres.responsables != null) && (criteres.responsables.size() > 0)) {
- hqlFromSanction += ' and sanction.censeur in (:responsables)'
- hqlParams['responsables'] = criteres.responsables
- }
+ String hqlCount = hqlFromSanction
+ .replace(
+ 'select sanction, pps.proprietesScolarite.structureEnseignement',
+ 'select count (distinct sanction.id)'
+ )
+ .replaceAll(' join fetch ', ' join ')
- if ((criteres.typesSanction != null) && (criteres.typesSanction.size() > 0)) {
- hqlFromSanction += ' and sanction.typeSanction in (:typesSanction)'
- hqlParams['typesSanction'] = criteres.typesSanction
- }
+ String ordre = ascendant ? ' asc' : ' desc'
+ String champ = getNomCompletChampOrdre(champOrdre)
+ hqlFromSanction += ' order by ' + champ + ordre
- if (criteres.effectue != null) {
- hqlFromSanction += ' and sanction.effectue = :effectue'
- hqlParams['effectue'] = criteres.effectue
- }
+ Map paginationMap = limit ? [max: limit, offset: start] : [:]
- String hqlCount = hqlFromSanction
- .replace(
- 'select sanction, pps.proprietesScolarite.structureEnseignement',
- 'select count (distinct sanction.id)'
- )
- .replaceAll(' join fetch ', ' join ')
+ resultats['sanctionsInfo'] = Sanction.executeQuery(
+ hqlFromSanction,
+ hqlParams,
+ paginationMap
+ )
- String ordre = ascendant ? ' asc' : ' desc'
- String champ = getNomCompletChampOrdre(champOrdre)
- hqlFromSanction += ' order by ' + champ + ordre
+ resultats['nbsanctionsInfo'] =
+ Sanction.executeQuery(hqlCount, hqlParams).first()
- Map paginationMap = limit ? [max: limit, offset: start] : [:]
+ return resultats
+ }
- resultats['sanctionsInfo'] = Sanction.executeQuery(
- hqlFromSanction,
- hqlParams,
- paginationMap
- )
+ private String ajouteFiltresParCriteresSimples(String hqlFromSanction,
+ LinkedHashMap<String, Serializable> hqlParams,
+ Map criteres) {
+ if (criteres.dateDebut != null) {
+ hqlFromSanction += ' and sanction.date >= :dateDebut'
+ hqlParams['dateDebut'] = criteres.dateDebut
+ }
- resultats['nbsanctionsInfo'] =
- Sanction.executeQuery(hqlCount, hqlParams).first()
+ if (criteres.dateFin != null) {
+ hqlFromSanction += ' and sanction.date <= :dateFin'
+ hqlParams['dateFin'] = criteres.dateFin
+ }
- return resultats
+ if ((criteres.eleves != null) && (criteres.eleves.size() > 0)) {
+ hqlFromSanction += ' and eleve in (:eleves)'
+ hqlParams['eleves'] = criteres.eleves
+ }
+
+ if ((criteres.responsables != null) && (criteres.responsables.size() > 0)) {
+ hqlFromSanction += ' and sanction.censeur in (:responsables)'
+ hqlParams['responsables'] = criteres.responsables
+ }
+
+ if ((criteres.typesSanction != null) && (criteres.typesSanction.size() > 0)) {
+ hqlFromSanction += ' and sanction.typeSanction in (:typesSanction)'
+ hqlParams['typesSanction'] = criteres.typesSanction
+ }
+
+ if (criteres.effectue != null) {
+ hqlFromSanction += ' and sanction.effectue = :effectue'
+ hqlParams['effectue'] = criteres.effectue
+ }
+ hqlFromSanction
}
Range<Date> dateRange = sanction.debutAbsence..sanction.finAbsence
dateRange.eachWithIndex {
Date dateAbsence, int index ->
- lstAppelLigneAbsenceJournee += AppelLigne.withCriteria {
- eq('autorite', sanction.eleve.autorite)
- if (index == 0) { //premier jour
- ge('heureDebut', sanction.debutAbsence)
- }
- if (index == dateRange.size()-1) { //dernier jour
- le('heureFin', sanction.finAbsence)
- }
- 'absenceJournee' {
- eq('date', dateAbsence)
- }
+ lstAppelLigneAbsenceJournee += AppelLigne.withCriteria {
+ eq('autorite', sanction.eleve.autorite)
+ if (index == 0) { //premier jour
+ ge('heureDebut', sanction.debutAbsence)
+ }
+ if (index == dateRange.size()-1) { //dernier jour
+ le('heureFin', sanction.finAbsence)
}
+ 'absenceJournee' {
+ eq('date', dateAbsence)
+ }
+ }
}
List<Long> appelLigneIds = []
* Donnees pour les tests d'integration specifiques a Absence
* @author sdim
*/
+@SuppressWarnings(['ClassSize', 'MethodCount'])
class InitDonneesCommunesTestAbsenceService extends LocalInitDonneesCommunesTestService {
TempsAgendaService tempsAgendaService