public static final Long LOT_SUPPRESSION = 4000
- private static final String HQL_PROCHAIN_EVENT_POSTERIEUR_DATE = """
- select evenement
- from RelAgendaEvenement rel
- where rel.agenda.id = :agendaEnseignantId
- and rel.evenement.agendaMaitre.id = :agendaStructureId
- and rel.evenement.dateHeureDebut > :jour
- and rel.evenement.enseignement = :enseignement
- order by rel.evenement.dateHeureDebut
- """
-
- // pareil que HQL_PROCHAIN_EVENT_POSTERIEUR_DATE avec >= :jour
- private static final String HQL_PROCHAIN_EVENT = """
- select evenement
- from RelAgendaEvenement rel
- where rel.agenda.id = :agendaEnseignantId
- and rel.evenement.agendaMaitre.id = :agendaStructureId
- and rel.evenement.dateHeureDebut >= :jour
- and rel.evenement.enseignement = :enseignement
- order by rel.evenement.dateHeureDebut
- """
-
/**
* Crée un événement simple dans un agenda en mode Système
* A utiliser que par l'import des emplois du temps
* @throws EliotTempsException
*
*/
- Evenement creerEvenementSimpleByEliotAutorite(Agenda agendaMaitre,
- Autorite eliotAutorite,
- TypeEvenement type,
- String objet,
- Date dateHeureDebut,
- Date dateHeureFin,
- Enseignement enseignement = null,
- Map options = [:]
+ public Evenement creerEvenementSimpleByEliotAutorite(Agenda agendaMaitre,
+ Autorite eliotAutorite,
+ TypeEvenement type,
+ String objet,
+ Date dateHeureDebut,
+ Date dateHeureFin,
+ Enseignement enseignement = null,
+ Map options = [:]
) throws EliotTempsException {
if (eliotAutorite.type == Autorite.TYPE_ELIOT) {
if (log.infoEnabled) {log.info "Création d'un événement : $objet, pour $agendaMaitre, par l'autorité eliot: $eliotAutorite.idExterne"}
* la création de l'événement
*
*/
- Evenement creerEvenementSimple(Agenda agendaMaitre,
- String objet,
- Date dateHeureDebut,
- Date dateHeureFin,
- SecuriteSession securiteSession,
- Map options = [:]
+ public Evenement creerEvenementSimple(Agenda agendaMaitre,
+ String objet,
+ Date dateHeureDebut,
+ Date dateHeureFin,
+ SecuriteSession securiteSession,
+ Map options = [:]
) throws EliotTempsException {
//Vérification des droits
if (securiteSession) {
)
}
- /**
- * Crée un événement simple dans un agenda
- * Ne vérifie pas les droits de modification de l'agenda
- * @param agendaMaitre agenda dans lequel l'événement a été crée
- * @param objet : sujet de l'événement
- * @param dateHeureDebut : date et heure de début
- * @param dateHeureFin : date et heure de fin
- * @param autorite : autorité de l'événement
- * @param options : objet Map qui contient
- * - lieu: lieu de l'événement
- * - description: description de l'événement
- * - rappel (par défaut à non)
- * - confidentialite (par défaut à Par défaut)
- * - disponibilite (par défaut à disponible)
- * - uid: identifiant de l'événement
- * @return evenement: l'événement crée
- * @throws EliotTempsException: en cas d'erreur dans la créeation
- * de l'événement
- *
- */
- private Evenement interneCreerEvenementSimple(Agenda agendaMaitre,
- String objet,
- Date dateHeureDebut,
- Date dateHeureFin,
- Autorite autorite,
- TypeEvenement type,
- Map options = [:],
- Enseignement enseignement = null
- ) throws EliotTempsException {
-
- Map parametresEvenement = [:]
-
- if (options.rappel) {parametresEvenement += [rappel: options.rappel]}
-
- if (options.confidentialite) {
- parametresEvenement += [confidentialite: options.confidentialite]
- }
- if (options.disponibilite) {
- parametresEvenement += [disponibilite: options.disponibilite]
- }
- if (options.uid) {
- parametresEvenement += [uid: options.uid]
- }
- if (options.touteLaJournee) {
- parametresEvenement += [touteLaJournee: options.touteLaJournee]
- }
-
- if (enseignement) {
- parametresEvenement += [enseignement: enseignement]
- }
-
- parametresEvenement += [
- auteur: autorite,
- objet: objet,
- type: type,
- lieu: options.lieu,
- description: options.description,
- dateHeureDebut: dateHeureDebut,
- dateHeureFin: dateHeureFin,
- agendaMaitre: agendaMaitre,
- frequence: Evenement.EVENEMENT_PONCTUEL
- ]
-
- Evenement evenement = new Evenement(parametresEvenement)
- if (evenement.hasErrors()) {
- throw EvenementCreationException.exception(evenement)
- }
- else {
- if (evenement.save(flush: true)) {
- RelAgendaEvenement relAgendaEvenement = new RelAgendaEvenement(
- evenement: evenement,
- agenda: agendaMaitre
- )
- evenement.addToRelAgendasEvenements(relAgendaEvenement)
- evenement.save(flush: true)
- return evenement
- }
- else {
- throw EvenementCreationException.exception(evenement)
- }
- }
- }
-
- /**
- * Ajoute un événement simple dans un agenda
- * Vérife les droits, si la session a le droit de modifier l'agenda,
- * il a le droit d'ajouter n'importe quel événement
- * @param evenement : événement à ajouter
- * @param agenda : agenda dans lequel en ajoute l'événement
- * @param securiteSession : la session en court
- * @throws EliotTempsException : si l'événement est déjà attaché
- * à l'agenda
- * @throws AutorisationException: si l'utilisateur
- * n'a pas le droit de modifier l'agenda
- *
- */
- void ajouterEvenementToAgenda(Evenement evenement,
- Agenda agenda,
- SecuriteSession securiteSession
- ) throws EliotTempsException {
-
- //Vérification des droits
- if (securiteSession) {
- tempsSecuriteService.verifieAutorisationModification(agenda,
- securiteSession
- )
- }
-
- if (log.infoEnabled) {log.info "Ajout de l'événement: $evenement.objet à l'agenda: $agenda.nom"}
- if (isEvenementAttacheAgenda(evenement, agenda)) {
- throw EvenementAttacheException.exception(evenement, agenda)
- }
- else {
- RelAgendaEvenement relAgendaEvenement = new RelAgendaEvenement(
- evenement: evenement,
- agenda: agenda)
- relAgendaEvenement.save()
- evenement.addToRelAgendasEvenements(relAgendaEvenement)
- }
- }
-
/**
* Ajoute un événement simple dans un agenda en mode autorite système
* A utiliser seulement par l'autorite Temps
/**
* Retourne la liste des évènements à consolider avec les évènements de l'import UDT.
*/
- List<Evenement> findAllEvenementAConsoliderAvecUdt(List<Long> structureIds,
- Date debut,
- Date fin) {
+ public List<Evenement> findAllEvenementAConsoliderAvecUdt(List<Long> structureIds,
+ Date debut,
+ Date fin) {
if (structureIds.size() == 0) {
return []
securiteSession
)
}
- if (log.infoEnabled) {log.info "Modification de l'événement : $evenementAmodifier.objet"}
+
+ if (log.infoEnabled) {
+ log.info "Modification de l'événement : $evenementAmodifier.objet"
+ }
+
// dateTime de début
evenementAmodifier.dateHeureDebut = dateHeureDebut
// dateTime de la fin
}
}
- /**
- * Chercher par un mot clé dans les propriétés
- * suivantes des événements de la agenda:
- * - Objet
- * - lieu
- * - description
- * Si le mot clé une chaîne vide,
- * tous les événements de l'agenda vont être listés
- * Vérifie les droits de consultation
- * @param motCle : différents de null et de chaîne vide
- * @return evenements liste des événements trouvés
- */
- Collection<Evenement> chercherEvenementsFromAgenda(Agenda agenda,
- String motCle,
- SecuriteSession securiteSession) {
- Collection<Evenement> evenements = []
- // fsil : revue de code
- // inutilisable en l'état : filtre en base obligatoire
-/* if (securiteSession) {
- tempsSecuriteService.verifieAutorisationConsultationContenu(agenda,
- securiteSession
- )
- }
- if (!motCle) {
-
- } else {
- RelAgendaEvenement rels = RelAgendaEvenement.withCriteria {
- eq("agenda", agenda)
- evenement {
-
- }
- }
- }
- */
-
- /*List<Evenement> evenementsAgenda = getEvenementsFromAgenda(agenda)
- // si en précise pas un mot clé pour la recherche, en affiche tous les événements
- if (motCle == "") {
- evenements = evenementsAgenda
- }
- else {
- evenementsAgenda.each {Evenement event ->
- if (event.objet?.contains(motCle) ||
- event.description?.contains(motCle) ||
- event.lieu?.contains(motCle)) {
- evenements.add(event)
- }
- }
- }
- //On trie les événements par date de début
- evenements?.sort {
- Evenement event1, Evenement event2 ->
- event1.dateHeureDebut.compareTo(event2.dateHeureDebut)
- }*/
- return evenements
- }
-
/**
* Récupère les événements simples des agendas
* en paramètre sous la forme de EvenementInformations
}
}
- private List returnIdAgendaFromMap(Map mapAgendasCouleurs) {
- List listeAgendaIdentifiant = []
- mapAgendasCouleurs.each {key, value ->
- listeAgendaIdentifiant.add(key)
- }
- return listeAgendaIdentifiant
- }
-
- /**
- * Récupère les droits de l'acteur sur le cahier de textes
- * - si l'événement est lié à un enseignement
- * - si l'enseignament est attaché à un cahier de texte
- * @return droitsCdt les droits de l'utilisateur sur le cahier de texte
- */
- private int getDroitsCdt(Evenement evenement,
- SecuriteSession securiteSession) {
- int droitsCdt = 0
- if (evenement.enseignement) {
- CahierDeTextes cdt = cahierDeTextesService.
- findCahierDeTextesByEnseignantAndService(
- (Autorite) securiteSession.defaultAutorite,
- evenement.enseignement?.service
- )
- if (cdt) {
- AccessManager accessManager = new AccessManager(cdt.item,
- securiteSession)
- if (accessManager.peutModifierLeContenu()) {
- droitsCdt = 2
- }
- else if (accessManager.peutConsulterLeContenu()) {
- droitsCdt = 1
- }
- }
- }
- return droitsCdt
- }
-
/**
* Récupère la liste des événements qui correspondent aux critères de recherche
* A utiliser avec temps autorité, ne vérifie aucun droits
return findAllEvenement(agendaId, null, dateHeureDebut, dateHeureFin, enseignementOnly)
}
+ /**
+ * Récupère les agendas consultables par la session et
+ * qui sont attachés à un événement
+ * @param identifiant : identifiant de l'événement
+ * @param securiteSession : la session courante
+ * @return agendasConsultablesAttachesToEvent : les agendas consultables par la session
+ * auquels l'événement est attaché
+ */
+ @SuppressWarnings('CatchException')
+ public Collection<Agenda> getListeConsultablesAgendasAttachesToEvenement(Long identifiant,
+ SecuriteSession securiteSession) {
+ List<Agenda> agendasConsultablesAttachesToEvent = []
+ List<Agenda> agendasAttachesToEvent = getListeAgendasAttachesToEvenement(
+ identifiant
+ )
+ agendasAttachesToEvent.each {Agenda agenda ->
+ try {
+ tempsSecuriteService.verifieAutorisationConsultationContenu(agenda,
+ securiteSession
+ )
+ agendasConsultablesAttachesToEvent.add(agenda)
+ } catch (Exception e) {
+ log.error("Pas le droit de consulter l'agenda", e)
+ }
+ }
+ return agendasConsultablesAttachesToEvent
+ }
+
+ /**
+ * Retourne les évènements d'un agenda
+ */
+ public List<Evenement> findEvenementsForListEnseignementAndJour(List<Enseignement> enseignements,
+ Date jour) {
+ Calendar debutJour = Calendar.getInstance()
+ debutJour.setTime(jour)
+ Calendar finJour = (Calendar) debutJour.clone()
+ DateUtil.setDebutJour(debutJour)
+ DateUtil.setFinJour(finJour)
+
+ return Evenement.withCriteria {
+ 'in'('enseignement', enseignements)
+ between("dateHeureDebut", debutJour.getTime(), finJour.getTime())
+ order("dateHeureDebut", "asc")
+ }
+ }
+
+ /**
+ * Retourne la liste des agendas auqeul un événement est attaché
+ * Ne vérifie pas les droits
+ * @param identifiant : identifiant de l'événement
+ * @return: la liste des agendas
+ *
+ */
+ private Collection<Agenda> getListeAgendasAttachesToEvenement(Long identifiant) {
+ Evenement evenement = Evenement.get(identifiant)
+ if (evenement) {
+ return evenement.relAgendasEvenements*.agenda
+
+ } else {
+ throw EvenementIntrouvableException.exception(identifiant)
+ }
+ }
+
/**
* Récupère la liste des événements qui correspondent aux critères de recherche
* A utiliser avec temps autorité, ne vérifie aucun droits
* @param enseignementOnly : Si on cherche une liste d'événement correpsondant à un enseignement
*
*/
- Collection<Evenement> findAllEvenement(Long agendaId,
- String objet,
- Date dateHeureDebut,
- Date dateHeureFin,
- Boolean enseignementOnly) {
+ private Collection<Evenement> findAllEvenement(Long agendaId,
+ String objet,
+ Date dateHeureDebut,
+ Date dateHeureFin,
+ Boolean enseignementOnly) {
List<Evenement> evenements = []
List<RelAgendaEvenement> relAgendaEvenements = []
if (agendaId) {
return evenements
}
- /**
- * Retourne la liste des agendas auqeul un événement est attaché
- * Ne vérifie pas les droits
- * @param identifiant : identifiant de l'événement
- * @return: la liste des agendas
- *
- */
- Collection<Agenda> getListeAgendasAttachesToEvenement(Long identifiant) {
- Evenement evenement = Evenement.get(identifiant)
- if (evenement) {
- return evenement.relAgendasEvenements*.agenda
-
- } else {
- throw EvenementIntrouvableException.exception(identifiant)
+ private List returnIdAgendaFromMap(Map mapAgendasCouleurs) {
+ List listeAgendaIdentifiant = []
+ mapAgendasCouleurs.each {key, value ->
+ listeAgendaIdentifiant.add(key)
}
+ return listeAgendaIdentifiant
}
/**
- * Permet de récupérer les événements de l'autorité
- * @param dateDebut : date de début de l'événement
- * @parm autorite : autorité
- * @return evenementsAutorite liste des événements de l'autorité
+ * Récupère les droits de l'acteur sur le cahier de textes
+ * - si l'événement est lié à un enseignement
+ * - si l'enseignament est attaché à un cahier de texte
+ * @return droitsCdt les droits de l'utilisateur sur le cahier de texte
*/
- Collection<Evenement> getListeEvenementsForAutorite(Date dateDebutEvenement, Autorite autorite) {
- List<Evenement> evenementsAutorite = []
- Calendar dateDebut = Calendar.getInstance()
- dateDebut.set(dateDebutEvenement.year + 1900, dateDebutEvenement.month, dateDebutEvenement.day)
- dateDebut.set(Calendar.HOUR_OF_DAY, 01)
- dateDebut.set(Calendar.MINUTE, 00)
- Calendar dateFin = Calendar.getInstance()
- dateFin = (Calendar) dateDebut.clone()
- dateFin.set(Calendar.HOUR_OF_DAY, 23)
- dateFin.set(Calendar.MINUTE, 59)
-
- evenementsAutorite = Evenement.withCriteria {
- and {
- eq("auteur.id", autorite.id)
- or {
- between("dateHeureDebut", dateDebut.getTime(), dateFin.getTime())
- le("dateHeureDebut", dateDebut.getTime())
- le("dateHeureDebut", dateFin.getTime())
+ private int getDroitsCdt(Evenement evenement,
+ SecuriteSession securiteSession) {
+ int droitsCdt = 0
+ if (evenement.enseignement) {
+ CahierDeTextes cdt = cahierDeTextesService.
+ findCahierDeTextesByEnseignantAndService(
+ (Autorite) securiteSession.defaultAutorite,
+ evenement.enseignement?.service
+ )
+ if (cdt) {
+ AccessManager accessManager = new AccessManager(cdt.item,
+ securiteSession)
+ if (accessManager.peutModifierLeContenu()) {
+ droitsCdt = 2
+ }
+ else if (accessManager.peutConsulterLeContenu()) {
+ droitsCdt = 1
}
}
- order "dateHeureDebut"
}
- return evenementsAutorite
+ return droitsCdt
}
/**
- * Récupère les agendas consultables par la session et
- * qui sont attachés à un événement
- * @param identifiant : identifiant de l'événement
- * @param securiteSession : la session courante
- * @return agendasConsultablesAttachesToEvent : les agendas consultables par la session
- * auquels l'événement est attaché
+ * Crée un événement simple dans un agenda
+ * Ne vérifie pas les droits de modification de l'agenda
+ * @param agendaMaitre agenda dans lequel l'événement a été crée
+ * @param objet : sujet de l'événement
+ * @param dateHeureDebut : date et heure de début
+ * @param dateHeureFin : date et heure de fin
+ * @param autorite : autorité de l'événement
+ * @param options : objet Map qui contient
+ * - lieu: lieu de l'événement
+ * - description: description de l'événement
+ * - rappel (par défaut à non)
+ * - confidentialite (par défaut à Par défaut)
+ * - disponibilite (par défaut à disponible)
+ * - uid: identifiant de l'événement
+ * @return evenement: l'événement crée
+ * @throws EliotTempsException: en cas d'erreur dans la créeation
+ * de l'événement
+ *
*/
- @SuppressWarnings('CatchException')
- Collection<Agenda> getListeConsultablesAgendasAttachesToEvenement(Long identifiant,
- SecuriteSession securiteSession) {
- List<Agenda> agendasConsultablesAttachesToEvent = []
- List<Agenda> agendasAttachesToEvent = getListeAgendasAttachesToEvenement(
- identifiant
- )
- agendasAttachesToEvent.each {Agenda agenda ->
- try {
- tempsSecuriteService.verifieAutorisationConsultationContenu(agenda,
- securiteSession
- )
- agendasConsultablesAttachesToEvent.add(agenda)
- } catch (Exception e) {
- log.error("Pas le droit de consulter l'agenda")
- }
+ private Evenement interneCreerEvenementSimple(Agenda agendaMaitre,
+ String objet,
+ Date dateHeureDebut,
+ Date dateHeureFin,
+ Autorite autorite,
+ TypeEvenement type,
+ Map options = [:],
+ Enseignement enseignement = null
+ ) throws EliotTempsException {
+
+ Map parametresEvenement = [:]
+
+ if (options.rappel) {parametresEvenement += [rappel: options.rappel]}
+
+ if (options.confidentialite) {
+ parametresEvenement += [confidentialite: options.confidentialite]
+ }
+ if (options.disponibilite) {
+ parametresEvenement += [disponibilite: options.disponibilite]
+ }
+ if (options.uid) {
+ parametresEvenement += [uid: options.uid]
+ }
+ if (options.touteLaJournee) {
+ parametresEvenement += [touteLaJournee: options.touteLaJournee]
}
- return agendasConsultablesAttachesToEvent
- }
- /**
- * Retourne les évènements d'un agenda
- */
- List<Evenement> findEvenementsForListEnseignementAndJour(List<Enseignement> enseignements,
- Date jour) {
- Calendar debutJour = Calendar.getInstance()
- debutJour.setTime(jour)
- Calendar finJour = (Calendar) debutJour.clone()
- DateUtil.setDebutJour(debutJour)
- DateUtil.setFinJour(finJour)
+ if (enseignement) {
+ parametresEvenement += [enseignement: enseignement]
+ }
- return Evenement.withCriteria {
- 'in'('enseignement', enseignements)
- between("dateHeureDebut", debutJour.getTime(), finJour.getTime())
- order("dateHeureDebut", "asc")
+ parametresEvenement += [
+ auteur: autorite,
+ objet: objet,
+ type: type,
+ lieu: options.lieu,
+ description: options.description,
+ dateHeureDebut: dateHeureDebut,
+ dateHeureFin: dateHeureFin,
+ agendaMaitre: agendaMaitre,
+ frequence: Evenement.EVENEMENT_PONCTUEL
+ ]
+
+ Evenement evenement = new Evenement(parametresEvenement)
+ if (evenement.hasErrors()) {
+ throw EvenementCreationException.exception(evenement)
+ }
+ else {
+ if (evenement.save(flush: true)) {
+ RelAgendaEvenement relAgendaEvenement = new RelAgendaEvenement(
+ evenement: evenement,
+ agenda: agendaMaitre
+ )
+ evenement.addToRelAgendasEvenements(relAgendaEvenement)
+ evenement.save(flush: true)
+ return evenement
+ }
+ else {
+ throw EvenementCreationException.exception(evenement)
+ }
}
}
/**
- * Retrouve le prochaine événement de cours que l'enseignant donne à une structure
- * @return un Evenement
+ * Ajoute un événement simple dans un agenda
+ * Vérife les droits, si la session a le droit de modifier l'agenda,
+ * il a le droit d'ajouter n'importe quel événement
+ * @param evenement : événement à ajouter
+ * @param agenda : agenda dans lequel en ajoute l'événement
+ * @param securiteSession : la session en court
+ * @throws EliotTempsException : si l'événement est déjà attaché
+ * à l'agenda
+ * @throws AutorisationException: si l'utilisateur
+ * n'a pas le droit de modifier l'agenda
+ *
*/
- Evenement findProchainEvenementForEnseignement(Enseignement enseignement,
- Date jour,
- Boolean strictementPosterieur) {
- Agenda agendaEnseignant = tempsAgendaService.
- getAgendaEmploiDuTempsForEnseignantAndEtablissement(
- enseignement.enseignant.idExterne,
- enseignement.service.structureEnseignement.etablissement.idExterne,
- false
- )
+ private void ajouterEvenementToAgenda(Evenement evenement,
+ Agenda agenda,
+ SecuriteSession securiteSession
+ ) throws EliotTempsException {
- if (!agendaEnseignant) {
- return null
+ //Vérification des droits
+ if (securiteSession) {
+ tempsSecuriteService.verifieAutorisationModification(agenda,
+ securiteSession
+ )
}
- Agenda agendaStructure = tempsAgendaService.
- getAgendaEmploiDuTempsForStructure(
- enseignement.service.structureEnseignement,
- false
- )
- if (!agendaStructure) {
- return null
+ if (log.infoEnabled) {log.info "Ajout de l'événement: $evenement.objet à l'agenda: $agenda.nom"}
+ if (isEvenementAttacheAgenda(evenement, agenda)) {
+ throw EvenementAttacheException.exception(evenement, agenda)
}
-
- String hql = strictementPosterieur ?
- HQL_PROCHAIN_EVENT_POSTERIEUR_DATE : HQL_PROCHAIN_EVENT
- List<Evenement> evenements = (List<Evenement>) RelAgendaEvenement.executeQuery(
- hql,
- [
- agendaEnseignantId: agendaEnseignant.id,
- agendaStructureId: agendaStructure.id,
- enseignement: enseignement,
- jour: jour
- ],
- [max: 1]
- )
- if (evenements.size() == 1) {
- return evenements[0]
- } else {
- return null
+ else {
+ RelAgendaEvenement relAgendaEvenement = new RelAgendaEvenement(
+ evenement: evenement,
+ agenda: agenda)
+ relAgendaEvenement.save()
+ evenement.addToRelAgendasEvenements(relAgendaEvenement)
}
}
+
}