* @param params : décrit l'absence journée à enregistrer
* @return une List<AbsenceJourneeLigneInfo>
*/
- List<AbsenceJourneeLigneInfo> enregistreAbsenceJournee(AbsenceJourneeParams params)
+ public List<AbsenceJourneeLigneInfo> enregistreAbsenceJournee(AbsenceJourneeParams params)
throws AutorisationException {
List<AbsenceJourneeLigneInfo> result = []
}
}
- @SuppressWarnings('AbcComplexity')
- private void internalModifieLignesAbsenceJournee(
- List<AbsenceJourneeLigneParams> absenceJourneeLigneParams) {
+ private void internalModifieLignesAbsenceJournee(List<AbsenceJourneeLigneParams> absenceJourneeLigneParams) {
absenceJourneeLigneParams.each {
+
AbsenceJourneeLigneParams ligne ->
- ligne.appelLigne.presence = ligne.presence
- ligne.appelLigne.retard = ligne.retard
- ligne.appelLigne.commentaireArrivee = ligne.commentaireArrivee
- ligne.appelLigne.departAnticipe = ligne.departAnticipe
- ligne.appelLigne.commentaireDepart = ligne.commentaireDepart
- ligne.appelLigne.heureArrivee = ligne.heureArrivee
- ligne.appelLigne.heureDepart = ligne.heureDepart
- ligne.appelLigne.absenceJustifiee = ligne.absenceJustifiee
- ligne.appelLigne.absencePrevisionnelle = ligne.absencePrevisionnelle
- ligne.appelLigne.motif = ligne.motif
- ligne.appelLigne.autorite = ligne.personne.autorite
- ligne.appelLigne.heureDebut = ligne.debut ? ligne.debut : ligne.plageHoraire.debut
- ligne.appelLigne.heureFin = ligne.fin ? ligne.fin : ligne.plageHoraire.fin
- ligne.appelLigne.operateurSaisie = (Autorite) ligne.operateurSaisie
- ligne.appelLigne.dateSaisie = ligne.dateSaisie
- ligne.appelLigne.matiere = ligne.matiere
- ligne.appelLigne.dispense = ligne.dispense
- ligne.appelLigne = enregistreAppelLigne(ligne.appelLigne, false)
- }
- }
+ ligne.prepareInfosAppelLigne()
-/**
- * Crée la ou les absences associées à une sanction
- * @return une liste d'appelLigne
- */
- void creeAbsencesForSanction(Autorite operateurSaisie,
- Sanction sanction
- ) throws AbsenceJourneeException {
-
- if (sanction.absenceLiee) {
- if (!(sanction.debutAbsence && sanction.finAbsence)) {
- throw new AbsenceJourneeDatesObligatoiresException()
- }
- if (!sanction.motif) {
- throw new AbsenceJourneeMotifObligatoireException()
- }
- Date jourDebut = AbsencesDateUtil.getDay(sanction.debutAbsence)
- Date jourFin = AbsencesDateUtil.getDay(sanction.finAbsence)
-
- Calendar cal = Calendar.getInstance()
- for (Date jour = jourDebut; (jour <= jourFin); jour++) {
- cal.clear()
- cal.setTime(jour)
- DateUtil.setDebutJour(cal)
- Date debutJournee = cal.getTime()
- DateUtil.setFinJour(cal)
- Date finJournee = cal.getTime()
-
- PreferencesEtablissementAbsences preferences =
- preferencesEtablissementAbsencesService.getPreferencesEtablissementForEtablissement(sanction.etablissement)
+ ligne.appelLigne = enregistreAppelLigne(ligne.appelLigne, false)
- AbsenceJournee absenceJournee = findOrCreateAbsenceJournee(
- sanction.etablissement,
- jour,
- preferences
- )
- internalCreeLignesAbsenceJournee(
- absenceJournee,
- [new AbsenceJourneeLigneParams(
- personne: sanction.eleve,
- motif: sanction.motif,
- debut: (sanction.debutAbsence > debutJournee) ?
- sanction.debutAbsence : debutJournee,
- fin: (sanction.finAbsence < finJournee) ?
- sanction.finAbsence : finJournee,
- sanction: sanction,
- operateurSaisie: operateurSaisie,
- dateSaisie: new Date(),
- absenceJustifiee: true,
- absencePrevisionnelle: true,
- presence: false
- )],
- null
- )
- }
- } else {
- internalSupprimeAbsencesForSanction(sanction)
}
}
+
/**
* Crée la ou les absences associées à une punition
* @return une liste d'appelLigne
*/
- void creeAbsencesForPunition(Autorite operateurSaisie,
+ public void creeAbsencesForPunition(Autorite operateurSaisie,
Punition punition
) throws AbsenceJourneeException {
* Met à jour la ou les absences associées à la sanction
* @return la liste des appelLigne associée à la sanction
*/
- protected void internalModifieAbsencesForSanction(Autorite operateurSaisie,
+ public void internalModifieAbsencesForSanction(Autorite operateurSaisie,
Sanction sanction
) {
//on récupère les appelLigne associés
) {
List<AppelLigne> appelLignesASupprimer = []
appelLignes.each {
- Date dateDebutLigne = calculeDateDebutLigne(it)
- Date dateFinLigne = calculeDateFinLigne(it)
+ Date dateDebutLigne = AbsenceJourneeUtils.calculeDateDebutLigne(it)
+ Date dateFinLigne = AbsenceJourneeUtils.calculeDateFinLigne(it)
//On teste si la ligne est à supprimer
if ((dateFinLigne < sanction.debutAbsence) ||
//Pour chaque jour, on modifie l'appelLigne
absenceJournee.each {
AbsenceJournee jour, AppelLigne appelLigne ->
- if (isPremierJour(jour, sanction)) {
+ if (AbsenceJourneeUtils.isPremierJour(jour, sanction)) {
appelLigne.heureDebut = sanction.debutAbsence
} else {
- appelLigne.heureDebut = calculeHeureDebutDeJournee(jour)
+ appelLigne.heureDebut = AbsenceJourneeUtils.calculeHeureDebutDeJournee(jour)
}
- if (isDernierJour(jour, sanction)) {
+ if (AbsenceJourneeUtils.isDernierJour(jour, sanction)) {
appelLigne.heureFin = sanction.finAbsence
} else {
- appelLigne.heureFin = calculeHeureFinDeJournee(jour)
+ appelLigne.heureFin = AbsenceJourneeUtils.calculeHeureFinDeJournee(jour)
}
appelLigne.motif = sanction.motif
appelLigne.autorite = sanction.eleve.autorite
) {
List<AppelLigne> appelLignesASupprimer = []
appelLignes.each {
- Date dateDebutLigne = calculeDateDebutLigne(it)
- Date dateFinLigne = calculeDateFinLigne(it)
+ Date dateDebutLigne = AbsenceJourneeUtils.calculeDateDebutLigne(it)
+ Date dateFinLigne = AbsenceJourneeUtils.calculeDateFinLigne(it)
//On teste si la ligne est à supprimer
if ((dateFinLigne < punition.debutAbsence) ||
//Pour chaque jour, on modifie l'appelLigne
absenceJournee.each {
AbsenceJournee jour, AppelLigne appelLigne ->
- if (isPremierJour(jour, punition)) {
+ if (AbsenceJourneeUtils.isPremierJour(jour, punition)) {
appelLigne.heureDebut = punition.debutAbsence
} else {
- appelLigne.heureDebut = calculeHeureDebutDeJournee(jour)
+ appelLigne.heureDebut = AbsenceJourneeUtils.calculeHeureDebutDeJournee(jour)
}
- if (isDernierJour(jour, punition)) {
+ if (AbsenceJourneeUtils.isDernierJour(jour, punition)) {
appelLigne.heureFin = punition.finAbsence
} else {
- appelLigne.heureFin = calculeHeureFinDeJournee(jour)
+ appelLigne.heureFin = AbsenceJourneeUtils.calculeHeureFinDeJournee(jour)
}
appelLigne.motif = punition.motif
appelLigne.autorite = punition.eleve.autorite
return result
}
-/**
- * Retourne la date et l'heure de fin de journée de l'AbsenceJournee
- * @return la date et l'heure de fin de journée de l'AbsenceJournee
- */
- private Date calculeHeureFinDeJournee(AbsenceJournee absenceJournee) {
- Calendar cal = Calendar.getInstance()
- cal.setTime(absenceJournee.date)
- DateUtil.setFinJour(cal)
- return cal.getTime()
- }
-
-/**
- * Retourne la date et l'heure de début de journée de l'AbsenceJournee
- * @return la date et l'heure de début de journée de l'AbsenceJournee
- */
- private Date calculeHeureDebutDeJournee(AbsenceJournee absenceJournee) {
- Calendar cal = Calendar.getInstance()
- cal.setTime(absenceJournee.date)
- DateUtil.setDebutJour(cal)
- return cal.getTime()
- }
-
-/**
- * Indique si l'AbsenceJournee correspond au dernier jour de l'absence
- * associée à la sanction
- * @return un Boolean
- */
- private boolean isDernierJour(AbsenceJournee absenceJournee, Sanction sanction) {
- return DateUtil.isJoursIdentiques(absenceJournee.date, sanction.finAbsence)
- }
-
-/**
- * Indique si l'AbsenceJournee correspond au premier jour de l'absence
- * associée à la sanction
- * @return un Boolean
- */
- private boolean isPremierJour(AbsenceJournee absenceJournee, Sanction sanction) {
- return DateUtil.isJoursIdentiques(absenceJournee.date, sanction.debutAbsence)
- }
-
-/**
- * Indique si l'AbsenceJournee correspond au dernier jour de l'absence
- * associée à la punition
- * @return un Boolean
- */
- private boolean isDernierJour(AbsenceJournee absenceJournee, Punition punition) {
- return DateUtil.isJoursIdentiques(absenceJournee.date, punition.finAbsence)
- }
-
-/**
- * Indique si l'AbsenceJournee correspond au premier jour de l'absence
- * associée à la punition
- * @return un Boolean
- */
- private boolean isPremierJour(AbsenceJournee absenceJournee, Punition punition) {
- return DateUtil.isJoursIdentiques(absenceJournee.date, punition.debutAbsence)
- }
-
/**
* Construit et retourne une Map associant pour chaque AbsenceJournee,
* l'appelLigne associée à la sanction.
}
}
-/**
- * Retourne la date et heure de début d'absence
- * @return une Date
- */
- private Date calculeDateDebutLigne(AppelLigne appelLigne) {
- return DateUtil.calculeDateHeureForDateEtHeure(
- appelLigne.absenceJournee.date,
- appelLigne.heureDebut
- )
- }
-
-/**
- * Retourne la date et heure de fin d'absence
- * @return une Date
- */
- private Date calculeDateFinLigne(AppelLigne appelLigne) {
- return DateUtil.calculeDateHeureForDateEtHeure(
- appelLigne.absenceJournee.date,
- appelLigne.heureFin
- )
- }
-
/**
* Recherche ou crée l'absenceJournee correspondant à l'établissement
* et au jour donné.