import org.lilie.services.eliot.annuaire.SecuriteSession\r
import org.lilie.services.eliot.impression.donnees.eleve.brevet.BrevetImpression\r
import org.lilie.services.eliot.impression.ImpressionRequetageService\r
-import org.lilie.services.eliot.notes.brevet.BrevetNoteService\r
import org.lilie.services.eliot.brevet.BrevetNote\r
import org.lilie.services.eliot.impression.donnees.eleve.brevet.BrevetLigneImpression\r
import org.lilie.services.eliot.notes.brevet.BrevetClasseService\r
\r
ImpressionRequetageService impressionRequetageService\r
BrevetClasseService brevetClasseService\r
- BrevetNoteService brevetNoteService\r
LocalStructureEnseignementService localStructureEnseignementService\r
BrevetFicheService brevetFicheService\r
\r
import org.lilie.services.eliot.scolarite.Etablissement
import org.lilie.services.eliot.utils.NoteFormateur
+import org.lilie.services.eliot.notes.resultat.NotesDirtyMoyenneService
/**
* Proprietes d'etablissements specifiques a eliot-notes
static transactional = true
+ NotesDirtyMoyenneService notesDirtyMoyenneService
+
/**
* Recupere la precision pour un etablissement donne
- * @param etablissement
- * @return
*/
BigDecimal getPrecision(Etablissement etablissement) {
return etablissement?.etablissementNotes?.precision
/**
* Positionne la precision pour un etablissement donne
- * @param etablissement
- * @return
*/
void setPrecision(Etablissement etablissement, BigDecimal precision) {
- etablissement.etablissementNotes.precision = precision
- etablissement.save(flush: true, failOnError: true)
+ if (etablissement.etablissementNotes.precision != precision) {
+
+ // Un recalcul des moyennes pour tout l'établissement est nécessaire
+ // afin de mettre à jour les rangs dépendant de la précision
+ notesDirtyMoyenneService.marqueChangementEtablissement(etablissement)
+
+ etablissement.etablissementNotes.precision = precision
+ etablissement.save(flush: true, failOnError: true)
+ }
}
/**
* Recupere le NoteFormateur pour un etablissement donne
- * @param etablissement
- * @return
*/
NoteFormateur getNoteFormateur(Etablissement etablissement,
String separateurDecimal = ',') {
import org.hibernate.FetchMode
import org.lilie.services.eliot.ArgumentUtils
import org.lilie.services.eliot.notes.scolarite.NotesSousServiceService
+import org.hibernate.SessionFactory
+import org.lilie.services.eliot.scolarite.Etablissement
/**
* Service pour marquer que les données source d'une moyenne ont chagé.
NotesHibernateSessionService notesHibernateSessionService
LocalStructureEnseignementService localStructureEnseignementService
+ SessionFactory sessionFactory
+
/**
* DirtyMoyennes d'une classe OU des élèves donnés pour les périodes de la classe.
*
* Utilisé pour chercher les moyennes à recaluler.
*
- * @param classe
- * @param eleves
* @param dateDebutDernierCalcul date de début de dernièr calcul des moyennes pour la classe donnée
- * @return
* @author msan
* @author bper
*/
/**
* Marque changements d'un enseignement
- * @param eleves
- * @param enseignement
- * @param periodes
*/
void marqueChangementsEnseignement(List<Autorite> eleves,
List<Enseignement> enseignements,
/**
* Marque changements des sous-services
- * @param eleves
- * @param classe
- * @param sousServices
* @param periodes périodes à marquer (restraint le group des sous-services qui sont marqués)
*/
void marqueChangementsSousServices(List<Autorite> eleves,
/**
* Marque changements des moyennes sur tous les services
- * @param eleves
- * @param periodes
*/
void marqueChangementsTousServices(List<Autorite> eleves, List<Periode> periodes) {
eleves.each { Autorite eleve ->
/**
* Marque changements des moyennes d'un service
- * @param eleves
- * @param service
- * @param periodes
*/
void marqueChangementsService(List<Autorite> eleves, Service service, List<Periode> periodes) {
eleves.each { Autorite eleve ->
/**
* Supprime DMs par SousServices
- * @param sousServices
- * @param utiliseExecuteUpdate
* @author msan
*/
void internalSupprimeParSousServices(List<SousService> sousServices,
/**
* Supprime DMs par Services
- * @param Services
* @author msan
*/
void internalSupprimeParServices(List<Service> services) {
/**
* Supprime DMs par periodes
- * @param periodes
* @author msan
*/
void internalSupprimeParPeriodes(List<Periode> periodes) {
/**
* Supprime DMs par enseignements
- * @param enseignements
* @author msan
*/
void internalSupprimeParEnseignements(List<Enseignement> enseignements) {
/**
* Supprime toutes les DMs des élèves pour les sous-services donnés.
- * @param eleves
- * @param sousServices
* @author msan
* @author bper
*/
/**
* Supprime toutes les DMs pour les classes et les sous-services donnés.
- * @param classes
- * @param sousServices
* @author bper
*/
void internalSupprimeByClassesAndSousServices(List<StructureEnseignement> classes,
/**
* Supprime toutes les DMs des élèves pour les enseignements donnés.
- * @param eleves
- * @param enseignements
* @author msan
* @author bper
*/
/**
* Supprime toutes les DMs des élèves pour les services donnés.
- * @param eleves
- * @param services
* @author msan
* @author bper
*/
}
}
+ /**
+ * Force à recalculer toutes les moyennes d'un établissement.
+ */
+ void marqueChangementEtablissement(Etablissement etablissement) {
+
+ List<DirtyMoyenne> dms = DirtyMoyenne.createCriteria().list {
+
+ or {
+ classe {
+ eq('etablissement', etablissement)
+ }
+
+ periode {
+ classe {
+ eq('etablissement', etablissement)
+ }
+ }
+ }
+
+ }
+
+ dms*.dateChangement = new Date()
+
+ dms*.save(failOnError: true)
+
+ sessionFactory.currentSession.flush()
+ }
+
}