}
- abstract Object findPage(String codePage)
+ abstract protected Object findPage(String codePage)
def changeEtablissement = {
public String toString() {
- return "Matiere{" +
- "id=" + id +
- ", libelleLong='" + libelleLong + '\'' +
- '}';
+ return "Matiere{id=$id, libelleLong=$libelleLong}"
}
}
/**
* Modalité de matiére (sous-matière).
* E.g. Ecrit, Oral
- *
+ *
* @author msan
*/
class ModaliteMatiere {
static transients = ['anneeScolaireService']
static hasMany = [
- sousServices: SousService
+ sousServices: SousService
]
static constraints = {
}
def beforeValidate(){
- anneeScolaire = anneeScolaire ?: anneeScolaireService.anneeScolaireEnCours()
+ anneeScolaire = anneeScolaire ?: anneeScolaireService.anneeScolaireEnCours()
}
static mapping = {
table('ent.modalite_matiere')
id column: 'id',
- generator: 'sequence',
- params: [sequence: 'ent.modalite_matiere_id_seq']
+ generator: 'sequence',
+ params: [sequence: 'ent.modalite_matiere_id_seq']
code column: 'code'
libelle column: 'libelle'
public void setCalendrierHebdoInfo(SecuriteSession securiteSession,
CalendrierHebdoInfo calendrierHebdoInfo,
PreferencesEtablissementAbsences pref,
- String libelleEvt
- ) {
+ String libelleEvt) {
+
if ((calendrierHebdoInfo.aCreer.size() > 0) ||
(calendrierHebdoInfo.aModifier.size() > 0) ||
(calendrierHebdoInfo.aSupprimer.size() > 0)
plageHoraire = new PlageHoraire()
plageHoraireService.copyPlageHoraireInfoToPlageHoraire(pref, plageHoraire, plageHoraireInfo)
plageHoraire.save(flush: true)
+ pref.addToPlageHoraires(plageHoraire)
}
calendrierHebdoInfo.aModifier.each {Map plageHoraireInfo ->
/**
* Exécute la requête de récupération des plages horaires ordonnées
*/
- private List<PlageHoraire> getListePlageHorairesOrdonnee(
- PreferencesEtablissementAbsences pref) {
- return pref.plageHoraires?.sort{
- it.debut
- }
+ private List<PlageHoraire> getListePlageHorairesOrdonnee(PreferencesEtablissementAbsences pref) {
+ List<PlageHoraire> plageHoraires = pref.plageHoraires?.toList() ?: []
+ plageHoraires.sort {it.debut}
+ return plageHoraires
}
/**
* <http://www.cecill.info/licences.fr.html>.
*/
-
-
package org.lilie.services.eliot.scolarite
import org.lilie.services.eliot.scolarite.matiere.MatiereCodeGestionUniqueException
import org.lilie.services.eliot.securite.AutorisationException
-import org.lilie.services.eliot.exception.SuppresionEchoueException
import org.lilie.services.eliot.scolarite.matiere.MatiereNonSupprimableException
import org.springframework.dao.DataIntegrityViolationException
import org.lilie.services.eliot.annuaire.SecuriteSession
-import org.lilie.services.eliot.annuaire.FonctionEnum
import org.lilie.services.eliot.GormUtils
import org.hibernate.FetchMode
private static final String ORAL_CODE = 'Oral' // mm créée par défaut
private static final String ECRIT_CODE = 'Ecrit' // mm créée par défaut
-/**
- * Retourne la liste des modalites matiere pour l'établissement
- * @return liste des modalites
- * @author msan
- */
+ /**
+ * Retourne la liste des modalites matiere pour l'établissement
+ * @return liste des modalites
+ * @author msan
+ */
List<ModaliteMatiere> getListeModalitesMatiere(SecuriteSession securiteSession,
Etablissement etablissement) {
// recuperer la liste des modalités des matieres
* Crée une modalité matière par défaut
*/
ModaliteMatiere internalCreeModaliteMatiere(Etablissement etablissement,
- String code,
- String libelle) {
+ String code,
+ String libelle) {
Closure action = {
return new ModaliteMatiere(
- etablissement: etablissement,
- code: code,
- libelle: libelle
+ etablissement: etablissement,
+ code: code,
+ libelle: libelle
).save(flush: true, failOnError: true)
}
* Verifier si la modalite est utilise dans les services
* @author mjao
*/
- boolean isModaliteMatiereUtilise(SecuriteSession securiteSession,
- ModaliteMatiere modaliteMatiere) {
-
+ boolean isModaliteMatiereUtilise(ModaliteMatiere modaliteMatiere) {
- int nbModalites = SousService.createCriteria().count {
+ List sousServiceIds = SousService.createCriteria().list {
eq('modaliteMatiere', modaliteMatiere)
+ projections {
+ property('id')
+ }
+ maxResults(1)
}
- return (nbModalites > 0)
+ return sousServiceIds.size() as Boolean
}
/**
* Crée une modalité
- * @param modaliteInfo les informations de la modalite à créer
- * @return la modalite crée
* @author mjao
- * @throws IllegalStateException si la modalite n'a pas pu être créée
*/
- ModaliteMatiere creeModaliteMatiereManuel(SecuriteSession securiteSession,
- Etablissement etablissement,
+ ModaliteMatiere creeModaliteMatiereManuel(Etablissement etablissement,
String code,
String libelle)
throws MatiereCodeGestionUniqueException,
- IllegalArgumentException {
+ IllegalArgumentException {
ModaliteMatiere mod = ModaliteMatiere.createCriteria().get {
eq('code', code)
mod = internalCreeModaliteMatiere(etablissement, code, libelle)
return mod
}
+
+
/**
* Modifie une matière créée manuellement
* @param securiteSession la session de sécurité Eliot de l'utilisateur qui
* @author mjao
*/
@SuppressWarnings('CatchException')
- ModaliteMatiere modifieModaliteMatiereManuel(SecuriteSession securiteSession,
- ModaliteMatiere modalite,
+ ModaliteMatiere modifieModaliteMatiereManuel(ModaliteMatiere modalite,
String code,
String libelle)
throws MatiereCodeGestionUniqueException,
- IllegalArgumentException {
+ IllegalArgumentException {
- // verifie l'autorisation de modification
- verifieAutorisationModifierModaliteMatiereManuel(
- securiteSession,
- modalite.etablissement
- )
//verifier si le nouveau code de gestion (s'il n'est pas nul) est unique
ModaliteMatiere mod = ModaliteMatiere.createCriteria().get {
eq('code', code)
throw e
}
}
-/**
-
- * @param securiteSession la session de sécurité Eliot de l'utilisateur qui
- * déclenche l'action
- * @param modalite la modalite à supprimer
- * @throws IllegalArgumentException si la modalite fournie n'est pas une
- * matière créée manuellement
- * @throws AutorisationException si l'utilisateur n'a pas la permission de
- * supprimer une matière
- * @author mjao
- */
- void supprimeModaliteMatiereManuel(SecuriteSession securiteSession,
- ModaliteMatiere modalite)
- throws MatiereNonSupprimableException,
- SuppresionEchoueException,
- IllegalArgumentException,
- AutorisationException {
-
- // Verifie l'autorisation de suppression
- verifieAutorisationsupprimeModaliteMatiereManuel(
- securiteSession,
- modalite.etablissement
- )
- if (isModaliteMatiereUtilise(securiteSession, modalite)) {
- throw new MatiereNonSupprimableException()
- }
- internalSupprimeModaliteMatiere(modalite)
- }
-
-/**
- * Modifie une modalite
- * Attention ! Cette méthode est à usage interne et ne fais aucune vérification
- * de droit
- * @param modalite la modalite à modifier
- * @return la modalite modifiée
- * @author mjao
- * @throws IllegalStateException si la modalite n'a pas pu être mise à jour
- */
- private ModaliteMatiere internalModifieModaliteMatiere(ModaliteMatiere modalite) {
-
- if (!modalite.save(flush: true)) {
- throw new IllegalStateException(
- "La modification de la modalite $modalite a échoué " +
- "(erreur: ${modalite.errors})"
- )
- }
-
- return modalite
- }
/**
- * Supprime une modalite
- * Attention ! Cette méthode est à usage interne et ne fais aucune vérification
- * de droit
- * Remarque : la suppression n'est possible que si la modalite n'est pas
- * utilisée
+ * déclenche l'action
* @param modalite la modalite à supprimer
+ * @throws IllegalArgumentException si la modalite fournie n'est pas une
+ * matière créée manuellement
+ * supprimer une matière
* @author mjao
- * @throws IllegalStateException si la matière n'a pas pu être supprimée
*/
- @SuppressWarnings('CatchException')
- private void internalSupprimeModaliteMatiere(ModaliteMatiere modalite) {
+ void supprimeModaliteMatiereManuel(ModaliteMatiere modalite)
+ throws MatiereNonSupprimableException,
+ IllegalArgumentException {
- try {
- modalite.delete(flush: true)
+ if (isModaliteMatiereUtilise(modalite)) {
+ throw new MatiereNonSupprimableException()
}
- catch (Exception e) { // Note (jtra) préciser l'exception levée quand une suppression échoue + préciser les services reliés
- throw new IllegalStateException(
- "La suppression de la modalite $modalite a échoué " +
- "(erreur: ${e.message})"
- )
- }
+ modalite.delete(flush: true)
}
/**
- * Verifier que le directeur de l'etablissement est le seul autorisé pour la modification ou creation
+ * @param modalite la modalite à modifier
+ * @return la modalite modifiée
* @author mjao
+ * @throws IllegalStateException si la modalite n'a pas pu être mise à jour
*/
- void verifieAutorisationModifierModaliteMatiereManuel(SecuriteSession securiteSession,
- Etablissement etablissement) throws AutorisationException {
+ private ModaliteMatiere internalModifieModaliteMatiere(ModaliteMatiere modalite) {
- if (!securiteSession.hasFonctionIn([FonctionEnum.DIRECTION], etablissement.id) &&
- !securiteSession.hasFonctionIn([FonctionEnum.ADMIN_LOCAL], etablissement.id)) {
- throw AutorisationException.modificationContenuException()
+ if (!modalite.save(flush: true)) {
+ throw new IllegalStateException(
+ "La modification de la modalite $modalite a échoué " +
+ "(erreur: ${modalite.errors})"
+ )
}
- }
- /**
- * Verifier que le directeur de l'etablissement est le seul autorisé pour la suppression
- * @author mjao
- */
- void verifieAutorisationsupprimeModaliteMatiereManuel(SecuriteSession securiteSession,
- Etablissement etablissement) throws AutorisationException {
- if (!securiteSession.hasFonctionIn([FonctionEnum.DIRECTION], etablissement.id) &&
- !securiteSession.hasFonctionIn([FonctionEnum.ADMIN_LOCAL], etablissement.id)) {
- throw AutorisationException.suppressionException()
- }
+ return modalite
}
+
List<ModaliteMatiere> findAllModaliteMatiereForAllIds(List<Long> modaliteMatiereIds,
Etablissement etablissementPourVerification = null){
if(!modaliteMatiereIds){
}
if(etablissementPourVerification){
result.each {
- ModaliteMatiere modaliteMatiere1 ->
- if(modaliteMatiere1.etablissementId != etablissementPourVerification.id){
- throw new AutorisationException(
- "La modalité matière n'existe pas dans l'établissement."
+ ModaliteMatiere modaliteMatiere ->
+ if(modaliteMatiere.etablissementId != etablissementPourVerification.id){
+ throw new IllegalArgumentException(
+ "La modalité matière $modaliteMatiere ne correspond pas à l'établissement $etablissementPourVerification"
)
}
}
import org.lilie.services.eliot.temps.importsts.info.StsMatiereInfo
import org.hibernate.FetchMode
import org.lilie.services.eliot.securite.impl.Autorite
-
-import org.lilie.services.eliot.exception.SuppresionEchoueException
-
-import org.lilie.services.eliot.securite.AutorisationException
import org.springframework.dao.DataIntegrityViolationException
-import org.lilie.services.eliot.annuaire.SecuriteSession
import org.lilie.services.eliot.GormUtils
import org.lilie.services.eliot.scolarite.Matiere
import org.lilie.services.eliot.scolarite.Etablissement
-
import org.lilie.services.eliot.scolarite.OrigineEnum
import org.lilie.services.eliot.scolarite.Service
import org.lilie.services.eliot.scolarite.AnneeScolaire
static transactional = true
- /**
- * Méthode pour enregistrer une matière dans la base des données
- * @param matiere : objet matière doit etre enregistré
- * @throws IllegalStateException si la modification n'a pas pu être effectuée
- */
- @SuppressWarnings('CatchException')
- void setCodeSTS(Matiere matiere, String codeSts)
- throws IllegalStateException {
- matiere.codeSts = codeSts
-
- try {
- internalModifieMatiere(matiere)
- }
- catch (Exception e) {
- throw new IllegalStateException(
- "Echec de la mise à jour du code STS pour la matiere $matiere " +
- "et le code STS $codeSts " +
- "(erreur: ${e.message})",
- e
- )
- }
-
- }
-
- /**
- * Vérifie que la securiteSession a l'autorisation de créer une matière
- * quelconque (AUTO ou MANUEL) sur l'établissement fournit
- * @throws AutorisationException
- * @author jtra
- */
- void verifieCreeMatiere(SecuriteSession securiteSession,
- Etablissement etablissement)
- throws AutorisationException {
-
- // Autorisé uniquement aux autorités de type 'ELIOT'
- if (securiteSession.defaultAutorite.type != Autorite.TYPE_ELIOT) {
- throw AutorisationException.modificationContenuException()
- }
- }
/**
* Crée ou met à jour une matière (AUTO ou MANUEL)
* déclenche l'action
* @param creeMatiereParam les informations sur la matière
* @return la matière créée ou modifiée
- * @throws AutorisationException si l'utilisateur n'a pas la permission de
- * réaliser l'opération
* @author jtra
*/
- Matiere insertUpdateMatiere(SecuriteSession securiteSession,
- CreeMatiereParam creeMatiereParam)
- throws AutorisationException {
-
-// TOREFACT gérer droits pour fonctionnalités et fonctions paramétrables
-// verifieCreeMatiere(securiteSession, creeMatiereParam.etablissement)
+ Matiere insertUpdateMatiere(CreeMatiereParam creeMatiereParam) {
// Recherche de la matiere
Matiere matiere = findMatiereByCodeGestionAndEtablissement(
return matiere
}
+
/**
* Recherche une matière par code gestion & établissement
* @return la matière si elle existe, sinon null
)
}
-/**
- * Crée ou consolide une matière à partir des informations STS
- * @param matInfo les informations STS de la matière
- * @return matiere la matière créee ou mise à jour
- * @throws IllegalStateException si la matière n'a pas pu être créée ou
- * consolidée
- */
+
+ /**
+ * Crée ou consolide une matière à partir des informations STS
+ * @param matInfo les informations STS de la matière
+ * @return matiere la matière créee ou mise à jour
+ * @throws IllegalStateException si la matière n'a pas pu être créée ou
+ * consolidée
+ */
Matiere insertUpdateMatiereFromSTS(StsMatiereInfo matInfo) {
// récupèration de la matière en base
return matiere
}
-/**
- * Crée une matière à partir des informations STS
- * @param matInfo : les information STS de la matière
- * @return matiere matière créée
- * @throws IllegalStateException si la matière n'a pas pu être créée
- */
+
+ /**
+ * Crée une matière à partir des informations STS
+ * @param matInfo : les information STS de la matière
+ * @return matiere matière créée
+ * @throws IllegalStateException si la matière n'a pas pu être créée
+ */
Matiere creeMatiereFromSTS(StsMatiereInfo matInfo)
throws MatiereCodeGestionUniqueException {
return internalCreeMatiere(creeMatiereParam)
}
-/**
- * Consolide les informations d'une matière à partir des données STS
- * Ne modifie pas le libellé Long de la matière qui est modifiable
- * @param matiere la matière à mettre à jour
- * @param matInfo les données STS de la matière
- * @return la matière mise à jour
- * @throws IllegalStateException si la matière n'a pas pu être modifiée
- */
+ /**
+ * Consolide les informations d'une matière à partir des données STS
+ * Ne modifie pas le libellé Long de la matière qui est modifiable
+ * @param matiere la matière à mettre à jour
+ * @param matInfo les données STS de la matière
+ * @return la matière mise à jour
+ * @throws IllegalStateException si la matière n'a pas pu être modifiée
+ */
@SuppressWarnings('CatchException')
Matiere consolideMatiereFromSTS(Matiere matiere, StsMatiereInfo matInfo)
throws IllegalStateException {
catch (Exception e) {
throw new IllegalStateException(
"Erreur lors de la mise à jour de la matière " +
- "$matiere.codeSts : ${matiere.errors} " +
- "(erreur : ${e.message})",
+ "$matiere.codeSts : (erreur : ${e.message})",
e
)
}
}
-/**
- * Retourne les matières enseignés par le prof pour l'établissement
- * @return liste des matières
- * @author bahj
- * @author msan
- */
+
+ /**
+ * Retourne les matières enseignés par le prof pour l'établissement
+ * @return liste des matières
+ * @author bahj
+ * @author msan
+ */
List<Matiere> findMatieresByEnseignantAndEtablissement(Autorite enseignant,
- Etablissement etablissement
- ) {
- // Complexite Database access : constante : 1 requête
- // Complexite traitement : linéaire O(n) ou n est le nombre de service
- List<Matiere> matieres
- def criteria = Service.createCriteria()
- List<Service> services = criteria.list {
+ Etablissement etablissement) {
+ List<Matiere> matieres =
+ (List<Matiere>) Service.createCriteria().listDistinct {
enseignements {
eq('enseignant', enseignant)
}
matiere {
eq('etablissement', etablissement)
}
- fetchMode(ConstFonct.MATIERE, FetchMode.JOIN)
+
+ projections {
+ property('matiere')
+ }
}
- matieres = services*.matiere?.unique { it.id }?.toList()
+
return matieres
}
-/**
- * Retourne la liste des matieres pour l'établissement
- * @return liste des matieres
- * @author mjao
- */
- List<Matiere> findAllMatiereByEtablissement(SecuriteSession securiteSession,
- Etablissement etablissement) {
+
+ /**
+ * Retourne la liste des matieres pour l'établissement
+ * @return liste des matieres
+ * @author mjao
+ */
+ List<Matiere> findAllMatiereByEtablissement(Etablissement etablissement) {
List<Matiere> matieres = Matiere.findAllByEtablissement(etablissement)
return matieres
}
+
/**
* Verifier si la matiere est utilise dans les services
* @author mjao
*/
- boolean isMatiereUtilise(SecuriteSession securiteSession, Matiere matiere) {
+ boolean isMatiereUtilise(Matiere matiere) {
- int nbServices = Service.createCriteria().count {
+ List serviceIds = Service.createCriteria().list {
eq(ConstFonct.MATIERE, matiere)
+ projections {
+ property('id')
+ }
+ maxResults(1)
}
- return (nbServices > 0)
+ return serviceIds.size() as Boolean
}
+
/**
* Cree une matiere manuelle
* @param securiteSession la session de sécurité Eliot de l'utilisateur
* @param codegestion le code gestion de la matière à créer
* @param libellelong le libellé de la matière à créer
* @return la matière créée
- * @throws AutorisationException si l'utilisateur n'a pas la permission de
- * créer une matière sur l'établissement
* @throws MatiereCodeGestionUniqueException si le codeGestion est déjà
* utilisé pour cet établissement
* @author mjao
*/
- Matiere creeMatiereManuel(SecuriteSession securiteSession,
- Etablissement etablissement,
+ Matiere creeMatiereManuel(Etablissement etablissement,
String codeGestion,
String libelleLong,
Boolean specialite)
- throws MatiereCodeGestionUniqueException,
- AutorisationException {
-
- // Vérifier l'autorisation de suppression
-// TOREFACT gérer droits pour fonctionnalités et fonctions paramétrables
-// verifieAutorisationModifierMatiereManuel(securiteSession, etablissement)
+ throws MatiereCodeGestionUniqueException {
CreeMatiereParam creeMatiereParam = new CreeMatiereParam(
origine: OrigineEnum.MANUEL,
return internalCreeMatiere(creeMatiereParam)
}
+
/**
* Modifie une matière créée manuellement
* @param securiteSession la session de sécurité Eliot de l'utilisateur qui
* @return la matière modifiée
* @throws IllegalArgumentException si la matière n'a pas été créée
* manuellement (i.e. matiere.origine != OrigineEnum.MANUEL)
- * @throws AutorisationException si l'utilisateur n'a pas la permission de
- * modifier la matière
* @author mjao
*/
- Matiere modifieMatiereManuel(SecuriteSession securiteSession,
- Matiere matiere,
+ Matiere modifieMatiereManuel(Matiere matiere,
String codeGestion,
String libelleLong,
Boolean specialite)
throws MatiereCodeGestionUniqueException,
- IllegalArgumentException,
- AutorisationException {
+ IllegalArgumentException {
// Vérifie que la matière est bien d'origine manuelle
if (matiere.origine != OrigineEnum.MANUEL) {
throw new IllegalArgumentException(
- "Argument incorrect : la matière $matiere n'a pas été " +
- "créé manuellement"
+ "Argument incorrect : la matière $matiere n'a pas été créé manuellement"
)
}
- // verifie l'autorisation de modification
-// TOREFACT gérer droits pour fonctionnalités et fonctions paramétrables
-// verifieAutorisationModifierMatiereManuel(
-// securiteSession,
-// matiere.etablissement
-// )
-
if (codeGestion) {
matiere.codeGestion = codeGestion
}
return internalModifieMatiere(matiere)
}
+
/**
* Modifie une matière créée automatiquement
* @param securiteSession la session de sécurité Eliot de l'utilisateur qui
* @param libellelong le nouveau libellé long de la matière (si cet argument
* est nul, le code de gestion sera utilisé
* @return la matière modifiée
- * @throws AutorisationException si l'utilisateur n'a pas la permission de
- * modifier la matière
* @throws MatiereCodeGestionUniqueException si le nouveau codeGestion est
* déjà utilisé pour cet établissement
* @author mjao
*/
- Matiere modifieMatiereAutomatique(SecuriteSession securiteSession,
- Matiere matiere,
+ Matiere modifieMatiereAutomatique(Matiere matiere,
String libelleLong,
Boolean specialite)
- throws AutorisationException,
- MatiereCodeGestionUniqueException {
-
- // verifie l'autorisation de modification
-// TOREFACT gérer droits pour fonctionnalités et fonctions paramétrables
-// verifieAutorisationModifierMatiereManuel(
-// securiteSession,
-// matiere.etablissement
-// )
+ throws MatiereCodeGestionUniqueException {
if (libelleLong == null && specialite == null) {
return matiere // Aucune modification à effectuer
return internalModifieMatiere(matiere)
}
+
/**
* Supprime une matiere créée manuellement
* @param securiteSession la session de sécurité Eliot de l'utilisateur qui
* manuellement)
* @throws IllegalArgumentException si la matière fournie n'est pas une
* matière créée manuellement
- * @throws AutorisationException si l'utilisateur n'a pas la permission de
- * supprimer une matière
- * @throws SuppresionEchoueException
* @author mjao
*/
- void supprimeMatiereManuel(SecuriteSession securiteSession, Matiere matiere)
+ void supprimeMatiereManuel(Matiere matiere)
throws MatiereNonSupprimableException,
- SuppresionEchoueException,
- IllegalArgumentException,
- AutorisationException {
+ IllegalArgumentException {
// Vérifie que la matière a bien été créée manuellement
if (matiere.origine != OrigineEnum.MANUEL) {
throw new IllegalArgumentException(
- "Argument invalide : la matière $matiere n'est pas une " +
- "matière créée manuellement"
+ "Argument invalide : la matière $matiere n'est pas une matière créée manuellement"
)
}
- // Verifie l'autorisation de suppression
-// TOREFACT gérer droits pour fonctionnalités et fonctions paramétrables
-// verifieAutorisationsupprimeMatiereManuel(
-// securiteSession,
-// matiere.etablissement
-// )
-
- if (isMatiereUtilise(securiteSession, matiere)) {
+ if (isMatiereUtilise(matiere)) {
throw new MatiereNonSupprimableException()
}
internalSupprimeMatiere(matiere)
}
+
/**
* Crée une matière
* Attention ! Cette méthode est à usage interne et ne fais aucune vérification
return (Matiere) GormUtils.withSavepoint(action, onDataIntegrityViolation)
}
-/**
- * Modifie une matière
- * Attention ! Cette méthode est à usage interne et ne fais aucune vérification
- * de droit
- * @param matiere la matière modifiée
- * @return la matière modifiée
- * @author jtra
- * @throws MatiereCodeGestionUniqueException si le code de gestion modifié
- * viole la contrainte d'unicité
- * @throws IllegalStateException si la matière n'a pas pu être mise à jour pour
- * une raison inconnue
- */
+
+ /**
+ * Modifie une matière
+ * Attention ! Cette méthode est à usage interne et ne fais aucune vérification
+ * de droit
+ * @param matiere la matière modifiée
+ * @return la matière modifiée
+ * @author jtra
+ * @throws MatiereCodeGestionUniqueException si le code de gestion modifié
+ * viole la contrainte d'unicité
+ * @throws IllegalStateException si la matière n'a pas pu être mise à jour pour
+ * une raison inconnue
+ */
private Matiere internalModifieMatiere(Matiere matiere)
throws MatiereCodeGestionUniqueException {
return (Matiere)GormUtils.withSavepoint(action, onDataIntegrityViolation)
}
-/**
- * Supprime une matière
- * Attention ! Cette méthode est à usage interne et ne fais aucune vérification
- * de droit
- * Remarque : la suppression n'est possible que si la matière n'est pas
- * utilisée
- * @param matiere la matière à supprimer
- * @throws IllegalStateException si la matière n'a pas pu être supprimée
- * @author jtra
- */
+
+ /**
+ * Supprime une matière
+ * Attention ! Cette méthode est à usage interne et ne fais aucune vérification
+ * de droit
+ * Remarque : la suppression n'est possible que si la matière n'est pas
+ * utilisée
+ * @param matiere la matière à supprimer
+ * @throws IllegalStateException si la matière n'a pas pu être supprimée
+ * @author jtra
+ */
private void internalSupprimeMatiere(Matiere matiere) {
try {
}
}
- List<Matiere> findAllMatiereForAllIds(List<Long> matiereIds, Etablissement etablissementPourVerification = null){
+ List<Matiere> findAllMatiereForAllIds(List<Long> matiereIds,
+ Etablissement etablissementPourVerification = null){
if(!matiereIds){
return []
}
List<Matiere> result = Matiere.withCriteria {
"in"("id", matiereIds)
- fetchMode("etablissement", FetchMode.JOIN)
}
+
if(etablissementPourVerification){
result.each {
Matiere matiere ->
if(matiere.etablissementId != etablissementPourVerification.id){
- throw new AutorisationException("La matière n'existe pas dans l'établissement.")
+ throw new IllegalArgumentException(
+ "La matière $matiere ne correspond pas à l'établissement $etablissementPourVerification"
+ )
}
}
}
boolean codeEtablissementStsEmpInvalide = false
String codeEtablissementEmpSts
String codeEtablissementStsEmp
- List<String> listeCodeActeurUAI = []
+ String codeActeurUAI
}
\ No newline at end of file
* @throw FichiersImportInvalideException si les contraintes d'intégrité ne
* sont pas satisfaites
*/
- Etablissement valideFichiersImport(def fluxStsEmp,
- def fluxEmpSts,
- List<Etablissement> listeEtablissement)
+ void valideFichiersImport(def fluxStsEmp,
+ def fluxEmpSts,
+ Etablissement etablissement)
throws FichiersImportInvalideException {
- Etablissement etablissementATraiter = null
// Parse le fichier StsEmp
def rootStsEmp
@CODE?.text()?.trim()
String codeEtablissementEmpSts = rootEmpSts.PARAMETRES.UAJ
- etablissementATraiter = (Etablissement) listeEtablissement.find {
- Etablissement etab ->
- etab.uai.toUpperCase().equals(codeEtablissementStsEmp.toUpperCase())
- }
- boolean testCodeEtablissementStsEmp = (etablissementATraiter != null)
- boolean testCodeEtablissementEmpSts = (listeEtablissement.find {
- Etablissement etab ->
- etab.uai.toUpperCase().equals(codeEtablissementEmpSts.toUpperCase())
- } != null)
+ boolean testCodeEtablissementStsEmp =
+ etablissement.uai.toUpperCase().equals(codeEtablissementStsEmp.toUpperCase())
+
+ boolean testCodeEtablissementEmpSts =
+ etablissement.uai.toUpperCase().equals(codeEtablissementEmpSts.toUpperCase())
// Lève une exception si un test d'intégrité échoue
if (!testAnneeEmpSts ||
anneeStsEmpInvalide: !testAnneeStsEmp,
codeEtablissementEmpStsInvalide: !testCodeEtablissementEmpSts,
codeEtablissementStsEmpInvalide: !testCodeEtablissementStsEmp,
- listeCodeActeurUAI: listeEtablissement*.uai,
+ codeActeurUAI: etablissement.uai,
codeEtablissementEmpSts: codeEtablissementEmpSts,
codeEtablissementStsEmp: codeEtablissementStsEmp
)
// Vérifie que le calendrier a bien été paramétré pour l'année en cours
Calendrier calendrier = calendrierService.
getCalendrierForEtablissementAndAnneeScolaire(
- etablissementATraiter,
+ etablissement,
anneeEnCours,
false)
}
// L'utilisation de l'import udt est exclusive
- if (udtImportParametrageService.isEtablissementUtiliseImportUdt(etablissementATraiter)) {
- throw new UdtImportUtiliseException(etablissement: etablissementATraiter)
+ if (udtImportParametrageService.isEtablissementUtiliseImportUdt(etablissement)) {
+ throw new UdtImportUtiliseException(etablissement: etablissement)
}
- return etablissementATraiter
}
/**
Etablissement etablissement = getEtablissement(matiere.etablissement)
return matiereService.insertUpdateMatiere(
- DefaultSecuriteSessionFactory.getEliotScolariteSecuriteSessionForCodePorteurENT(
- etablissement.codePorteurENT
- ),
new CreeMatiereParam(
libelleLong: matiere.libelleLong,
libelleCourt: matiere.libelleCourt,
Calendrier calendrier
AnneeScolaire anneeScolaire
- private static final String ID_EXTERNE_ETAB_TEST = '0000'
-
protected void setUp() {
super.setUp()
etab0000 = new Etablissement(
}
- private void AjoutPlageHoraire() {
+ private void ajoutPlageHoraire() {
CalendrierHebdoInfo calendrierHebdoInfo = calendrierService.getCalendrierHebdoInfo(pref)
calendrierHebdoInfo.aCreer << [
void testSetCalendrierHebdoInfoAjout() {
- AjoutPlageHoraire()
+ ajoutPlageHoraire()
CalendrierHebdoInfo calendrierHebdoInfoLecture = calendrierService.getCalendrierHebdoInfo(pref)
assertEquals("Le calendrier doit contenir 11 plages horaires", calendrierHebdoInfoLecture.getPlageHoraires().size(), 11)
void testSetCalendrierHebdoInfoDelete() {
- AjoutPlageHoraire()
+ ajoutPlageHoraire()
CalendrierHebdoInfo calendrierHebdoInfo = calendrierService.getCalendrierHebdoInfo(pref)
assertEquals("Le calendrier doit contenir 11 plages horaires", calendrierHebdoInfo.getPlageHoraires().size(), 11)
assertTrue("Une année scolaire ne doit pas couvrir plus de 12 mois.", exceptionIllegalArgLevee)
}
- private Map getDummySessionEnseignant() {
- Map result = [:]
-
- return result
- }
-
void testGetMoisAnneeScolaire() {
PreferencesEtablissementAbsences prefEtab = preferencesEtablissementAbsencesService.
getPreferencesEtablissementForEtablissement(
private Matiere creeMatiere(String code, String nom, Etablissement etablissement,
SecuriteSession securiteSession) {
+
return matiereService.creeMatiereManuel(
- securiteSession,
etablissement,
code,
nom,
package org.lilie.services.eliot.scolarite
-import org.lilie.services.eliot.test.PopulationTestActeur
import org.lilie.services.eliot.test.PopulationTestEtablissement
import grails.test.GrailsUnitTestCase
import org.lilie.services.eliot.test.PopulationTestMatiere
import org.lilie.services.eliot.test.PopulationTestClasse
-import org.lilie.services.eliot.annuaire.SecuriteSession
import org.lilie.services.eliot.test.LocalInitDonneesCommunesTestService
import org.lilie.services.eliot.temps.importsts.info.StsMatiereInfo
import org.lilie.services.eliot.scolarite.matiere.MatiereService
import org.lilie.services.eliot.scolarite.anneescolaire.AnneeScolaireService
+import org.lilie.services.eliot.scolarite.matiere.MatiereCodeGestionUniqueException
/**
* @author jtra
// Données communes chargées dans le setUp
private Etablissement etablissement1
private Etablissement etablissement2
- private SecuriteSession securiteSessionDirecteurEtablissement1 // Directeur sur Etab1 mais pas sur Etab2
- private SecuriteSession securiteSessionDirecteurEtablissement2
- private SecuriteSession securiteSessionInvite
private final String codeGestionInitial = 'codeGestionInitial'
private final String libelleInitial = 'libelleInitial'
private Matiere matiere1
PopulationTestEtablissement.ETABLISSEMENT_2
)
- // Récupère la securiteSession d'un directeur de l'établissement1
- securiteSessionDirecteurEtablissement1 =
- localInitDonneesCommunesTestService.getSecuriteSession(
- PopulationTestActeur.DIRECTION_1
- )
-
- // Récupère la securiteSession d'un directeur de l'établissement1
- securiteSessionDirecteurEtablissement2 =
- localInitDonneesCommunesTestService.getSecuriteSession(
- PopulationTestActeur.DIRECTION_2
- )
-
- // Récupère la securiteSession d'un invité de l'établissement1
- securiteSessionInvite =
- localInitDonneesCommunesTestService.getSecuriteSession(
- PopulationTestActeur.INVITE1_ETAB1
- )
matiere1 = localInitDonneesCommunesTestService.
getMatiere(PopulationTestMatiere.ANGLAIS)
}
private void internalTestCreeMatiereManuelSimple() {
// Vérifie que l'on peut créer une matière qui n'existe pas
Matiere matiereInitiale = matiereService.creeMatiereManuel(
- securiteSessionDirecteurEtablissement1,
etablissement1,
codeGestionInitial,
libelleInitial,
// Vérifie que l'on peut créer une matière avec le même libellé
Matiere matiereMemeLibelle = matiereService.creeMatiereManuel(
- securiteSessionDirecteurEtablissement1,
etablissement1,
genereCodeGestionUnique(),
'quelconque',
"la création de la matière de même libellé a échoué",
matiereMemeLibelle.id
)
-
}
/**
private void internalTestCreeMatiereManuelAutreEtablissement() {
Matiere matiereInitiale = matiereService.creeMatiereManuel(
- securiteSessionDirecteurEtablissement2,
etablissement2,
codeGestionInitial,
libelleInitial,
try {
matiereService.creeMatiereManuel(
- securiteSessionDirecteurEtablissement1,
etablissement1,
codeGestionInitial,
'libelle',
true
)
}
- catch (Exception e) {
+ catch (MatiereCodeGestionUniqueException e) {
// Comportement attendu
}
}
[null, ''].each { String libelleVide ->
String codeGestion = genereCodeGestionUnique()
Matiere matiereSansLibelle = matiereService.creeMatiereManuel(
- securiteSessionDirecteurEtablissement1,
etablissement1,
codeGestion,
'',
[null, ''].each { String codeGestionVide ->
try {
matiereService.creeMatiereManuel(
- securiteSessionDirecteurEtablissement1,
etablissement1,
codeGestionVide,
'libellé',
void testModifieMatiereManuelSimple() {
// Création initiale d'une matière
Matiere matiere = matiereService.creeMatiereManuel(
- securiteSessionDirecteurEtablissement1,
etablissement1,
codeGestionInitial,
libelleInitial,
// Modification du codeGestion
String codeGestionModifie = genereCodeGestionUnique()
matiereService.modifieMatiereManuel(
- securiteSessionDirecteurEtablissement1,
matiere,
codeGestionModifie,
null,
// Modification du libellé
String libelleModifie = 'libelleModifié'
matiereService.modifieMatiereManuel(
- securiteSessionDirecteurEtablissement1,
matiere,
null,
libelleModifie,
libelleModifie = libelleInitial
matiereService.modifieMatiereManuel(
- securiteSessionDirecteurEtablissement1,
matiere,
codeGestionModifie,
libelleModifie,
void testModifieMatiereManuelCodeGestionDoublon() {
// Création initiale d'une matière
Matiere matiere1 = matiereService.creeMatiereManuel(
- securiteSessionDirecteurEtablissement1,
etablissement1,
codeGestionInitial,
libelleInitial,
// Création d'une 2ème matière
Matiere matiere2 = matiereService.creeMatiereManuel(
- securiteSessionDirecteurEtablissement1,
etablissement1,
genereCodeGestionUnique(),
libelleInitial,
try {
matiereService.modifieMatiereManuel(
- securiteSessionDirecteurEtablissement1,
matiere2,
codeGestionInitial,
null,
void testModifieMatiereManuelCodeGestionVide() {
// Création initiale d'une matière
Matiere matiere = matiereService.creeMatiereManuel(
- securiteSessionDirecteurEtablissement1,
etablissement1,
codeGestionInitial,
libelleInitial,
try {
matiereService.modifieMatiereManuel(
- securiteSessionDirecteurEtablissement1,
matiere,
'', // Code gestion vide
null,
void testModifieMatiereManuelLibelleVide() {
// Création initiale d'une matière
Matiere matiere = matiereService.creeMatiereManuel(
- securiteSessionDirecteurEtablissement1,
etablissement1,
codeGestionInitial,
libelleInitial,
)
matiereService.modifieMatiereManuel(
- securiteSessionDirecteurEtablissement1,
matiere,
null,
'', // Libellé vide
try {
matiereService.modifieMatiereManuel(
- securiteSessionDirecteurEtablissement1,
matiereAuto,
genereCodeGestionUnique(),
null,
void testSupprimeMatiereManuelSimple() {
// Création initiale d'une matière
Matiere matiere = matiereService.creeMatiereManuel(
- securiteSessionDirecteurEtablissement1,
etablissement1,
codeGestionInitial,
libelleInitial,
false
)
- matiereService.supprimeMatiereManuel(
- securiteSessionDirecteurEtablissement1,
- matiere
- )
+ matiereService.supprimeMatiereManuel(matiere)
assertNull(
"La matière n'a pas été supprimée",
void testSupprimeMatiereManuelLieeAService() {
// Création initiale d'une matière
Matiere matiere = matiereService.creeMatiereManuel(
- securiteSessionDirecteurEtablissement1,
etablissement1,
codeGestionInitial,
libelleInitial,
assertNotNull(structureEnseignement.id) // Vérifie la création
Service service = new Service(
- anneeScolaire: anneeScolaireService.anneeScolaireEnCours(),
structureEnseignement: structureEnseignement,
matiere: matiere,
- evaluable: false,
modaliteCours: modaliteCoursService.newModaliteCours(
-1,
'-1',
assertNotNull(service.id) // Vérifie la création
try {
- matiereService.supprimeMatiereManuel(
- securiteSessionDirecteurEtablissement1,
- matiere
- )
+ matiereService.supprimeMatiereManuel(matiere)
assertFalse(
"La suppression aurait du lever une exception car la matière " +
assertNotNull(matiereAuto.id) // Vérifie la création
try {
- matiereService.supprimeMatiereManuel(
- securiteSessionDirecteurEtablissement1,
- matiereAuto
- )
+ matiereService.supprimeMatiereManuel(matiereAuto)
assertFalse(
"La suppression aurait du lever une exception car la matière " +
// Comportement attendu
}
}
+
/**
* Recuperation des matieres
* Test d'action du controlleur!
*/
void testListeMatieres() {
- SecuriteSession securiteSessionDirection =
- localInitDonneesCommunesTestService.getSecuriteSession(
- PopulationTestActeur.DIRECTION_1
- )
- List<Matiere> matieres = matiereService.findAllMatiereByEtablissement(
- securiteSessionDirection, etablissement1)
+ List<Matiere> matieres = matiereService.findAllMatiereByEtablissement(etablissement1)
assertNotNull("la liste des matieres est vide", matieres.size())
assertTrue(matieres.contains(matiere1))
stsImportService.valideFichiersImport(
fileStsEmp,
fileEmpSts,
- [etablissement]
+ etablissement
)
} catch (FichiersImportInvalideException e) {assertTrue(false)}
try {
stsImportService.valideFichiersImport(fileStsEmp,
fileEmpSts,
- [localInitDonneesCommunesTestService.getEtablissement(
+ localInitDonneesCommunesTestService.getEtablissement(
PopulationTestEtablissement.ETABLISSEMENT_1)
- ]
)
assertTrue(false)
try {
stsImportService.valideFichiersImport(fileStsEmp,
fileEmpSts,
- [localInitDonneesCommunesTestService.getEtablissement(
- PopulationTestEtablissement.ETABLISSEMENT_1
- )]
+ localInitDonneesCommunesTestService.getEtablissement(
+ PopulationTestEtablissement.ETABLISSEMENT_1)
)
assertTrue(false)
} catch (FichiersImportInvalideException e) {
try {
stsImportService.valideFichiersImport(fileStsEmp,
fileEmpSts,
- [localInitDonneesCommunesTestService.getEtablissement(
- PopulationTestEtablissement.ETABLISSEMENT_1
- )]
+ localInitDonneesCommunesTestService.getEtablissement(
+ PopulationTestEtablissement.ETABLISSEMENT_1)
)
assertTrue(false)
} catch (FichiersImportInvalideException e) {
try {
stsImportService.valideFichiersImport(fileStsEmp,
fileEmpSts,
- [localInitDonneesCommunesTestService.getEtablissement(
- PopulationTestEtablissement.ETABLISSEMENT_1
- )]
+ localInitDonneesCommunesTestService.getEtablissement(
+ PopulationTestEtablissement.ETABLISSEMENT_1)
)
assertTrue(false)
} catch (FichiersImportInvalideException e) {
}
- Object findPage(String codePage) {
+ protected Object findPage(String codePage) {
Page.valueOf(codePage)
}
modele.jourFermetureSemaine = calendrier.jourSemaineFerie
List<Matiere> allMatieres = matiereService.findAllMatiereByEtablissement(
- securiteSession,
etablissementCourant()
)
+
allMatieres.sort {it.libelleCourt}
List matieres = allMatieres.collect { [id: it.id, libelle: it.codeGestion]}
*/
class ApplicationController extends AbstractApplicationController{
- public Object findPage(String codePage){
+ protected Object findPage(String codePage){
Page.valueOf(codePage)
}
}
// matières
- matieres = matiereService.findAllMatiereByEtablissement(securiteSession,
+ matieres = matiereService.findAllMatiereByEtablissement(
etablissementCourant)?.collect {[id: it.id, libelle: it.codeGestion]}?.
sort { it.libelle }
epreuveSport = serie.epreuves.toList().find { it.isSport() }\r
\r
matiere1 = matiereService.creeMatiereManuel(\r
- securiteSessionDirection,\r
etablissement,\r
'MAT1',\r
'Mat 1',\r
// test les donnees recuperes\r
\r
Matiere matiere2 = matiereService.creeMatiereManuel(\r
- securiteSessionDirection,\r
etablissement,\r
'MAT2',\r
'Mat 2',\r
BrevetEpreuve epreuve2 = serie.epreuves.sort { it.code }.get(1)\r
BrevetEpreuve epreuve3 = serie.epreuves.sort { it.code }.get(2)\r
Matiere matiere2 = matiereService.creeMatiereManuel(\r
- securiteSessionDirection,\r
etablissement,\r
'MAT2',\r
'Mat 2',\r
false\r
)\r
Matiere matiere3 = matiereService.creeMatiereManuel(\r
- securiteSessionDirection,\r
etablissement,\r
'MAT3',\r
'Mat 3',\r
proprieteScolariteTestUtilService.ajouteEleveDansStructureEnseignement(eleve2, classe)
matiere = matiereService.creeMatiereManuel(
- securiteSessionDirection,
etablissement,
'TTT',
'Matiere de test',
proprieteScolariteTestUtilService.ajouteEleveDansStructureEnseignement(eleve, classe)
matiereMath = matiereService.creeMatiereManuel(
- securiteSession,
etablissement,
'Math',
'Mathematique',
)
matiereFra = matiereService.creeMatiereManuel(
- securiteSession,
etablissement,
'Fra',
'Francais',
// paramétrage pour spring
spring {
// permet d'activer le monitoring des appels spring
- actif = true
+ actif = false
// Pointcut expression (Spring-aop) de tous les appels devant être monitorés :
// voir http://static.springsource.org/spring/docs/2.0.8/reference/aop.html
pointcutExpression = "execution(* org.lilie.services.eliot..*.*(..)) and not execution(* org.lilie.services.eliot..*.getMetaClass(..)) and not execution(* org.lilie.services.eliot..*.setProperty(..)) and not execution(* org.lilie.services.eliot..*.getProperty(..)) and not execution(* org.lilie.services.eliot.impression..*.*(..))"
List<EliotFonctionnalites> allFonctionnalite = findAllFonctionnaliteCourante()
- MenuEntete.each {
+ for (MenuEntete menuEntete : MenuEntete.values()) {
- MenuEntete menuEntete ->
+ if (allFonctionnalite.find {it.getCode() == menuEntete?.page?.fonctionnalite?.getCode()} &&
+ menuEntete.page != ScolaritePage.PARAMETRAGE_ACCES_FONCTIONS &&
+ menuEntete.page.controllerName) {
- if (!page) {
- if (allFonctionnalite.find {it.getCode() == menuEntete?.page?.fonctionnalite?.getCode()}) {
- if (menuEntete.page != ScolaritePage.PARAMETRAGE_ACCES_FONCTIONS) {
- if (menuEntete.page.controllerName) {
- page = (ScolaritePage) menuEntete.page
- }
- }
-
- }
+ return (ScolaritePage) menuEntete.page
}
- MenuSousMenu.each {MenuSousMenu menuSousMenu ->
-
- if (!page) {
-
- if (menuSousMenu.menuEnteteEnum == menuEntete) {
+ for (MenuSousMenu menuSousMenu : MenuSousMenu.values()) {
- if (allFonctionnalite.find {it.getCode() == menuSousMenu?.page?.fonctionnalite?.getCode()}) {
-
- if (menuSousMenu.page != ScolaritePage.PARAMETRAGE_ACCES_FONCTIONS) {
- page = (ScolaritePage) menuSousMenu.page
- }
-
- }
-
- }
+ if (menuSousMenu.menuEnteteEnum == menuEntete &&
+ allFonctionnalite.find {it.getCode() == menuSousMenu?.page?.fonctionnalite?.getCode()} &&
+ menuSousMenu.page != ScolaritePage.PARAMETRAGE_ACCES_FONCTIONS) {
+ return (ScolaritePage) menuSousMenu.page
}
-
}
}
}
@Override
- Object findPage(String codePage) {
+ protected Object findPage(String codePage) {
ScolaritePage.valueOf(codePage)
}
/**
* Méthode utilisée pour envoyer les deux fichiers aux serveur
*/
- @SuppressWarnings('ReturnNullFromCatchBlock')
- @SuppressWarnings('CatchException')
def uploadFichiersSts = {
checkAccesPage(ScolaritePage.IMPORT_STS)
- Etablissement etablissement
- List<Etablissement> listEtablissement = [etablissementCourant()]
-
List messagesErreurs = []
String msg = ''
}
// Vérification de l'intégrité des fichiers à importer
+ String reponseJson = valideFichiersImport(importStsEmp, importEmpSts)
+
+ if (reponseJson != null) {
+ render(reponseJson)
+ return
+ }
+
+ reponseJson = verifieImportEnCours()
+
+ if (reponseJson != null) {
+ render(reponseJson)
+ return
+ }
+
+ stsImportDonneesManagerService.envoieDonneesAImporter(
+ etablissementCourant(),
+ importStsEmp.inputStream,
+ importEmpSts.inputStream
+ )
+
+ def texte
+ if (params.message == message(code: 'eliot.import-temps.message.fichiersNonDeposes')) {
+ texte = message(code: 'eliot.import-temps.message.submitSuccess')
+ }
+ else {
+ texte = message(code: 'eliot.import-temps.message.submitSuccessRemplacer')
+ }
+ String message = """{success:true, msg: '${texte}' }"""
+ render(message)
+ }
+
+
+ @SuppressWarnings('CatchException')
+ private String valideFichiersImport(MultipartFile importStsEmp,
+ MultipartFile importEmpSts) {
+ String reponseJson = null
+ List messagesErreurs = []
+ String msg = ''
+
try {
- etablissement = stsImportService.valideFichiersImport(
+ stsImportService.valideFichiersImport(
importStsEmp.getInputStream(),
importEmpSts.getInputStream(),
- listEtablissement
+ etablissementCourant()
)
- } catch (FichiersImportInvalideException e) {
+ }
+ catch (FichiersImportInvalideException e) {
if (e.stsEmpSyntaxeInvalide) {
messagesErreurs << message(
if (e.codeEtablissementEmpStsInvalide) {
messagesErreurs << message(
code: 'eliot.import-temps.erreur.integrite.empSts.etablissement',
- args: [e.codeEtablissementEmpSts, e.listeCodeActeurUAI.join(', ')]
+ args: [e.codeEtablissementEmpSts, e.codeActeurUAI]
)
}
if (e.codeEtablissementStsEmpInvalide) {
messagesErreurs << message(
code: 'eliot.import-temps.erreur.integrite.stsEmp.etablissement',
- args: [e.codeEtablissementStsEmp, e.listeCodeActeurUAI.join(', ')]
+ args: [e.codeEtablissementStsEmp, e.codeActeurUAI]
)
}
msg += messageErreur + '<br/>'
}
- String reponseJsonAsHtml = """{ success:false, messagesErreurs:"$msg"}"""
- render(reponseJsonAsHtml)
- return
+ reponseJson = """{ success:false, messagesErreurs:"$msg"}"""
}
catch (ParametrageCalendrierInexistantException e) {
String message = message(
args: [e.anneeScolaireCode]
)
- String reponseJsonAsHtml = """{ success:false, messagesErreurs:"$message"}"""
- render(reponseJsonAsHtml)
- return
+ reponseJson = """{ success:false, messagesErreurs:"$message"}"""
}
-
catch (UdtImportUtiliseException ex) {
String message = message(code: 'eliot.import-temps.erreur.udtImportUtilise')
- String reponseJsonAsHtml = """{ success:false, messagesErreurs:"$message"}"""
- render(reponseJsonAsHtml)
- return
+ reponseJson = """{ success:false, messagesErreurs:"$message"}"""
}
-
catch (Exception e) {
log.error(
"Echec du dépôt des fichiers STS pour une raison inconnue",
)
def messageErreur =
- message(
- code: 'eliot.importTemps.messageErreur.ErreurInconnueDepotFichiersSts'
- )
+ message(
+ code: 'eliot.importTemps.messageErreur.ErreurInconnueDepotFichiersSts'
+ )
- String reponseJsonAsHtml = """{ success:false, messagesErreurs:"$messageErreur"}"""
- render(reponseJsonAsHtml)
- return
+ reponseJson = """{ success:false, messagesErreurs:"$messageErreur"}"""
}
- if (stsImportDonneesManagerService.hasImportEnCours(etablissement)) {
+ return reponseJson
+ }
+
+
+ private String verifieImportEnCours() {
+ String reponseJson = null
+ List messagesErreurs = []
+ String msg = ''
+
+ if (stsImportDonneesManagerService.hasImportEnCours(etablissementCourant())) {
log.error "Impossible de déposer les fichiers : Une synchronisation est " +
"en cours."
def messageErreur ->
msg += messageErreur + '<br/>'
}
- String reponseJson = """{ success:false, messagesErreurs:"$msg"}"""
- render(reponseJson)
- return
+ reponseJson = """{ success:false, messagesErreurs:"$msg"}"""
}
-
- stsImportDonneesManagerService.envoieDonneesAImporter(
- etablissement,
- importStsEmp.inputStream,
- importEmpSts.inputStream
- )
-
- def texte
- if (params.message == message(code: 'eliot.import-temps.message.fichiersNonDeposes')) {
- texte = message(code: 'eliot.import-temps.message.submitSuccess')
- }
- else {
- texte = message(code: 'eliot.import-temps.message.submitSuccessRemplacer')
- }
- String message = """{success:true, msg: '${texte}' }"""
- render(message)
+ reponseJson
}
+
/**
* Retourne la liste des établissements pour lesquels l'acteur est directeur
*/
}
}
- String reponseJsonAsHtml
+ String reponseJson
if (messages.size() > 0) {
messages.each {
String messageErreur ->
msg += messageErreur + '<br/>'
}
- reponseJsonAsHtml = "{ success:false, messagesErreurs:\"$msg\"}"
-
- render(reponseJsonAsHtml)
- } else {
- String reponseJson = "{success: ${true}, messages: \"success\"}"
- render reponseJson
+ reponseJson = "{ success:false, messagesErreurs:\"$msg\"}"
+ }
+ else {
+ reponseJson = "{success: ${true}, messages: \"success\"}"
}
+
+ render(reponseJson)
}
protected List getBreadCrumbsInfo() {
import org.lilie.services.eliot.scolarite.AbstractScolariteController
import org.lilie.services.eliot.scolarite.matiere.MatiereCodeGestionUniqueException
import org.lilie.services.eliot.EliotConstantes
-import org.lilie.services.eliot.exception.SuppresionEchoueException
import org.lilie.services.eliot.scolarite.matiere.MatiereNonSupprimableException
import org.lilie.services.eliot.scolarite.matiere.MatiereService
import org.lilie.services.eliot.scolarite.OrigineEnum
import org.lilie.services.eliot.scolarite.ScolariteFonctionnalites
+import org.lilie.services.eliot.securite.AutorisationException
class MatiereController extends AbstractScolariteController {
-
MatiereService matiereService
+
+
/**
* creer une matiere
* @author mjao
*/
-
def creeMatiere = {
Matiere mat = null
String code = params.code
String libelle = params.libelle
Boolean specialite = (params.specialite == 'true')
+
try {
verifieDroitFonctionnalite(ScolariteFonctionnalites.SCOL_PARAM_MATIERES)
+ verifieDroitAccesObjetDomaine(etablissementCourant())
- mat = matiereService.creeMatiereManuel(securiteSession,
+ mat = matiereService.creeMatiereManuel(
etablissementCourant(),
code,
libelle,
modalite: false,
specialite: mat.specialite
)
+
msg = message(code: 'eliot.scolarite.messages.matiereCreerSucces')
- } catch (MatiereCodeGestionUniqueException e) {
+ }
+ catch (MatiereCodeGestionUniqueException e) {
msg = message(code: 'eliot.scolarite.messages.matiereCreationcodeGestionNonUnique')
sauvegardeOk = false
-
- } catch (Exception e) {
- msg = message(code: 'eliot.scolarite.messages.matiereSauvegardeEchou')
+ }
+ catch (AutorisationException e) {
+ log.error("Erreur lors de création de la matière code=${params.code}", e)
+ msg = message(code: 'eliot.scolarite.message.AutorisationException')
sauvegardeOk = false
}
+
render(wrapResultat {
Map resultat = [:]
resultat['matiereInfo'] = matiereInfo
return resultat
} as JSON)
}
+
+
/**
* modifier une matiere
* @author mjao
if (matiere.origine == OrigineEnum.MANUEL) {
mat = matiereService.modifieMatiereManuel(
- securiteSession,
matiere,
code,
libelle,
}
else {
mat = matiereService.modifieMatiereAutomatique(
- securiteSession,
matiere,
libelle,
specialite
modalite: false,
specialite: mat.specialite
)
+
msg = message(code: 'eliot.scolarite.messages.matiereModifierSucces')
- } catch (MatiereCodeGestionUniqueException e) {
+ }
+ catch (MatiereCodeGestionUniqueException e) {
sauvegardeOk = false
msg = message(code: 'eliot.scolarite.messages.matiereModificationcodeGestionNonUnique')
- } catch (Exception e) {
- msg = message(code: 'eliot.scolarite.messages.matiereSauvegardeEchou')
+ }
+ catch (AutorisationException e) {
+ log.error("Erreur lors de modification de la matière id=$idMatiere", e)
+ msg = message(code: 'eliot.scolarite.message.AutorisationException')
sauvegardeOk = false
}
}
} as JSON)
}
+
/**
* supprimer une matiere
* @author mjao
String msg = ""
Boolean suppressionOk = true
String idMatiere = params.id
+
if (idMatiere == null) {
throw new IllegalArgumentException("le parametre id modalite est nulle")
}
+
Long id = Long.valueOf(idMatiere)
Matiere matiere = Matiere.get(id)
+
try {
verifieDroitFonctionnalite(ScolariteFonctionnalites.SCOL_PARAM_MATIERES)
verifieDroitAccesObjetDomaine(matiere.etablissement)
- matiereService.supprimeMatiereManuel(securiteSession, matiere)
+ matiereService.supprimeMatiereManuel(matiere)
msg = message(code: 'eliot.scolarite.messages.matiereSupprimerSucces')
- } catch (SuppresionEchoueException e) {
- suppressionOk = false
- } catch (MatiereNonSupprimableException e) {
+ }
+ catch (MatiereNonSupprimableException e) {
+ log.error("Erreur lors suppresion de la matière id=$idMatiere", e)
msg = message(code: 'eliot.scolarite.messages.EchoueMatiereSuppression')
suppressionOk = false
}
+ catch (AutorisationException e) {
+ log.error("Erreur lors de suppression de la matière id=$idMatiere", e)
+ msg = message(code: 'eliot.scolarite.message.AutorisationException')
+ suppressionOk = false
+ }
+
render(wrapResultat {
Map resultat = [:]
resultat[(EliotConstantes.JSON_SUCCESS)] = suppressionOk
} as JSON)
}
-
}
package org.lilie.services.eliot.scolarite.domaine
-/**
- * Created by IntelliJ IDEA.
- * User: jaouadi
- * Date: 3 févr. 2011
- * Time: 11:01:26
- * To change this template use File | Settings | File Templates.
- */
class MatiereInfo {
String idCompose
Long id
import org.lilie.services.eliot.EliotConstantes
import org.lilie.services.eliot.scolarite.ModaliteMatiere
import org.lilie.services.eliot.scolarite.OrigineEnum
-import org.lilie.services.eliot.exception.SuppresionEchoueException
import org.lilie.services.eliot.scolarite.matiere.MatiereNonSupprimableException
+import org.lilie.services.eliot.scolarite.ScolariteFonctionnalites
+import org.lilie.services.eliot.securite.AutorisationException
class ModaliteMatiereController extends AbstractScolariteController {
ModaliteMatiereService modaliteMatiereService
+
+
/**
* creer une sous-matiere
* @author mjao
MatiereInfo matiereInfo = null
String code = params.code
String libelle = params.libelle
+
try {
- modalite = modaliteMatiereService.creeModaliteMatiereManuel(securiteSession,
+ verifieDroitFonctionnalite(ScolariteFonctionnalites.SCOL_PARAM_MATIERES)
+ verifieDroitAccesObjetDomaine(etablissementCourant())
+
+ modalite = modaliteMatiereService.creeModaliteMatiereManuel(
etablissementCourant(),
code,
libelle)
origine: OrigineEnum.MANUEL.toString(),
modalite: true
)
+
msg = message(code: 'eliot.scolarite.messages.modaliteCreerSucces')
- } catch (MatiereCodeGestionUniqueException e) {
+ }
+ catch (MatiereCodeGestionUniqueException e) {
sauvegardeOk = false
msg = message(code: 'eliot.scolarite.messages.modaliteCreationcodeGestionNonUnique')
- } catch (Exception e) {
- msg = message(code: 'eliot.scolarite.messages.matiereSauvegardeEchou')
+ }
+ catch (AutorisationException e) {
+ log.error("Erreur lors de création de la sous-matière code=${params.code}", e)
+ msg = message(code: 'eliot.scolarite.message.AutorisationException')
sauvegardeOk = false
}
+
render(wrapResultat {
Map resultat = [:]
resultat['matiereInfo'] = matiereInfo
return resultat
} as JSON)
}
+
+
/**
* modifier une sous-matiere
* @author mjao
String idModalite = params.id
String code = params.code
String libelle = params.libelle
+
if (idModalite == null) {
throw new IllegalArgumentException("le parametre idModalite est nulle")
-
}
+
Long id = Long.valueOf(idModalite)
ModaliteMatiere modaliteMatiere = ModaliteMatiere.get(id)
+
try {
- modalite = modaliteMatiereService.modifieModaliteMatiereManuel(securiteSession,
+ verifieDroitFonctionnalite(ScolariteFonctionnalites.SCOL_PARAM_MATIERES)
+ verifieDroitAccesObjetDomaine(modaliteMatiere.etablissement)
+
+ modalite = modaliteMatiereService.modifieModaliteMatiereManuel(
modaliteMatiere,
code,
libelle)
+
msg = message(code: 'eliot.scolarite.messages.sousMatiereModifierSucces')
+
matiereInfo = new MatiereInfo(
id: modalite.id,
code: modalite.code,
modalite: true
)
- } catch (MatiereCodeGestionUniqueException e) {
+ }
+ catch (MatiereCodeGestionUniqueException e) {
msg = message(code: 'eliot.scolarite.messages.modaliteModificationcodeGestionNonUnique')
sauvegardeOk = false
- } catch (Exception e) {
- msg = message(code: 'eliot.scolarite.messages.matiereSauvegardeEchou')
+ }
+ catch (AutorisationException e) {
+ log.error("Erreur lors de modification de la sous-matière id=$idModalite", e)
+ msg = message(code: 'eliot.scolarite.message.AutorisationException')
sauvegardeOk = false
}
+
render(wrapResultat {
Map resultat = [:]
resultat['matiereInfo'] = matiereInfo
return resultat
} as JSON)
}
+
+
/**
* supprimer une sous-matiere
* @author mjao
}
Long id = Long.valueOf(idModalite)
ModaliteMatiere modaliteMatiere = ModaliteMatiere.get(id)
+
try {
- modaliteMatiereService.supprimeModaliteMatiereManuel(securiteSession, modaliteMatiere)
+ verifieDroitFonctionnalite(ScolariteFonctionnalites.SCOL_PARAM_MATIERES)
+ verifieDroitAccesObjetDomaine(modaliteMatiere.etablissement)
+
+ modaliteMatiereService.supprimeModaliteMatiereManuel(modaliteMatiere)
msg = message(code: 'eliot.scolarite.messages.modaliteSupprimerSucces')
- } catch (SuppresionEchoueException e) {
- suppressionOk = false
- } catch (MatiereNonSupprimableException e) {
+ }
+ catch (MatiereNonSupprimableException e) {
suppressionOk = false
msg = message(code: 'eliot.scolarite.messages.EchoueModaliteSuppression')
}
+ catch (AutorisationException e) {
+ log.error("Erreur lors de suppression de la sous-matière id=$idModalite", e)
+ msg = message(code: 'eliot.scolarite.message.AutorisationException')
+ suppressionOk = false
+ }
+
render(wrapResultat {
Map resultat = [:]
resultat[(EliotConstantes.JSON_SUCCESS)] = suppressionOk
//recuperer la liste des matieres
List<Matiere> listMat = matiereService.findAllMatiereByEtablissement(
- getSecuriteSession(),
etablissementCourant()
)
BackofficeConfig configBackoffice = BackofficeConfig.findByUai(backofficeConfigSaveParam.uai)
- if(configBackoffice){
+ if (configBackoffice){
updateBackofficeConfig(configBackoffice, backofficeConfigSaveParam)
}
- else
- {
+ else {
insertBackofficeConfig(backofficeConfigSaveParam)
}
}
-/**
- * Cree une nouvelle BackofficeConfig
- * @param smsFournisseurCommand , Attributs du Fournisseur
- */
+ /**
+ * Cree une nouvelle BackofficeConfig
+ * @param smsFournisseurCommand , Attributs du Fournisseur
+ */
void insertBackofficeConfig(BackofficeConfigSaveParam backofficeConfigSaveParam) {
-
new BackofficeConfig(
- uai: backofficeConfigSaveParam.uai,
- nom: backofficeConfigSaveParam.nom,
- baseEleve: backofficeConfigSaveParam.baseEleve ? BaseEleve.findByCode(backofficeConfigSaveParam.baseEleve) : null,
- lvs: backofficeConfigSaveParam.lvs,
- udt: backofficeConfigSaveParam.udt,
- nombreEleve: backofficeConfigSaveParam.nombreEleve,
- isEliotOpen: backofficeConfigSaveParam.isEliotOpen,
- isCdtOpen: backofficeConfigSaveParam.isCdtOpen
+ uai: backofficeConfigSaveParam.uai,
+ nom: backofficeConfigSaveParam.nom,
+ baseEleve: backofficeConfigSaveParam.baseEleve ? BaseEleve.findByCode(backofficeConfigSaveParam.baseEleve) : null,
+ lvs: backofficeConfigSaveParam.lvs,
+ udt: backofficeConfigSaveParam.udt,
+ nombreEleve: backofficeConfigSaveParam.nombreEleve,
+ isEliotOpen: backofficeConfigSaveParam.isEliotOpen,
+ isCdtOpen: backofficeConfigSaveParam.isCdtOpen
).save(failOnError: true, flush: true)
}
-/**
- * Mets à jour une config backoffice
- * @param configBackofficeExistant , Config existante (à mettre à jour)
- * @param backofficeConfigSaveParam , Attributs de la config
- */
+ /**
+ * Mets à jour une config backoffice
+ * @param configBackofficeExistant , Config existante (à mettre à jour)
+ * @param backofficeConfigSaveParam , Attributs de la config
+ */
void updateBackofficeConfig(BackofficeConfig configBackofficeExistant,
BackofficeConfigSaveParam backofficeConfigSaveParam) {
- boolean different =
- (backofficeConfigSaveParam.nomExists ? configBackofficeExistant.nom != backofficeConfigSaveParam.nom : false) ||
- (backofficeConfigSaveParam.baseEleveExists ? configBackofficeExistant.baseEleve != backofficeConfigSaveParam.baseEleve : false) ||
- (backofficeConfigSaveParam.lvsExists ? configBackofficeExistant.lvs != backofficeConfigSaveParam.lvs : false) ||
- (backofficeConfigSaveParam.udtExists ? configBackofficeExistant.udt != backofficeConfigSaveParam.udt : false) ||
- (backofficeConfigSaveParam.nombreEleveExists ? configBackofficeExistant.nombreEleve != backofficeConfigSaveParam.nombreEleve : false) ||
- (backofficeConfigSaveParam.isEliotOpenExists ? configBackofficeExistant.isEliotOpen != backofficeConfigSaveParam.isEliotOpen : false) ||
- (backofficeConfigSaveParam.isCdtOpenExists ? configBackofficeExistant.isCdtOpen != backofficeConfigSaveParam.isCdtOpen : false)
-
- if (!different) {
+ if (!isDifferent(backofficeConfigSaveParam, configBackofficeExistant)) {
return
}
-
configBackofficeExistant.nom = backofficeConfigSaveParam.nomExists ? backofficeConfigSaveParam.nom : configBackofficeExistant.nom
if(backofficeConfigSaveParam.baseEleveExists){
configBackofficeExistant.baseEleve = backofficeConfigSaveParam.baseEleve == null ? null : BaseEleve.findByCode(backofficeConfigSaveParam.baseEleve)
configBackofficeExistant.isEliotOpen = backofficeConfigSaveParam.isEliotOpenExists ? backofficeConfigSaveParam.isEliotOpen : configBackofficeExistant.isEliotOpen
configBackofficeExistant.isCdtOpen = backofficeConfigSaveParam.isCdtOpenExists ? backofficeConfigSaveParam.isCdtOpen : configBackofficeExistant.isCdtOpen
configBackofficeExistant.save(flush:true, failOnError:true)
+ }
+
+ private Boolean isDifferent(BackofficeConfigSaveParam backofficeConfigSaveParam,
+ BackofficeConfig configBackofficeExistant) {
+
+ return (backofficeConfigSaveParam.nomExists ? configBackofficeExistant.nom != backofficeConfigSaveParam.nom : false) ||
+ (backofficeConfigSaveParam.baseEleveExists ? configBackofficeExistant.baseEleve != backofficeConfigSaveParam.baseEleve : false) ||
+ (backofficeConfigSaveParam.lvsExists ? configBackofficeExistant.lvs != backofficeConfigSaveParam.lvs : false) ||
+ (backofficeConfigSaveParam.udtExists ? configBackofficeExistant.udt != backofficeConfigSaveParam.udt : false) ||
+ (backofficeConfigSaveParam.nombreEleveExists ? configBackofficeExistant.nombreEleve != backofficeConfigSaveParam.nombreEleve : false) ||
+ (backofficeConfigSaveParam.isEliotOpenExists ? configBackofficeExistant.isEliotOpen != backofficeConfigSaveParam.isEliotOpen : false) ||
+ (backofficeConfigSaveParam.isCdtOpenExists ? configBackofficeExistant.isCdtOpen != backofficeConfigSaveParam.isCdtOpen : false)
}
- public List listeConfigBackoffice(def filtre, def pagination){
- List configs = []
- def sql = new Sql(dataSource)
- List params = []
- StringBuilder requeteSql = new StringBuilder()
- requeteSql <<= """
+
+ private static final LISTE_CONFIG_BACKOFFICE_SQL = """
with
dernier_import_aaf as (
select
left join
evenements_en_attente on evenements_en_attente.udt_import_id = dernier_import_udt.id
where 1 = 1
- """
+ """
+
+ List listeConfigBackoffice(def filtre, def pagination){
+ List params = []
+ StringBuilder requeteSqlBuilder = new StringBuilder()
+ requeteSqlBuilder <<= LISTE_CONFIG_BACKOFFICE_SQL
if (filtre.uai){
- requeteSql <<= " and bc.uai like ?"
+ requeteSqlBuilder <<= " and bc.uai like ?"
params << filtre.uai
}
if (filtre.isEtabEliot == true){
- requeteSql <<= " and etablissement.is_eliot = ?"
+ requeteSqlBuilder <<= " and etablissement.is_eliot = ?"
params << filtre.isEtabEliot
}
if (filtre.isEtabEliot == false){
- requeteSql <<= " and etablissement.is_eliot is null"
+ requeteSqlBuilder <<= " and etablissement.is_eliot is null"
}
if (filtre.isEliotOpen != null){
- requeteSql <<= " and bc.is_eliot_open = ?"
+ requeteSqlBuilder <<= " and bc.is_eliot_open = ?"
params << filtre.isEliotOpen
}
if (filtre.isCdtOpen != null){
- requeteSql <<= " and bc.is_cdt_open = ?"
+ requeteSqlBuilder <<= " and bc.is_cdt_open = ?"
params << filtre.isCdtOpen
}
if (filtre.baseEleve){
- requeteSql <<= " and be.code = ?"
+ requeteSqlBuilder <<= " and be.code = ?"
params << filtre.baseEleve
}
if (filtre.lvs != null){
- requeteSql <<=" and bc.lvs = ?"
+ requeteSqlBuilder <<=" and bc.lvs = ?"
params << filtre.lvs
}
if (filtre.udt != null){
- requeteSql <<=" and bc.udt = ?"
+ requeteSqlBuilder <<=" and bc.udt = ?"
params << filtre.udt
}
- requeteSql <<= " order by bc.uai"
+ requeteSqlBuilder <<= " order by bc.uai"
- pagine(pagination, params, requeteSql)
+ pagine(pagination, params, requeteSqlBuilder)
+
+ return executeRequeteListeConfigBackoffice(requeteSqlBuilder.toString(), params)
+ }
+
+
+ private List executeRequeteListeConfigBackoffice(String requeteSql, ArrayList params) {
+ List configs = []
+ def sql = new Sql(dataSource)
try {
- sql.eachRow(requeteSql.toString(), params) {row ->
- Map mapImport = [:]
- mapImport.id = row.getProperty('id')
- mapImport.uai = row.getProperty('uai')
- mapImport.nom = row.getProperty('nom')
- mapImport.nombreEleve = row.getProperty('nombre_eleve')
- mapImport.udt = row.getProperty('udt')
- mapImport.lvs = row.getProperty('lvs')
- mapImport.isEliotOpen = row.getProperty('is_eliot_open')
- mapImport.isCdtOpen = row.getProperty('is_cdt_open')
- mapImport.isEtabEliot = row.getProperty('is_etab_eliot') ? true : false
- mapImport.baseEleve = row.getProperty('base_eleve')
- mapImport.debutDernierImportUdt = row.getProperty('debut_dernier_import_udt')
- mapImport.finDernierImportUdt = row.getProperty('fin_dernier_import_udt')
- mapImport.dernierImportAaf = row.getProperty('dernier_import_aaf')
- mapImport.finDernierImportUdt = dateFinImport(
+ sql.eachRow(requeteSql, params) {row ->
+ Map mapImport = [:]
+ mapImport.id = row.getProperty('id')
+ mapImport.uai = row.getProperty('uai')
+ mapImport.nom = row.getProperty('nom')
+ mapImport.nombreEleve = row.getProperty('nombre_eleve')
+ mapImport.udt = row.getProperty('udt')
+ mapImport.lvs = row.getProperty('lvs')
+ mapImport.isEliotOpen = row.getProperty('is_eliot_open')
+ mapImport.isCdtOpen = row.getProperty('is_cdt_open')
+ mapImport.isEtabEliot = row.getProperty('is_etab_eliot') ? true : false
+ mapImport.baseEleve = row.getProperty('base_eleve')
+ mapImport.debutDernierImportUdt = row.getProperty('debut_dernier_import_udt')
+ mapImport.finDernierImportUdt = row.getProperty('fin_dernier_import_udt')
+ mapImport.dernierImportAaf = row.getProperty('dernier_import_aaf')
+ mapImport.finDernierImportUdt = dateFinImport(
row.getProperty('fin_pt_dernier_import_udt'),
row.getProperty('fin_dernier_import_udt'),
row.getProperty('nbr_event_en_attente_dernier_import_udt')
- )
- configs << mapImport
- }
+ )
+ configs << mapImport
+ }
} catch (Exception e) {
throw e
} finally {
}
return formateConfigs(configs)
-
}
+
Integer compteBackofficeConfigFiltre (def filtre){
Map params = [:]
- String hql = """
- select count(distinct bo.id)
- """
+ String hql = "select count(distinct bo.id)"
hql += hqlFiltreBackofficeConfig(filtre, params)
- return BackofficeConfig.executeQuery(
- hql,
- params
- )[0]
-
-
+ return (Integer) BackofficeConfig.executeQuery(hql, params)[0]
}
}
return nbrUtilisateurs
-
}
return utilisateursFonctionUnique
}
+
private List agregeFonctionsUtilisateur (List utilisateurs){
Map fonctionsUtilisateur = [:]
return fonctionsUtilisateur.values().toList()
}
+
private List formateConfigs(List configs){
configs.each{ config ->
//Si l'import n'est pas fini on donne la date du début Pre-traitement, sinon
return configs
}
+
private String hqlFiltreBackofficeConfig(filtre, params){
String hql = """
FROM
}
+
/**
* Gère la clause union pour les requêtes sqlFiltrePersonne
*/
}
}
+
private String sqlFiltrePersonne (Map filtre, List params, String uai){
StringBuilder sql = new StringBuilder()
//Spécial Elèves
if (filtre.fonction == FonctionEnum.ELEVE.code || !filtre.fonction) {
params << uai
- requeteUnion(!filtre.fonction,
- false,
- sql,
- {sql <<= sqlFiltreEleve (filtre, params)}
- )
+ requeteUnion(!filtre.fonction, false, sql) {
+ sql <<= sqlFiltreEleve (filtre, params)
+ }
}
//Spécial Parents
if (filtre.fonction == FonctionEnum.PERS_REL_ELEVE.code || !filtre.fonction) {
params << uai
- requeteUnion(!filtre.fonction,
- false,
- sql,
- {sql <<= sqlFiltreParent (filtre, params)}
- )
+ requeteUnion(!filtre.fonction, false, sql) {
+ sql <<= sqlFiltreParent (filtre, params)
+ }
}
//Spécial Autres personnes
if (filtre.fonction != FonctionEnum.ELEVE.code &&
filtre.fonction != FonctionEnum.PERS_REL_ELEVE.code) {
params << uai
- requeteUnion(!filtre.fonction,
- true,
- sql,
- {sql <<= sqlFiltreAutrePersonne (filtre, params)}
- )
+ requeteUnion(!filtre.fonction, true, sql) {
+ sql <<= sqlFiltreAutrePersonne (filtre, params)
+ }
}
return sql.toString()
}
+
/**
* Partie Select pour les requêtes sqlFiltrePersonne
*/
"""
}
+
/**
* Partie du from commune aux requêtes sqlFiltrePersonne
*/
"""
}
+
/**
* Clause where pour les requêtes sqlFiltrePersonne
*/
}
- /**
+ /**
* Requête spéciale elèves
*/
private String sqlFiltreEleve (Map filtre, List params){
return sql.toString()
}
+
/**
* Requête spéciale parents
*/
return sql.toString()
}
+
/**
* Requête spéciale personnes autres que parents et éléve
*/
return sql.toString()
}
+
/**
* gére la pagination
*/
return BaseEleve.findAll("from BaseEleve as b order by b.code")
}
- /**
- * Liste les imports UDT
- * @param filtre (uai et debutImport : optionnels tous les 2)
- */
- List listeImportsUdt(def filtre){
-
- List importsUdt = []
- def sql = new Sql(dataSource)
- List params = []
- String requeteSql = """
+ private static final LISTE_IMPORT_UDT_SQL = """
with
evenements_traites as (
select
derniere_semaine_importee on derniere_semaine_importee.udt_import_id = i.id
where
1 = 1
- """
+ """
+
+ /**
+ * Liste les imports UDT
+ * @param filtre (uai et debutImport : optionnels tous les 2)
+ */
+ List listeImportsUdt(def filtre){
+
+ List params = []
+ String requeteSql = LISTE_IMPORT_UDT_SQL
+
if(filtre.uai) {
requeteSql += " and e.uai like ?"
params << filtre.uai
}
requeteSql += " order by i.date_debut_pre_traitement desc"
- Exception exception
+
+ return executreRequeteListeImportsUdt(requeteSql, params)
+ }
+
+
+ private List executreRequeteListeImportsUdt(String requeteSql, ArrayList params) {
+ def sql = new Sql(dataSource)
+ List importsUdt = []
+
try {
sql.eachRow(requeteSql, params) {row ->
Map mapImport = [:]
mapImport.uai = row.getProperty('uai')
mapImport.nom = row.getProperty('nom_affichage')
mapImport.debutImport = row.getProperty('date_debut_pre_traitement').toString()
- mapImport.finImport = dateFinImport(
+ mapImport.finImport = dateFinImport(
row.getProperty('date_fin_pre_traitement'),
row.getProperty('date_fin_import'),
row.getProperty('nbr_evt_en_attente')
}
return importsUdt
-
}
+
/**
* Date de fin d'import à remvoyer par listeImportsUdt
*/
- private String dateFinImport(
- Timestamp dateFinPreTraitement,
- Timestamp dateFinImport,
- Long nbrEventEnAttente
- ) {
+ private String dateFinImport(Timestamp dateFinPreTraitement,
+ Timestamp dateFinImport,
+ Long nbrEventEnAttente){
String dateARetourner = null
// Si c'est fini
+/*
+ * 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.scolarite.impression.importmodeles
import org.lilie.services.eliot.impression.constantes.TypeMedia
if (personne) {
return matiereService.findMatieresByEnseignantAndEtablissement(personne.autorite, etablissement)
} else {
- return matiereService.findAllMatiereByEtablissement(securiteSession, etablissement)
+ return matiereService.findAllMatiereByEtablissement(etablissement)
}
}