return Enseignement.executeQuery(hql, [etab: etab])
}
+ /**
+ * L'enseignant enseigne t'il pour la structure ?
+ * @return vrai si l'enseignant enseigne pour la structure
+ */
+ private Boolean enseignantEnseigneStructure(
+ StructureEnseignement structureEnseignement,
+ Autorite enseignant) {
+
+ List<Enseignement> enseignements
+
+ String hql = """SELECT DISTINCT enseignement
+ FROM Enseignement AS enseignement
+ JOIN enseignement.service AS service
+ JOIN enseignement.enseignant AS enseignant
+ JOIN service.structureEnseignement AS structure
+ WHERE enseignant =:enseignant
+ AND structure = :structure"""
+
+ enseignements = Enseignement.executeQuery(hql, [
+ structure: structureEnseignement,
+ enseignant: enseignant
+ ])
+ return (enseignements?.size() != 0)
+ }
+
}
\ No newline at end of file
import org.lilie.services.eliot.export.DonneesPourExportCSV
import org.lilie.services.eliot.absences.export.AppelsOubliesPreparationExportCSVService
-import org.lilie.services.eliot.securite.Autorite
+import org.lilie.services.eliot.securite.impl.Autorite
/**
* Contrôleur de consultation des appels oubliés
private final static VALEUR_TOUS_ENSEIGNANTS = 'Enseignants_Tous'
private final static Long VALEUR_TOUS_STRUCTURES = (Long) -1
- private final static SimpleDateFormat sdf_HH_mm = new SimpleDateFormat("HH:mm");
+ private final static SimpleDateFormat SDF_HH_MM = new SimpleDateFormat("HH:mm")
def index = {
verifieDroitFonctionnalite(AbsencesFonctionnalite.ABS_CONSULT_DIR)
List<PlageHoraire> plagesHorairesOuvertes = plages.findAll{plageHoraireService.isPlageHoraireOuverte(date,
jourFeries, it, calendrier)}
- List<Date> heuresDebut = plagesHorairesOuvertes.collect{sdf_HH_mm.format(new Date(it.debut.getTime()))}
- List<Date> heuresFin = plagesHorairesOuvertes.collect{sdf_HH_mm.format(new Date(it.fin.getTime()))}
+ List<Date> heuresDebut = plagesHorairesOuvertes.collect{SDF_HH_MM.format(new Date(it.debut.getTime()))}
+ List<Date> heuresFin = plagesHorairesOuvertes.collect{SDF_HH_MM.format(new Date(it.fin.getTime()))}
Map<Long, String> heuresDebutMap = (Map<Long, String>) [:]
Map<Long, String> heuresFinMap = (Map<Long, String>) [:]
Long id = 1
PlageHoraire plageHoraireActuelle = plageHoraireService.getPlageHoraireActuelle(plagesHorairesOuvertes)
Date heureDebutDefaut = plageHoraireActuelle?.debut
Date heureFinDefaut = plageHoraireActuelle?.fin
- String heureDebutDefautStr = heureDebutDefaut ? sdf_HH_mm.format(heureDebutDefaut).replaceFirst(":","h") : ""
- String heureFinDefautStr = heureFinDefaut ? sdf_HH_mm.format(heureFinDefaut).replaceFirst(":","h") : ""
+ String heureDebutDefautStr = heureDebutDefaut ? SDF_HH_MM.format(heureDebutDefaut).replaceFirst(":","h") : ""
+ String heureFinDefautStr = heureFinDefaut ? SDF_HH_MM.format(heureFinDefaut).replaceFirst(":","h") : ""
modele.heureDebutDefaut = heureDebutDefautStr
modele.heureFinDefaut = heureFinDefautStr
render resultats as JSON
}
+ // ne pas supprimer (sert si on réimplémente les combo horaires)
private String verifieCoherenceHorairesSelectionnes(AppelsOubliesCommand command) {
String msg = ''
String parsedHeureDebut = command.parsedHeureDebut
Time heureDebutProchaineAbsence =
prochaineAbsence ? formatToTime(prochaineAbsence.heure.heure1) :
null
- if (!absenceAAjouter) {
- absenceAAjouter = absenceEnCours
- heureFinAbsenceAAjouter = heureFinAbsenceEnCours
- if (nomAppelantAbsenceEnCours != ""){
- appelantsAAjouter.add(nomAppelantAbsenceEnCours)
- }
- if (profilAppelantAbsenceEnCours){
- profilsAAjouter.add(profilAppelantAbsenceEnCours)
- }
- // s'il n'y a pas d'autres absences dans le groupe ou s'il y en a
- // une autre mais que son horaire ne suit pas celui de l'absence
- // en cours,
- // on stocke l'absence en cours dans l'objet result.lignes
- if (!prochaineAbsence || (prochaineAbsence &&
- heureDebutProchaineAbsence != heureFinAbsenceAAjouter)) {
- validerAbsence(appelantsAAjouter, absenceAAjouter, profilsAAjouter, result)
- absenceAAjouter = null
- appelantsAAjouter = []
- profilsAAjouter = []
- }
- } else {
+ if (absenceAAjouter) {
if (heureDebutAbsenceEnCours == heureFinAbsenceAAjouter) {
heureFinAbsenceAAjouter = heureFinAbsenceEnCours
absenceAAjouter.heure.heure2 = heureFinAbsenceAAjouter
appelantsAAjouter = []
profilsAAjouter = []
}
+ } else {
+ absenceAAjouter = absenceEnCours
+ heureFinAbsenceAAjouter = heureFinAbsenceEnCours
+ if (nomAppelantAbsenceEnCours != ""){
+ appelantsAAjouter.add(nomAppelantAbsenceEnCours)
+ }
+ if (profilAppelantAbsenceEnCours){
+ profilsAAjouter.add(profilAppelantAbsenceEnCours)
+ }
+ // s'il n'y a pas d'autres absences dans le groupe ou s'il y en a
+ // une autre mais que son horaire ne suit pas celui de l'absence
+ // en cours,
+ // on stocke l'absence en cours dans l'objet result.lignes
+ if (!prochaineAbsence || (prochaineAbsence &&
+ heureDebutProchaineAbsence != heureFinAbsenceAAjouter)) {
+ validerAbsence(appelantsAAjouter, absenceAAjouter, profilsAAjouter, result)
+ absenceAAjouter = null
+ appelantsAAjouter = []
+ profilsAAjouter = []
+ }
}
}
} // si le groupe est composée d'une seule absence ou de retards/départs
import org.hibernate.SessionFactory
import org.hibernate.SQLQuery
import org.lilie.services.eliot.absences.saisie.absencejournee.AbsenceInfo
+import org.lilie.services.eliot.scolarite.enseignement.EnseignementService
/**
* @author jbui
EleveAnnuaireService eleveAnnuaireService
LocalAutoriteService localAutoriteService
EmploiDuTempsService emploiDuTempsService
+ EnseignementService enseignementService
SessionFactory sessionFactory
static transactional = true
Autorite enseignant = Autorite.get(appelACreer.enseignantId)
if ((!enseignant) ||
- enseignantEnseigneStructure(structureEnseignement, enseignant)
+ enseignementService.enseignantEnseigneStructure(structureEnseignement, enseignant)
) {
FonctionEnum typeRoleCreation = droitsService.getTypeRolePourAccesAppel(
securiteSession,
return appel
}
- /**
- * L'enseignant enseigne t'il pour la structure ?
- * @return vrai si l'enseignant enseigne pour la structure
- */
- private Boolean enseignantEnseigneStructure(
- StructureEnseignement structureEnseignement,
- Autorite enseignant) {
-
- List<Enseignement> enseignements
-
- enseignements = Enseignement.executeQuery(AppelServiceHql.HQL_GET_ENSEIGNEMENT, [
- structure: structureEnseignement,
- enseignant: enseignant
- ])
- return (enseignements?.size() != 0)
- }
-
/**
* Cree un appel temporaire.
* Si l'evenement auqel lier l'apel n'existe pas, on le cree.
private Evenement creeEvenementCours(StructureEnseignement structureEnseignement,
String libelleEvt,
Date dateDebut,
- Date dateFin
- ) {
+ Date dateFin) {
Agenda agendaStructure = tempsAgendaService.
getAgendaEmploiDuTempsForStructure(
structureEnseignement,
return appels
}
- List<AppelAvecLignesInfo> transformeAppelsAInfos(List<Appel> listeAppels) {
- return listeAppels.collect { getAppelAvecLignesInfoFromAppel(it) }
- }
-
/**
* Retourne la liste des absences des élèves de la classe, saisies sur des
* appels différents des appels passés en param, et pour la date donnée
Date date,
List<Long> appelIds) {
- String hql = """
- select al, pers
- from AppelLigne al
- inner join fetch al.appel appel,
- Personne pers,
- PersonneProprietesScolarite pps
- where pers.autorite = al.autorite
- and pps.personne = pers
- and pps.estActive = true
- and pps.proprietesScolarite.structureEnseignement = :structure
- and pps.proprietesScolarite.fonction = :fonction
- and appel.dateHeureDebut >= :debut
- and appel.dateHeureFin <= :fin
- """
+ String hql = AppelServiceHql.HQL_GET_ABSENCES_ELEVES
Date debut = DateUtil.getDebutJour(
DateUtil.getCalendarForDate(date)
]
if (appelIds) {
- hql += " and appel.id not in (:appelIds)"
+ hql += " AND appel.id NOT IN (:appelIds)"
params.put('appelIds', appelIds)
}
and plage in (:listePlages)
"""
- public static final String HQL_GET_ENSEIGNEMENT =
- """select distinct enseignement from Enseignement as enseignement
- join enseignement.service as service
- join enseignement.enseignant as enseignant
- join service.structureEnseignement as structure
- where enseignant =:enseignant
- and structure = :structure"""
-
public static final String HQL_GET_APPEL_LIGNE_HORS_APPEL = """
select appelLigne from AppelLigne as appelLigne
where appelLigne.appel is null
)
ORDER BY al.autorite_id
"""
+
+ public static final String HQL_GET_ABSENCES_ELEVES = """
+ SELECT al, pers
+ FROM AppelLigne al
+ INNER JOIN FETCH al.appel appel,
+ Personne pers,
+ PersonneProprietesScolarite pps
+ WHERE pers.autorite = al.autorite
+ AND pps.personne = pers
+ AND pps.estActive = true
+ AND pps.proprietesScolarite.structureEnseignement = :structure
+ AND pps.proprietesScolarite.fonction = :fonction
+ AND appel.dateHeureDebut >= :debut
+ AND appel.dateHeureFin <= :fin
+"""
}
* <http://www.cecill.info/licences.fr.html>.
*/
-
-
-
-
-
-
package org.lilie.services.eliot.agenda
import org.lilie.services.eliot.temps.Evenement