[x] Import appréciations jury
+ sous-caté sur @career + @excelManager + export (si déjà donné, "ADM/ADJ/...", sinon "[A compléter]") + import pour un semestre + déploiement de l'application de la mention jury
This commit is contained in:
parent
be13fecb9e
commit
4c3d629edb
|
@ -346,26 +346,27 @@ class careerManager{
|
|||
|
||||
|
||||
|
||||
|
||||
/****************************************/
|
||||
/* Passage de semestre pour un étudiant */
|
||||
/****************************************/
|
||||
/**************************************************/
|
||||
/* Intégration des mentions jury pour un semestre */
|
||||
/**************************************************/
|
||||
/*
|
||||
* Cherche si un semestre de même formation
|
||||
* et de rang supérieur existe pour cette même année A
|
||||
* ou l'année suivante A+1 avec rang+1
|
||||
*
|
||||
* @semestre<int> UID du semestre en question
|
||||
* @jury<Array> Tableau contenant les étudiants et leurs mentions
|
||||
*
|
||||
*
|
||||
*/
|
||||
case 'passageSemestre': if( permission('admin') ){
|
||||
case 'applyJurySemestre': if( permission('admin') ){
|
||||
|
||||
$areSetParam = isset($request->etudiant) && isset($request->semestre); // les arguments existent
|
||||
$etudiantCheck = $areSetParam && checkParam($request->etudiant, 'utilisateur.identifiant'); // l'identifiant de l'étudiant est au bon format
|
||||
$semestreCheck = $$etudiantCheck && checkParam($request->semestre, 'auto_increment_id'); // l'id du semestre est au bon format
|
||||
$areSetParam = isset($request->semestre) && isset($request->jury); // les arguments existent
|
||||
$juryCheck = $areSetParam && checkParam($request->jury, '<array>'); // les mentions jury est au bon format
|
||||
$semestreCheck = $juryCheck && checkParam($request->semestre, 'auto_increment_id'); // le semestre est au bon format
|
||||
|
||||
|
||||
if( $semestreCheck ){ // si tout les paramètres sont bons
|
||||
$passageStatus = DataBase::getInstance()->passageSemestre($request->etudiant, $request->semestre);
|
||||
if( $creationOk )
|
||||
$integration = DataBase::getInstance()->applyJurySemestre($request->semestre, $request->jury);
|
||||
|
||||
if( $integration )
|
||||
$answer->request = 'success';
|
||||
else
|
||||
$answer->request = 'error';
|
||||
|
@ -379,8 +380,6 @@ class careerManager{
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
/***********/
|
||||
/* DEFAULT */
|
||||
/***********/
|
||||
|
|
|
@ -637,6 +637,26 @@ class DataBase{
|
|||
|
||||
|
||||
|
||||
/* Applique les mentions du jury aux étudiants d'un semestre
|
||||
*
|
||||
* @semestre<int> UID du semestre en question
|
||||
* @jury<Array> Tableau contenant les étudiants et leurs mention
|
||||
*
|
||||
*
|
||||
* @return success<Boolean> Retourne VRAI si aucune erreur n'occure, sinon retourne FAUX
|
||||
*
|
||||
*/
|
||||
public function applyJurySemestre($semestre, $jury){
|
||||
$state = true;
|
||||
foreach($jury as $ETU){
|
||||
$state = $state && DataBase::getInstance()->applyJuryTo($ETU->etudiant, $semestre, $ETU->mention) == 'success';
|
||||
}
|
||||
|
||||
return $state;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Applique la mention du jury à un étudiant d'un semestre
|
||||
*
|
||||
* @etudiant<String> UID de l'étudiant en question
|
||||
|
@ -654,7 +674,7 @@ class DataBase{
|
|||
*/
|
||||
public function applyJuryTo($etudiant, $semestre, $mention){
|
||||
|
||||
// on vérifie que le semestre et que l'étudiant existent
|
||||
// on vérifie que le semestre existe et que l'étudiant est inscrit à ce semestre
|
||||
if( !($semestreInfo=semestreRepo::info($semestre)) ) return 'unknown_semestre';
|
||||
if( !($etudiantUID=userRepo::UID($etudiant, $semestre)) ) return 'unknown_user';
|
||||
|
||||
|
@ -699,9 +719,9 @@ class DataBase{
|
|||
$appartenanceUID = groupRepo::includeAppartenance($etudiant, $rdbSemestre);
|
||||
}
|
||||
|
||||
if( isset($nextSemestre) ) var_dump('nxt: '.$nextSemestre);
|
||||
if( isset($rdbSemestre) ) var_dump('rdb: '.$rdbSemestre);
|
||||
if( isset($appartenanceUID) ) var_dump('app: '.$appartenanceUID);
|
||||
// if( isset($nextSemestre) ) var_dump('nxt: '.$nextSemestre);
|
||||
// if( isset($rdbSemestre) ) var_dump('rdb: '.$rdbSemestre);
|
||||
// if( isset($appartenanceUID) ) var_dump('app: '.$appartenanceUID);
|
||||
return 'success';
|
||||
}
|
||||
|
||||
|
|
|
@ -189,7 +189,7 @@ class groupRepo{
|
|||
public static function membres($groupeUID, $semestreUID){
|
||||
// si le groupe existe => on récupère ses utilisateurs
|
||||
// var_dump($groupeUID.' - '.$semestreUID);
|
||||
$getMembres = DataBase::getPDO()->prepare("SELECT u.identifiant, u.prenom, u.nom, u.sexe, u.mail, u.droits, s.nom as semestre, g.id_groupe, g.nom as groupe
|
||||
$getMembres = DataBase::getPDO()->prepare("SELECT u.identifiant, u.prenom, u.nom, u.sexe, u.mail, u.droits, s.nom as semestre, g.id_groupe, g.nom as groupe, app.mention
|
||||
FROM utilisateur as u, groupe as g, semestre as s, appartenance as app, formation as f
|
||||
WHERE s.id_formation = f.id_formation
|
||||
AND u.identifiant = app.id_etudiant
|
||||
|
|
|
@ -245,7 +245,7 @@ class semestreRepo{
|
|||
));
|
||||
|
||||
// on retourne les infos du semestre courant
|
||||
return DataBase::delNumeric( $getSemestreInfos->fetch(), true );
|
||||
return $getSemestreInfos->fetch();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -495,6 +495,79 @@ if( exportJury != null ){
|
|||
|
||||
|
||||
|
||||
/*******************************/
|
||||
/* GESTION DE L'IMPORT DE JURY */
|
||||
/*******************************/
|
||||
var importJury = document.querySelector('#import_jury[data-stre]');
|
||||
if( importJury != null ){
|
||||
|
||||
importJury.addEventListener('change', function(e){
|
||||
|
||||
var fileInput = importJury.children[0];
|
||||
|
||||
var semestre = parseInt( importJury.dataset.stre );
|
||||
|
||||
console.log(semestre);
|
||||
|
||||
addClass( importJury, 'loading' );
|
||||
|
||||
var file = fileInput.files[0];
|
||||
|
||||
/* [1] IMPORTATION DU FICHIER
|
||||
=======================================*/
|
||||
var fd = new FormData();
|
||||
fd.append('filename', 'import_jury');
|
||||
fd.append('file', file, file.name);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('POST', 'manager/import.php', true);
|
||||
|
||||
xhr.onreadystatechange = function(){
|
||||
if( xhr.readyState == 4 && [0, 200].indexOf(xhr.status) > -1 )
|
||||
console.log('[1] IMPORT=> '+xhr.responseText);
|
||||
if( xhr.responseText == 'success' ){
|
||||
|
||||
/* [2] LECTURE DU FICHIER
|
||||
=======================================*/
|
||||
var request = { level_0: 'excel', level_1: 'import_jury' };
|
||||
API.send(request, function(e){
|
||||
console.log('[2] PARSE=>'+e.request);
|
||||
if( e.request == 'success' ){
|
||||
|
||||
/* [3] INTÉGRATION À LA BDD
|
||||
=======================================*/
|
||||
requestIntegration = { level_0: 'career', level_1: 'applyJurySemestre', jury: e.jury, semestre: semestre };
|
||||
API.send( requestIntegration, function(f){
|
||||
console.log('[3] INTEGRATION=>'+f.request);
|
||||
if( f.request == 'success' ){
|
||||
console.log('liste intégrée');
|
||||
reload();
|
||||
}else console.log('integration error');
|
||||
});
|
||||
|
||||
}else console.log('import error');
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
xhr.send(fd);
|
||||
|
||||
}, false);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* GESTION DE PUBLICATION DES NOTES D'UN CONTRÔLE */
|
||||
var publicationControles = document.querySelectorAll('#CONTAINER > section[name=allcontroles] .confirm.center.active[data-ctrl][data-publication]');
|
||||
|
|
|
@ -193,8 +193,8 @@ if( exportInscrits != null ){
|
|||
var fSemestre = (selectedSemestre!=null) ? selectedSemestre.dataset.stre : null;
|
||||
var fAnnee = (selectedSemestre!=null) ? selectedSemestre.dataset.year : null;
|
||||
|
||||
console.log(fSemestre);
|
||||
console.log(fAnnee);
|
||||
// console.log(fSemestre);
|
||||
// console.log(fAnnee);
|
||||
|
||||
/* [1] On récupère la liste des groupes en question (groupManager)
|
||||
===================================================================*/
|
||||
|
|
|
@ -1009,7 +1009,7 @@ if( permission('master') || permission('admin') ){
|
|||
|
||||
|
||||
if( $semestreOpt != null )
|
||||
echo "<div data-stre='".$semestreOpt."' class='confirm active center'>Importer les décisions du jury<input type='file' id='import_jury'></div>";
|
||||
echo "<div id='import_jury' data-stre='".$semestreOpt."' class='confirm active center'>Importer les décisions du jury<input type='file'></div>";
|
||||
|
||||
echo "</div>";
|
||||
|
||||
|
|
Binary file not shown.
Binary file not shown.
2
test.php
2
test.php
|
@ -49,7 +49,7 @@ debug();
|
|||
|
||||
/* [1] On récupère le semestre d'un étudiant
|
||||
=====================================================*/
|
||||
// var_dump( DataBase::getInstance()->applyJuryTo('Etud100', 37, 'RDB') );
|
||||
var_dump( DataBase::getInstance()->applyJuryTo('Etud100', 72, 'ADM') );
|
||||
|
||||
|
||||
|
||||
|
|
1756
xdoc/sid.sql
1756
xdoc/sid.sql
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue