Intégration+déploiement de la création de semestre/formation

This commit is contained in:
xdrm-brackets 2015-11-22 15:00:18 +01:00
parent 9a013ef071
commit 1272d1a4cd
4 changed files with 160 additions and 7 deletions

View File

@ -219,6 +219,52 @@ require_once __ROOT__.'/manager/database.php';
/**************************/
/* création d'un semestre */
/**************************/
/*
* CRÉATION DU SEMESTRE D'UNE FORMATION DONNÉE
* - si code formation non référencé => on créé la formation
* - si rang+annee+formation du semestre non référencé => on créé le semestre
* + sinon on modifie juste le nom (même si identique)
*
*/
case 'creerSemestre': if( permission('admin') ){
$areSetParam = isset($request->annee) && isset($request->formation) && isset($request->nom_formation) && isset($request->semestre) && isset($request->rang); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->formation) && is_string($request->nom_formation) && is_string($request->semestre); // si c'est des strings
$nEmptyParam = $typeOkParam && strlen($request->formation) > 0 && strlen($request->nom_formation) > 0 && strlen($request->semestre) > 0 && is_numeric($request->annee) && is_numeric($request->rang); // des bon types
$anneeCheck = $nEmptyParam && preg_match('/[0-4]/i', $request->annee); // l'année est au bon format
$formationCheck = $anneeCheck && preg_match('/[\w]{0,10}/i', $request->formation); // le code de la formation est au bon format
$nomFormationCheck = $formationCheck && preg_match('/[\w ]{0,100}/i', $request->nom_formation); // le nom de la formation est au bon format
$semestreCheck = $nomFormationCheck && preg_match('/[\w -]{0,10}/i', $request->semestre); // le nom du semestre est au bon format
$rangCheck = $semestreCheck && preg_match('/\d/i', $request->rang); // l'année est au bon format
if( $rangCheck ){ // si tout les paramètres sont bons
$creationOk = DataBase::getInstance()->creerSemestre($request->formation, $request->nom_formation, $request->semestre, $request->rang, $request->annee);
if( $creationOk )
$answer->request = 'success';
else
$answer->request = 'error';
}else
$answer->request = 'param_error';
}else
$answer->request = 'permission_error';
break;
/***********/ /***********/
/* DEFAULT */ /* DEFAULT */
/***********/ /***********/

View File

@ -145,6 +145,28 @@ class DataBase{
} }
/* créé un semestre/formation dans la BDD
*
* @codeFormation<String> le code/nom de la formation
* @nomFormation<String> le libellé de la formation
* @nomSemestre<String> le nom/libellé du semestre
* @rangSemestre<int> le rang du semestre dans la formation
* @annee<int> l'année du semestre
*
*
* @return cree<Boolean> retourne VRAI si les éléments existaient ou ont bien été créés
*
*/
public static function creerSemestre($codeFormation, $nomFormation, $nomSemestre, $rangSemestre, $annee){
// si on a tout créé ou que tout existe "creer" retourne l'UID du semestre,
// si on a un boolean c'est FALSE => erreur
//
if( !is_bool(semestreRepo::creer($codeFormation, $nomFormation, $nomSemestre, $rangSemestre, $annee)) )
return true;
else
return false;
}
/*************************************************************************************/ /*************************************************************************************/

View File

