[OPT] Saisie multiple optimisé
This commit is contained in:
parent
c760d3201b
commit
7fdaa31ff1
|
@ -180,12 +180,12 @@ require_once __ROOT__.'/manager/database.php';
|
||||||
/****************************************************/
|
/****************************************************/
|
||||||
case 'saisieNoteMultiple': if( permission('teacher') ){
|
case 'saisieNoteMultiple': if( permission('teacher') ){
|
||||||
|
|
||||||
$areSetParam = isset($request->notes); // les arguments existent
|
$areSetParam = isset($request->notes) && isset($request->controle); // les arguments existent
|
||||||
$typeOkParam = $areSetParam && is_array($request->notes); // si c'est des strings
|
$typeOkParam = $areSetParam && is_array($request->notes) && is_numeric($request->controle); // si c'est des strings
|
||||||
$nEmptyParam = $typeOkParam && count($request->notes) > 1; // des bon types
|
$nEmptyParam = $typeOkParam && count($request->notes) > 1; // des bon types
|
||||||
|
|
||||||
if( $nEmptyParam ){ // si tout les paramètres sont bons
|
if( $nEmptyParam ){ // si tout les paramètres sont bons
|
||||||
$answer->request = DataBase::getInstance()->saisieNoteMultiple($request->notes);
|
$answer->request = DataBase::getInstance()->saisieNoteMultiple($request->controle, $request->notes);
|
||||||
}else
|
}else
|
||||||
$answer->request = 'param_error';
|
$answer->request = 'param_error';
|
||||||
|
|
||||||
|
|
|
@ -708,28 +708,22 @@ class DataBase{
|
||||||
/******************************/
|
/******************************/
|
||||||
/*** saisie notes multiples ***/
|
/*** saisie notes multiples ***/
|
||||||
/******************************/
|
/******************************/
|
||||||
public function saisieNoteMultiple($notes){
|
public function saisieNoteMultiple($controle, $notes){
|
||||||
if( !($controleInfo=controleRepo::info($notes[0]->controle)) ) return 'unknown_controle';
|
if( !($controleInfo=controleRepo::info($controle)) ) return 'unknown_controle';
|
||||||
|
|
||||||
foreach($notes as $iter=>$note){
|
foreach($notes as $iter=>$note){
|
||||||
|
|
||||||
var_dump($note);
|
|
||||||
|
|
||||||
// on vérifie l'existence de l'étudiant et du contrôle, ainsi que la cohérence de la note (pas supérieure à la base)
|
// on vérifie l'existence de l'étudiant et du contrôle, ainsi que la cohérence de la note (pas supérieure à la base)
|
||||||
if( !($etudiantUID=userRepo::UID($note->etudiant)) ) return 'unknown_user';
|
if( !(userRepo::UID($note->etudiant)) ) return 'unknown_user';
|
||||||
if( $note->controle != $controleInfo['id'] ) return 'unknown_controle';
|
|
||||||
|
|
||||||
$notes[$iter]->semestre = $controleInfo['id_semestre'];
|
|
||||||
|
|
||||||
// si la note > base du contrôle, on supprime la note
|
// si la note > base du contrôle, on supprime la note
|
||||||
if( $note->note > $controleInfo['base'] ) return 'unknown_note';
|
if( $note->valeur > $controleInfo['base'] )
|
||||||
unset( $notes[$iter] );
|
unset( $notes[$iter] );
|
||||||
}
|
}
|
||||||
|
|
||||||
var_dump( $notes );
|
|
||||||
|
|
||||||
// saisie multiple des notes
|
// saisie multiple des notes
|
||||||
$rep = noteRepo::creerMultiple($controleUID, $notes);
|
$rep = noteRepo::creerMultiple($controleInfo['id'], $controleInfo['id_semestre'], $notes);
|
||||||
|
|
||||||
if( $rep )
|
if( $rep )
|
||||||
return 'success';
|
return 'success';
|
||||||
|
|
|
@ -225,7 +225,7 @@ function xlsx_switch_lvl1($request, $answer){
|
||||||
case 'import_notes':
|
case 'import_notes':
|
||||||
|
|
||||||
|
|
||||||
if(isset($request->docPath) && isset($request->formation) && isset($request->groupe) && isset($request->controle)) {
|
if( isset($request->docPath) ) {
|
||||||
|
|
||||||
// Récupération du nom du fichier
|
// Récupération du nom du fichier
|
||||||
|
|
||||||
|
|
|
@ -278,10 +278,19 @@ class noteRepo extends DBAccess{
|
||||||
* @return cree<Boolean> FALSE si la note n'a pas été créé
|
* @return cree<Boolean> FALSE si la note n'a pas été créé
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public static function creerMultiple($etudiant, $controle, $semestre, $valeur){
|
public static function creerMultiple($controle, $semestre, $notes){
|
||||||
|
|
||||||
|
$saisieFinie = true;
|
||||||
|
|
||||||
|
foreach($notes as $iter=>$note){
|
||||||
|
|
||||||
|
|
||||||
|
$cEtudiant = $note->etudiant;
|
||||||
|
$cValeur = $note->valeur;
|
||||||
|
|
||||||
/* [1] Premier cas : il faut créer la note de cet étudiant pour ce contrôle
|
/* [1] Premier cas : il faut créer la note de cet étudiant pour ce contrôle
|
||||||
============================================================================*/
|
============================================================================*/
|
||||||
if( !($noteUID=noteRepo::UID($etudiant, $controle)) ){
|
if( !($noteUID=noteRepo::UID($cEtudiant, $controle)) ){
|
||||||
|
|
||||||
$creationNote = DataBase::getPDO()->prepare("INSERT INTO note(id_note, id_appartenance, id_controle, valeur)
|
$creationNote = DataBase::getPDO()->prepare("INSERT INTO note(id_note, id_appartenance, id_controle, valeur)
|
||||||
VALUES(
|
VALUES(
|
||||||
|
@ -290,7 +299,7 @@ class noteRepo extends DBAccess{
|
||||||
:controle,
|
:controle,
|
||||||
:valeur
|
:valeur
|
||||||
)");
|
)");
|
||||||
$creationNote->execute(array( ':etudiant' => $etudiant, ':semestre' => $semestre, ':controle' => $controle, ':valeur' => $valeur ));
|
$creationNote->execute(array( ':etudiant' => $cEtudiant, ':semestre' => $semestre, ':controle' => $controle, ':valeur' => $cValeur ));
|
||||||
|
|
||||||
|
|
||||||
/* [2] Second cas : il faut modifier la note de cet étudiant
|
/* [2] Second cas : il faut modifier la note de cet étudiant
|
||||||
|
@ -298,13 +307,13 @@ class noteRepo extends DBAccess{
|
||||||
}else{
|
}else{
|
||||||
|
|
||||||
$modificationNote = DataBase::getPDO()->prepare("UPDATE note SET valeur = :valeur WHERE id_note = :noteUID");
|
$modificationNote = DataBase::getPDO()->prepare("UPDATE note SET valeur = :valeur WHERE id_note = :noteUID");
|
||||||
$modificationNote->execute(array( ':valeur' => $valeur, ':noteUID' => $noteUID ));
|
$modificationNote->execute(array( ':valeur' => $cValeur, ':noteUID' => $noteUID ));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* [3] On vérifie que la note a bien été créé pour cet étudiant et ce contrôle
|
/* [3] On vérifie que la note a bien été créé pour cet étudiant et ce contrôle
|
||||||
=================================================================================*/
|
=================================================================================*/
|
||||||
if( !($noteUID=noteRepo::UID($etudiant, $controle)) ) return false;
|
if( !($noteUID=noteRepo::UID($cEtudiant, $controle)) ) return false;
|
||||||
|
|
||||||
|
|
||||||
/* [4] On vérifie que la note créée a bien la valeur qu'on a attribuée
|
/* [4] On vérifie que la note créée a bien la valeur qu'on a attribuée
|
||||||
|
@ -312,7 +321,12 @@ class noteRepo extends DBAccess{
|
||||||
$verificationValeur = DataBase::getPDO()->prepare("SELECT valeur FROM note WHERE id_note = :noteUID");
|
$verificationValeur = DataBase::getPDO()->prepare("SELECT valeur FROM note WHERE id_note = :noteUID");
|
||||||
$verificationValeur->execute(array( ':noteUID' => $noteUID ));
|
$verificationValeur->execute(array( ':noteUID' => $noteUID ));
|
||||||
|
|
||||||
return ( $verificationValeur->fetch()['valeur'] == $valeur );
|
$saisieFinie = $saisieFinie && ( $verificationValeur->fetch()['valeur'] == $cValeur );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return $saisieFinie;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -202,13 +202,16 @@ if( document.querySelector('#CONTAINER section[name=controlesenseignants]') != n
|
||||||
|
|
||||||
var toutesNotes = [];
|
var toutesNotes = [];
|
||||||
|
|
||||||
|
var controleUID = null;
|
||||||
|
|
||||||
// on sélectionne toutes les valeurs contenues dans les lignes actives
|
// on sélectionne toutes les valeurs contenues dans les lignes actives
|
||||||
for( var i = 0 ; i < saisieObj.length ; i++ ){ if( /active/.test(saisieObj[i].inputEl.className) ){
|
for( var i = 0 ; i < saisieObj.length ; i++ ){ if( /active/.test(saisieObj[i].inputEl.className) ){
|
||||||
|
|
||||||
|
if( controleUID == null ) controleUID = saisieObj[i].ctrlid;
|
||||||
|
|
||||||
toutesNotes.push({
|
toutesNotes.push({
|
||||||
etudiant: saisieObj[i].userid,
|
etudiant: saisieObj[i].userid,
|
||||||
controle: saisieObj[i].ctrlid,
|
valeur: saisieObj[i].inputEl.value.replace(',', '.') // par précaution, on replace les virgules par des points pour le php (is_numeric)
|
||||||
note: saisieObj[i].inputEl.value.replace(',', '.') // par précaution, on replace les virgules par des points pour le php (is_numeric)
|
|
||||||
});
|
});
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
@ -217,6 +220,7 @@ if( document.querySelector('#CONTAINER section[name=controlesenseignants]') != n
|
||||||
var request = { // on définit la requête pour API
|
var request = { // on définit la requête pour API
|
||||||
level_0: 'career',
|
level_0: 'career',
|
||||||
level_1: 'saisieNoteMultiple',
|
level_1: 'saisieNoteMultiple',
|
||||||
|
controle: controleUID,
|
||||||
notes: toutesNotes // on donne toutes les notes
|
notes: toutesNotes // on donne toutes les notes
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue