From abc9320c324343c4de74e473b7253ba697baed0a Mon Sep 17 00:00:00 2001 From: Etienne Pallier Date: Fri, 11 Sep 2020 19:48:50 +0200 Subject: [PATCH] amélioration validation => set gestionnaire de ref --- src/Controller/MaterielsController.php | 62 +++++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 39 insertions(+), 23 deletions(-) diff --git a/src/Controller/MaterielsController.php b/src/Controller/MaterielsController.php index 3779a08..9e29ac6 100755 --- a/src/Controller/MaterielsController.php +++ b/src/Controller/MaterielsController.php @@ -2147,6 +2147,7 @@ class MaterielsController extends AppController { */ private function statusSetTo($newStatus, $message, $id = null, $from = 'index', $onlyOneMateriel = True) { $materiel = $this->Materiels->get($id)->set('status', $newStatus); + $msgError2 = "Le statut du matériel " . $materiel->designation . " (" . $materiel->numero_laboratoire . ") n'a pas pu être modifié"; // - ARCHIVED if ($newStatus == 'ARCHIVED') @@ -2170,10 +2171,11 @@ class MaterielsController extends AppController { Organisme, Prix, et Numéro de commande"; - $msgError2 = "Le statut du matériel " . $materiel->designation . " (" . $materiel->numero_laboratoire . ") n'a pas pu être modifié"; + // Si au moins un champ obligatoire est nul ou vide => ERROR foreach ($mandatoryFields as $field) { if ($field === null || $field == '') { + // Validation d'un seul matériel => on revient à "edit" if ($onlyOneMateriel) { /* (EP 2020 03) * Ce genre de ligne ($this->Flash->...) affichant un message flash en haut de page, @@ -2188,7 +2190,9 @@ class MaterielsController extends AppController { //$this->Flash->set($msgError1, ['params' => ['class' => 'alert alert-dismissible in alert-danger']]); //$this->Flash->set($msgError1, ['params' => ['class' => 'alert alert-dismissible fade in alert-danger']]); return $this->redirect(['action'=>'edit',$id]); - } else { + } + // Validation de plusieurs matériels (cochés) à la fois => on annule l'action de validation + else { $this->Flash->error($msgError2); return False; } @@ -2199,6 +2203,35 @@ class MaterielsController extends AppController { //$materiel->date_validated = date('Y-m-d'); //debug($materiel->date_validated); //exit; + + // Si le current user est un admin => on le met comme "gestionnaire" de ce matériel + //if ($newStatus == 'VALIDATED') { + $current_user = $_SESSION['Auth']['User']['sn'][0]; + if ( + in_array( + + $current_user, + + //TableRegistry::get('Users')->find('list', [ + TableRegistry::getTableLocator()->get('Users') + ->find('list', [ + 'keyField' => 'id', + 'valueField' => 'nom' + ]) + ->where(['role =' => 'Administration']) + ->toArray() + + ) + ) { + $gestionnaireID = TableRegistry::getTableLocator()->get('Users') + ->find() + ->where(['nom' => $current_user]) + ->first() + ->id; + $materiel->gestionnaire_id = $gestionnaireID; + } // if + //} + } // VALIDATED // SAVE @@ -2214,30 +2247,11 @@ class MaterielsController extends AppController { $success = True; if ($onlyOneMateriel) $this->Flash->success(__($message)); $this->ilog("Changement de statut (passe à '$newStatus') du matériel '$materiel' (id=$id)"); - // TODO: ce code ne peut pas marcher !!! il faut faire un SAVE - if ($newStatus == 'VALIDATED') - if (in_array($_SESSION['Auth']['User']['sn'][0], TableRegistry::get('Users')->find('list', [ - 'keyField' => 'id', - 'valueField' => 'nom' - ]) - ->where([ - 'role =' => 'Administration' - ]) - ->toArray())) { - $gestionnaireID = TableRegistry::get('Users')->find() - ->where([ - 'nom' => $_SESSION['Auth']['User']['sn'][0] - ]) - ->first()->id; - $materiel->gestionnaire_id = $gestionnaireID; - // TODO: SAVE !!! - } //$this->sendEmail($materiel); //évite le double envoi car il y a un envoi de mail a la fonction add et à l'état created //évite les envois succcessifs si qqn fait une erreur sur la fiche, valide la fiche, et dévalide pour remodifier //if ($newStatus == 'ARCHIVED' || $newStatus == 'TOBEARCHIVED') { - if (in_array($newStatus,['ARCHIVED','TOBEARCHIVED','VALIDATED'])) - $this->sendmail($materiel,3); + if (in_array($newStatus,['ARCHIVED','TOBEARCHIVED','VALIDATED'])) $this->sendmail($materiel,3); } // SAVE OK if (! $onlyOneMateriel) @@ -2254,7 +2268,9 @@ class MaterielsController extends AppController { 'action' => $from, $id // null pour $from=index ]); - } + + } // statusSetTo() + //@Override parent static public function getActions() { -- libgit2 0.21.2