@ -218,4 +218,86 @@ class semestreRepo extends DBAccess{
} }
/* retourne l'UID d'un semestre s'il existe sinon créé tout ce qui a besoin et on retourne l'UID
*
* @codeFormation<String> le code/nom de la formation
* @nomFormation<String> le libellé de la formation
* @nomSemestre<String> le nom/libellé du semestre
* @rangSemestre<int> le rang du semestre dans la formation
* @annee<int> l'année du semestre
*
*
* @return UID<int> retourne l'UID du semestre si tout s'est bien passé
* @return FALSE<Boolean> retourne FALSE s'il y a eu une erreur
*
*/
public static function creer($codeFormation, $nomFormation, $nomSemestre, $rangSemestre, $annee){
$count = 0; $maxLoop = 2;
/* [1] On vérifie l'existence de la formation (code uniquement)
====================================================================================*/
$getFormationUID = DataBase::getPDO()->prepare("SELECT f.id_formation as id
FROM formation as f
WHERE f.code = :code");
$getFormationUID->execute(array( ':code' => $codeFormation ));
while( !($formationUID=$getFormationUID->fetch()['id']) ){
/* [2] on créé la formation car elle n'existe pas
================================================================================*/
$creerFormation = DataBase::getPDO()->prepare("INSERT INTO formation(id_formation, code, nom, nb_semestres)
VALUES(DEFAULT, :code, :nom, 2)");
$creerFormation->execute(array( ':code' => $codeFormation, ':nom' => $nomFormation ));
if( $count >= $maxLoop ) return false;
$count++;
$getFormationUID = DataBase::getPDO()->prepare("SELECT f.id_formation as id
FROM formation as f
WHERE f.code = :code");
$getFormationUID->execute(array( ':code' => $codeFormation ));
}
/* [3] On vérifie l'existence du semestre (rang, annee, nom, formation)
====================================================================================*/
$getSemestreUID = DataBase::getPDO()->prepare("SELECT s.id_semestre as id
FROM semestre as s, formation as f
WHERE s.id_formation = f.id_formation
AND f.id_formation = :formationUID
AND s.nom = :nom
AND s.rang = :rang
AND s.annee = :annee");
$getSemestreUID->execute(array( ':formationUID' => $formationUID, ':nom' => $nomSemestre, ':rang' => $rangSemestre, ':annee' => $annee ));
while( !($semestreUID = $getSemestreUID->fetch()['id']) ){
/* [4] on créé le semestre car il n'existe pas
================================================================================*/
$creerSemestre = DataBase::getPDO()->prepare("INSERT INTO semestre(id_semestre, id_formation, nom, rang, annee)
VALUES(DEFAULT, :formationUID, :nom, :rang, :annee)");
$creerSemestre->execute(array( ':formationUID' => $formationUID, ':nom' => $nomSemestre, ':rang' => $rangSemestre, ':annee' => $annee ));
if( $count >= $maxLoop ) return false;
$count++;
$getSemestreUID = DataBase::getPDO()->prepare("SELECT s.id_semestre as id
FROM semestre as s, formation as f
WHERE s.id_formation = f.id_formation
AND f.id_formation = :formationUID
AND s.nom = :nom
AND s.rang = :rang
AND s.annee = :annee");
$getSemestreUID->execute(array( ':formationUID' => $formationUID, ':nom' => $nomSemestre, ':rang' => $rangSemestre, ':annee' => $annee ));
}
return $semestreUID;
}
} }

View File

@ -189,9 +189,11 @@ if( importMcc != null ){
var creerSemestre = document.getElementById('creer_semestre'); var creerSemestre = document.getElementById('creer_semestre');
creerSemestre.addEventListener('click', function(e){ creerSemestre.addEventListener('click', function(e){
addClass( creerSemestre, 'loading' );
var form = creerSemestre.parentNode; var form = creerSemestre.parentNode;
var fAnnee = form.children[2].value; var fAnnee = form.children[2].value;
var fCursus = form.children[4].value; var fFormation = form.children[4].value;
var fLibelle = form.children[6].value; var fLibelle = form.children[6].value;
var fSemestre = form.children[8].value; var fSemestre = form.children[8].value;
var fRang = form.children[10].value; var fRang = form.children[10].value;
@ -200,14 +202,15 @@ creerSemestre.addEventListener('click', function(e){
level_0: 'career', level_0: 'career',
level_1: 'creerSemestre', level_1: 'creerSemestre',
annee: fAnnee, annee: fAnnee,
formation: fCursus, formation: fFormation,
nom_formation: fLibelle, nom_formation: fLibelle,
semestre: fSemestre, semestre: fSemestre,
rang: fRang rang: fRang
} }
API.send(request, function(e){ API.send(request, function(e){
console.log( e ); if( e.request == 'success' )
reload();
}); });