import org.lilie.services.eliot.sms.SmsStatut
import org.lilie.services.eliot.absences.AbsencesFonctionnalite
import org.lilie.services.eliot.CodeComparator
+import org.codehaus.groovy.grails.web.servlet.mvc.GrailsParameterMap
+import org.lilie.services.eliot.export.DonneesPourExportCSV
/**
* Suivi du publipostage
def recherche = {
verifieDroitFonctionnalite(AbsencesFonctionnalite.ABS_PUBLIPOSTAGE)
+ render recherche(params) as JSON
+ }
+
+ def exporteDonnees = {
+
+ verifieDroitFonctionnalite(AbsencesFonctionnalite.ABS_PUBLIPOSTAGE)
+
+ // créer un objet DonneesPourExportCSV
+ DonneesPourExportCSV donneesPourExportCSV = new DonneesPourExportCSV()
+ // parser les paramètres
+ Map mapParams = (Map) JSON.parse(params.params)
+ // recalculer le tableau
+ Map donneesDuTableau = recherche(params)
+ // vérifier les colonnes sélectionnées pour l'affichage
+ List<Integer> colonnesSelectionneesIds = mapParams.colonnes?.toList()
+ boolean colonneDateHeureSelectionnee = colonnesSelectionneesIds ?
+ colonnesSelectionneesIds.contains(SuiviEleveColonnesEnum.DATE_HEURE.id) : true
+ boolean colonneNomSelectionnee = colonnesSelectionneesIds ?
+ colonnesSelectionneesIds.contains(SuiviEleveColonnesEnum.NOM.id) : true
+ boolean colonneClasseSelectionnee = colonnesSelectionneesIds ?
+ colonnesSelectionneesIds.contains(SuiviEleveColonnesEnum.CLASSE.id) : true
+ boolean colonneSupportSelectionnee = colonnesSelectionneesIds ?
+ colonnesSelectionneesIds.contains(SuiviEleveColonnesEnum.SUPPORT.id) : true
+ boolean colonneModeleSelectionnee = colonnesSelectionneesIds ?
+ colonnesSelectionneesIds.contains(SuiviEleveColonnesEnum.MODELE.id) : true
+ // définir les colonnes en créant une liste de String contenant le nom de chaque colonne
+ if (colonneDateHeureSelectionnee){
+ donneesPourExportCSV.colonnes << message(code: 'eliot.notes.libelle.dateHeure', default: 'Date heure')
+ }
+ if (colonneNomSelectionnee){
+ donneesPourExportCSV.colonnes << message(code: 'eliot.notes.libelle.nom', default: 'Nom')
+ }
+ if (colonneClasseSelectionnee){
+ donneesPourExportCSV.colonnes << message(code: 'eliot.notes.libelle.classe', default: 'Classe')
+ }
+ if (colonneSupportSelectionnee){
+ donneesPourExportCSV.colonnes << message(code: 'eliot.notes.libelle.support', default: 'Support')
+ }
+ if (colonneModeleSelectionnee){
+ donneesPourExportCSV.colonnes << message(code: 'eliot.notes.libelle.modele', default: 'Modèle')
+ }
+ // formater les données du tableau tel que pour chaque ligne, on a une liste de valeurs, dans l'ordre des colonnes du tableau
+ donneesDuTableau.data.each{
+ List ligne = []
+ if (colonneDateHeureSelectionnee) ligne.add(it.date)
+ if (colonneNomSelectionnee) ligne.add(it.nom)
+ if (colonneClasseSelectionnee) ligne.add(it.classe)
+ if (colonneSupportSelectionnee) ligne.add(it.type)
+ if (colonneModeleSelectionnee) ligne.add(it.modele)
+ donneesPourExportCSV.lignes << ligne
+ }
+ // réaliser l'export
+ sendCsvFile(response, donneesPourExportCSV, "Suivi par élève")
+
+ }
+
+ private Map recherche(GrailsParameterMap params){
+
int start
Map sortInfo
Map mapParams = (Map) JSON.parse(params.params)
List<PublipostageSuivi> suivis = listeEnvoi.liste
- render construitResult(suivis, listeEnvoi) as JSON
+ return construitResult(suivis, listeEnvoi)
}
/**