[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:
xdrm-brackets 2016-01-03 11:55:20 +01:00
parent be13fecb9e
commit 4c3d629edb
11 changed files with 965 additions and 933 deletions

View File

@ -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 */
/***********/

View File

@ -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';
}

View File

@ -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

View File

@ -245,7 +245,7 @@ class semestreRepo{
));
// on retourne les infos du semestre courant
return DataBase::delNumeric( $getSemestreInfos->fetch(), true );
return $getSemestreInfos->fetch();
}

View File

@ -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]');

View File

@ -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)
===================================================================*/

View File

@ -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.

BIN
src/files/admin2_import_jury.xlsx Executable file

Binary file not shown.

View File

@ -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') );

File diff suppressed because it is too large Load Diff