[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') ){
|
||||
|
||||
$areSetParam = isset($request->notes); // les arguments existent
|
||||
$typeOkParam = $areSetParam && is_array($request->notes); // si c'est des strings
|
||||
$areSetParam = isset($request->notes) && isset($request->controle); // les arguments existent
|
||||
$typeOkParam = $areSetParam && is_array($request->notes) && is_numeric($request->controle); // si c'est des strings
|
||||
$nEmptyParam = $typeOkParam && count($request->notes) > 1; // des bon types
|
||||
|
||||
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
|
||||
$answer->request = 'param_error';
|
||||
|
||||
|
|
|
@ -708,28 +708,22 @@ class DataBase{
|
|||
/******************************/
|
||||
/*** saisie notes multiples ***/
|
||||
/******************************/
|
||||
public function saisieNoteMultiple($notes){
|
||||
if( !($controleInfo=controleRepo::info($notes[0]->controle)) ) return 'unknown_controle';
|
||||
public function saisieNoteMultiple($controle, $notes){
|
||||
if( !($controleInfo=controleRepo::info($controle)) ) return 'unknown_controle';
|
||||
|
||||
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)
|
||||
if( !($etudiantUID=userRepo::UID($note->etudiant)) ) return 'unknown_user';
|
||||
if( $note->controle != $controleInfo['id'] ) return 'unknown_controle';
|
||||
|
||||
$notes[$iter]->semestre = $controleInfo['id_semestre'];
|
||||
if( !(userRepo::UID($note->etudiant)) ) return 'unknown_user';
|
||||
|
||||
// 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] );
|
||||
}
|
||||
|
||||
var_dump( $notes );
|
||||
|
||||
// saisie multiple des notes
|
||||
$rep = noteRepo::creerMultiple($controleUID, $notes);
|
||||
$rep = noteRepo::creerMultiple($controleInfo['id'], $controleInfo['id_semestre'], $notes);
|
||||
|
||||
if( $rep )
|
||||
return 'success';
|
||||
|
|
|
@ -225,7 +225,7 @@ function xlsx_switch_lvl1($request, $answer){
|
|||
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
|
||||
|
||||
|
|
|
@ -278,41 +278,55 @@ class noteRepo extends DBAccess{
|
|||
* @return cree<Boolean> FALSE si la note n'a pas été créé
|
||||
*
|
||||
*/
|
||||
public static function creerMultiple($etudiant, $controle, $semestre, $valeur){
|
||||
/* [1] Premier cas : il faut créer la note de cet étudiant pour ce contrôle
|
||||
============================================================================*/
|
||||
if( !($noteUID=noteRepo::UID($etudiant, $controle)) ){
|
||||
public static function creerMultiple($controle, $semestre, $notes){
|
||||
|
||||
$creationNote = DataBase::getPDO()->prepare("INSERT INTO note(id_note, id_appartenance, id_controle, valeur)
|
||||
VALUES(
|
||||
DEFAULT,
|
||||
(SELECT id_appartenance FROM appartenance WHERE id_etudiant = :etudiant AND id_semestre = :semestre),
|
||||
:controle,
|
||||
:valeur
|
||||
)");
|
||||
$creationNote->execute(array( ':etudiant' => $etudiant, ':semestre' => $semestre, ':controle' => $controle, ':valeur' => $valeur ));
|
||||
$saisieFinie = true;
|
||||
|
||||
foreach($notes as $iter=>$note){
|
||||
|
||||
|
||||
/* [2] Second cas : il faut modifier la note de cet étudiant
|
||||
============================================================================*/
|
||||
}else{
|
||||
$cEtudiant = $note->etudiant;
|
||||
$cValeur = $note->valeur;
|
||||
|
||||
$modificationNote = DataBase::getPDO()->prepare("UPDATE note SET valeur = :valeur WHERE id_note = :noteUID");
|
||||
$modificationNote->execute(array( ':valeur' => $valeur, ':noteUID' => $noteUID ));
|
||||
/* [1] Premier cas : il faut créer la note de cet étudiant pour ce contrôle
|
||||
============================================================================*/
|
||||
if( !($noteUID=noteRepo::UID($cEtudiant, $controle)) ){
|
||||
|
||||
$creationNote = DataBase::getPDO()->prepare("INSERT INTO note(id_note, id_appartenance, id_controle, valeur)
|
||||
VALUES(
|
||||
DEFAULT,
|
||||
(SELECT id_appartenance FROM appartenance WHERE id_etudiant = :etudiant AND id_semestre = :semestre),
|
||||
:controle,
|
||||
:valeur
|
||||
)");
|
||||
$creationNote->execute(array( ':etudiant' => $cEtudiant, ':semestre' => $semestre, ':controle' => $controle, ':valeur' => $cValeur ));
|
||||
|
||||
|
||||
/* [2] Second cas : il faut modifier la note de cet étudiant
|
||||
============================================================================*/
|
||||
}else{
|
||||
|
||||
$modificationNote = DataBase::getPDO()->prepare("UPDATE note SET valeur = :valeur WHERE id_note = :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
|
||||
=================================================================================*/
|
||||
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
|
||||
=================================================================================*/
|
||||
$verificationValeur = DataBase::getPDO()->prepare("SELECT valeur FROM note WHERE id_note = :noteUID");
|
||||
$verificationValeur->execute(array( ':noteUID' => $noteUID ));
|
||||
|
||||
$saisieFinie = $saisieFinie && ( $verificationValeur->fetch()['valeur'] == $cValeur );
|
||||
|
||||
}
|
||||
|
||||
/* [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;
|
||||
|
||||
|
||||
/* [4] On vérifie que la note créée a bien la valeur qu'on a attribuée
|
||||
=================================================================================*/
|
||||
$verificationValeur = DataBase::getPDO()->prepare("SELECT valeur FROM note WHERE id_note = :noteUID");
|
||||
$verificationValeur->execute(array( ':noteUID' => $noteUID ));
|
||||
|
||||
return ( $verificationValeur->fetch()['valeur'] == $valeur );
|
||||
return $saisieFinie;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -202,13 +202,16 @@ if( document.querySelector('#CONTAINER section[name=controlesenseignants]') != n
|
|||
|
||||
var toutesNotes = [];
|
||||
|
||||
var controleUID = null;
|
||||
|
||||
// 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) ){
|
||||
|
||||
if( controleUID == null ) controleUID = saisieObj[i].ctrlid;
|
||||
|
||||
toutesNotes.push({
|
||||
etudiant: saisieObj[i].userid,
|
||||
controle: saisieObj[i].ctrlid,
|
||||
note: saisieObj[i].inputEl.value.replace(',', '.') // par précaution, on replace les virgules par des points pour le php (is_numeric)
|
||||
valeur: 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
|
||||
level_0: 'career',
|
||||
level_1: 'saisieNoteMultiple',
|
||||
controle: controleUID,
|
||||
notes: toutesNotes // on donne toutes les notes
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue