Long id
String uai
- Boolean lvs = false
- Boolean udt = false
+ Boolean lvs
+ Boolean udt
Integer nombreEleve
String nom
BaseEleve baseEleve
+ Boolean isEliotOpen
static belongsTo = [baseEleve:BaseEleve]
nom(nullable: true)
udt(nullable: true)
lvs(nullable: true)
+ isEliotOpen(nullable:true)
}
--- /dev/null
+package org.lilie.services.eliot.scolarite
+
+class ImportAAF {
+
+ Long id
+ String typeImport
+ String typeFichier
+ String nomFichier
+ String codeAnneeScolaire
+ String stats
+ Long indiceFichier
+ Date dateExportFichier
+ Date dateImport
+ String porteur
+ String academie
+
+
+ static constraints = {
+ typeImport (maxSize: 32 )
+ typeFichier (maxSize: 32 )
+ nomFichier (maxSize: 1024 )
+ codeAnneeScolaire (maxSize: 16 )
+ stats (nullable: true )
+ indiceFichier (nullable: true)
+ dateExportFichier (nullable: true)
+ porteur (nullable: true, maxSize: 128)
+ academie (nullable: true, maxSize: 128)
+ }
+
+
+ static mapping = {
+ table('aaf.import')
+ id column: 'id', generator: 'sequence', params: [sequence: 'aaf.import_id_seq']
+ }
+}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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>.
+ -->
+
+<databaseChangeLog
+ xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">
+
+ <changeSet id="1" author="jcok">
+
+ <comment>
+ Ajout de la colonne is_eliot_open à la table backoffice_config afin de savoir si un établissement est encore actif
+ </comment>
+
+ <addColumn schemaName="backoffice" tableName="backoffice_config">
+ <column name="is_eliot_open"
+ type="boolean"
+ >
+ </column>
+ </addColumn>
+
+ </changeSet>
+
+</databaseChangeLog>
<include file="changelogs/scolarite/2012-10-16-0022502.xml"/>
<include file="changelogs/scolarite/2012-10-02-0022504.xml"/>
<include file="changelogs/scolarite/2012-10-11-0022504.xml"/>
+ <include file="changelogs/scolarite/2012-10-25-0023290.xml"/>
</databaseChangeLog>
+
*/
class RestUtil {
- static final String FORCE_NULL = "&%3#{{{{{{}}}}"
- static final Integer FORCE_NULL_INTEGER = -198765
+ private static final LOG = LogFactory.getLog(this)
/**
* Construit le message d'erreur qui sera affiché dans le body de la http response
package org.lilie.services.eliot.api.backoffice
import org.codehaus.groovy.grails.web.json.JSONObject
-import org.lilie.services.eliot.api.RestUtil
/**
* @author obon
* d'un etablissement ( Config ) destiné aux applications marketing
* A sa construction, le DTO permet de s'attribuer les objets JSON de la requête http
*/
-class BackofficeConfigSaveParam {
+class BackofficeConfigSaveParam{
String uai
+
String nom
+ Boolean nomExists = false
+
String baseEleve
+ Boolean baseEleveExists = false
+
Boolean lvs
+ Boolean lvsExists = false
+
Boolean udt
+ Boolean udtExists = false
+
Integer nombreEleve
+ Boolean nombreEleveExists = false
+
+ Boolean isEliotOpen
+ Boolean isEliotOpenExists = false
+
def BackofficeConfigSaveParam() {
}
def BackofficeConfigSaveParam(JSONObject json) {
+
uai = json.uai
- if (json.has('nom')){
- if (json.isNull('nom')){
- nom = RestUtil.FORCE_NULL
- }
- else
- {
+ if(json.has('nom')){
+ nomExists = true
+ if(!json.isNull('nom') && json.nom){
nom = json.nom
}
}
- else{
- nom = null
+
+ if(json.has('baseEleve')){
+ baseEleveExists = true
+ baseEleve = json.baseEleve
}
- baseEleve = json.baseEleve
- lvs = json.lvs
- udt = json.udt
- if (json.has('nombreEleve')){
- if (json.isNull('nombreEleve')||json.nombreEleve == ''){
- nombreEleve = RestUtil.FORCE_NULL_INTEGER
+ if(json.has('lvs')){
+ lvsExists = true
+ if(json.lvs == true || json.lvs == false){
+ lvs = json.lvs
}
- else
- {
- nombreEleve = json.nombreEleve.toInteger()
+ }
+
+ if(json.has('udt')){
+ udtExists = true
+ if(json.udt == true || json.udt == false){
+ udt = json.udt
}
}
- else{
- nombreEleve = null
+
+ if(json.has('nombreEleve') && json.nombreEleve instanceof Integer){
+ nombreEleveExists = true
+ nombreEleve = json.nombreEleve
}
+
+ if(json.has('isEliotOpen')){
+ isEliotOpenExists = true
+ if(json.isEliotOpen == true || json.isEliotOpen == false){
+ isEliotOpen = json.isEliotOpen
+ }
+ }
+
}
static constraints = {
nom(nullable: true)
baseEleve(nullable: true)
nombreEleve(nullable: true)
+ lvs(nullable: true)
+ udt(nullable: true)
+ isEliotOpen(nullable: true)
+
}
}
\ No newline at end of file
package org.lilie.services.eliot.backoffice
import org.lilie.services.eliot.api.backoffice.BackofficeConfigSaveParam
-import org.lilie.services.eliot.scolarite.Etablissement
import org.lilie.services.eliot.annuaire.PersonneProprietesScolarite
-import org.lilie.services.eliot.api.RestUtil
class BackofficeService {
-// /**
-// * Récupère une entrée dans la table sms_fournisseur
-// * @param name
-// * @return SmsFournisseur
-// */
-// public SmsFournisseur smsFournisseurByName(String name) {
-// def c = SmsFournisseur.createCriteria()
-// SmsFournisseur result = c.get {
-// like('nom', name)
-// }
-// if (result?.id) {
-// return result
-// }
-// return null
-// }
-
/**
* Création ou mise à jour d'une config d'établissement pour le back-office
* @param configList
*/
void insertBackofficeConfig(BackofficeConfigSaveParam backofficeConfigSaveParam) {
- BaseEleve.findByCode(backofficeConfigSaveParam.baseEleve)
new BackofficeConfig(
uai: backofficeConfigSaveParam.uai,
nom: backofficeConfigSaveParam.nom,
- baseEleve: BaseEleve.findByCode(backofficeConfigSaveParam.baseEleve),
+ baseEleve: backofficeConfigSaveParam.baseEleve ? BaseEleve.findByCode(backofficeConfigSaveParam.baseEleve) : null,
lvs: backofficeConfigSaveParam.lvs,
udt: backofficeConfigSaveParam.udt,
- nombreEleve: backofficeConfigSaveParam.nombreEleve
+ nombreEleve: backofficeConfigSaveParam.nombreEleve,
+ isEliotOpen: backofficeConfigSaveParam.isEliotOpen
).save(failOnError: true, flush: true)
}
BackofficeConfigSaveParam backofficeConfigSaveParam) {
boolean different =
- configBackofficeExistant.nom != backofficeConfigSaveParam.nom ||
- configBackofficeExistant.baseEleve?.code != backofficeConfigSaveParam.baseEleve ||
- configBackofficeExistant.lvs != backofficeConfigSaveParam.lvs ||
- configBackofficeExistant.udt != backofficeConfigSaveParam.udt ||
- configBackofficeExistant.nombreEleve != backofficeConfigSaveParam.nombreEleve
-
+ (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)
if (!different) {
return
}
- configBackofficeExistant.nom = backofficeConfigSaveParam.nom ?: configBackofficeExistant.nom
- configBackofficeExistant.nom = (configBackofficeExistant.nom == RestUtil.FORCE_NULL) ? null : configBackofficeExistant.nom
- configBackofficeExistant.baseEleve = BaseEleve.findByCode(backofficeConfigSaveParam.baseEleve)
- configBackofficeExistant.lvs = backofficeConfigSaveParam.lvs
- configBackofficeExistant.udt = backofficeConfigSaveParam.udt
- configBackofficeExistant.nombreEleve = backofficeConfigSaveParam.nombreEleve ?: configBackofficeExistant.nombreEleve
- configBackofficeExistant.nombreEleve = (configBackofficeExistant.nombreEleve == RestUtil.FORCE_NULL_INTEGER) ? null : configBackofficeExistant.nombreEleve
+
+ configBackofficeExistant.nom = backofficeConfigSaveParam.nomExists ? backofficeConfigSaveParam.nom : configBackofficeExistant.nom
+ if(backofficeConfigSaveParam.baseEleveExists){
+ configBackofficeExistant.baseEleve = backofficeConfigSaveParam.baseEleve == null ? null : BaseEleve.findByCode(backofficeConfigSaveParam.baseEleve)
+ }
+ configBackofficeExistant.lvs = backofficeConfigSaveParam.lvsExists ? backofficeConfigSaveParam.lvs : configBackofficeExistant.lvs
+ configBackofficeExistant.udt = backofficeConfigSaveParam.udtExists ? backofficeConfigSaveParam.udt : configBackofficeExistant.udt
+ configBackofficeExistant.nombreEleve = backofficeConfigSaveParam.nombreEleveExists ? backofficeConfigSaveParam.nombreEleve : configBackofficeExistant.nombreEleve
+ configBackofficeExistant.isEliotOpen = backofficeConfigSaveParam.isEliotOpenExists ? backofficeConfigSaveParam.isEliotOpen : configBackofficeExistant.isEliotOpen
configBackofficeExistant.save(flush:true, failOnError:true)
}
bo.lvs as lvs,
bo.udt as udt,
bo.nombreEleve as nombreEleve,
+ bo.isEliotOpen
( SELECT 'true'
FROM Etablissement as e
WHERE e.uai = bo.uai
- ) as isEtabEliot )
+ ) as isEtabEliot,
+ ( select
+ case
+ when dateFinImport is null
+ then ('Début: ' || dateDebutPreTraitement)
+ else ('Fin: ' || dateFinImport)
+ end
+ from
+ UdtImport
+ where
+ id in (
+ select max(i.id)
+ from UdtImport as i
+ join i.etablissement as e
+ where e.uai = bo.uai
+ )
+ ) as dernierImportUdt,
+ (
+ select max(dateImport) from ImportAAF
+ where academie = bo.uai
+ ) as dernierImportAaf
+ )
"""
hql += hqlFiltreBackofficeConfig(filtre,params)
params["udt"]=filtre.udt
}
- return hql
+ return hql
}