import org.lilie.services.eliot.securite.perimetre.PerimetreClasseEnseignantPrincipal
import org.lilie.services.eliot.securite.perimetre.PerimetreEnseignement
import org.lilie.services.eliot.scolarite.Enseignement
-import org.lilie.services.eliot.constantes.ConstFonct
+import org.lilie.services.eliot.annuaire.TypeStructureEnum
/**
* @author jbui
PreferencesEtablissementAbsencesService preferencesEtablissementAbsencesService
EnseignantAnnuaireService enseignantAnnuaireService
+ static final String HQL_STRUCT_ENS_TYPEE_FROM_ENSEIGNEMENT = """
+ select se
+ from Enseignement e
+ join e.service s
+ join s.structureEnseignement se
+ where e.id in (:enseignementIds)
+ and se.type = :typeStructure
+ """
+
+ static final String HQL_STRUCT_ENS_FROM_ENSEIGNEMENT = """
+ select se
+ from Enseignement e
+ join e.service s
+ join s.structureEnseignement se
+ where e.id in (:enseignementIds)
+ """
+
// todo remplacer son utilisation par la notion du périmètre mais dans l'utiliation de
/**
* @return true si la personne est uniquement enseignant ou documentaliste
List<StructureEnseignement> findAllStructureEnseignementAccessibles(SecuriteSession securiteSession,
- Etablissement etablissement) {
+ Etablissement etablissement,
+ TypeStructureEnum typeStructure = null) {
if (hasPerimetre(securiteSession, PerimetreEtablissement)) {
return localStructureEnseignementService.findAllStructureEnseignementByEtablissement(
- etablissement
+ etablissement,
+ typeStructure
)
}
List<Long> enseignementIds = getAllObjetIdsDuPerimetre(securiteSession, PerimetreEnseignement)
- List<StructureEnseignement> allStructureEnseignement = (List<StructureEnseignement>) Enseignement.withCriteria {
- 'in'('id', enseignementIds)
- createAlias(ConstFonct.SERVICE, 'service')
- projections {
- property('service.structureEnseignement')
- }
+ String hql
+ Map params = [:]
+ if(typeStructure) {
+ hql = HQL_STRUCT_ENS_TYPEE_FROM_ENSEIGNEMENT
+ params = [enseignementIds:enseignementIds, typeStructure:typeStructure]
+ } else {
+ hql = HQL_STRUCT_ENS_FROM_ENSEIGNEMENT
+ params = [enseignementIds:enseignementIds]
}
- return allStructureEnseignement
+ return Enseignement.executeQuery(hql,params)
}