Commit abc9320c324343c4de74e473b7253ba697baed0a

Authored by Etienne Pallier
1 parent db090f9a
Exists in master and in 1 other branch dev

amélioration validation => set gestionnaire de ref

Showing 1 changed file with 39 additions and 23 deletions   Show diff stats
src/Controller/MaterielsController.php
@@ -2147,6 +2147,7 @@ class MaterielsController extends AppController { @@ -2147,6 +2147,7 @@ class MaterielsController extends AppController {
2147 */ 2147 */
2148 private function statusSetTo($newStatus, $message, $id = null, $from = 'index', $onlyOneMateriel = True) { 2148 private function statusSetTo($newStatus, $message, $id = null, $from = 'index', $onlyOneMateriel = True) {
2149 $materiel = $this->Materiels->get($id)->set('status', $newStatus); 2149 $materiel = $this->Materiels->get($id)->set('status', $newStatus);
  2150 + $msgError2 = "Le statut du matériel " . $materiel->designation . " (" . $materiel->numero_laboratoire . ") n'a pas pu être modifié";
2150 2151
2151 // - ARCHIVED 2152 // - ARCHIVED
2152 if ($newStatus == 'ARCHIVED') 2153 if ($newStatus == 'ARCHIVED')
@@ -2170,10 +2171,11 @@ class MaterielsController extends AppController { @@ -2170,10 +2171,11 @@ class MaterielsController extends AppController {
2170 Organisme, 2171 Organisme,
2171 Prix, 2172 Prix,
2172 et Numéro de commande"; 2173 et Numéro de commande";
2173 - $msgError2 = "Le statut du matériel " . $materiel->designation . " (" . $materiel->numero_laboratoire . ") n'a pas pu être modifié";  
2174 2174
  2175 + // Si au moins un champ obligatoire est nul ou vide => ERROR
2175 foreach ($mandatoryFields as $field) { 2176 foreach ($mandatoryFields as $field) {
2176 if ($field === null || $field == '') { 2177 if ($field === null || $field == '') {
  2178 + // Validation d'un seul matériel => on revient à "edit"
2177 if ($onlyOneMateriel) { 2179 if ($onlyOneMateriel) {
2178 /* (EP 2020 03) 2180 /* (EP 2020 03)
2179 * Ce genre de ligne ($this->Flash->...) affichant un message flash en haut de page, 2181 * Ce genre de ligne ($this->Flash->...) affichant un message flash en haut de page,
@@ -2188,7 +2190,9 @@ class MaterielsController extends AppController { @@ -2188,7 +2190,9 @@ class MaterielsController extends AppController {
2188 //$this->Flash->set($msgError1, ['params' => ['class' => 'alert alert-dismissible in alert-danger']]); 2190 //$this->Flash->set($msgError1, ['params' => ['class' => 'alert alert-dismissible in alert-danger']]);
2189 //$this->Flash->set($msgError1, ['params' => ['class' => 'alert alert-dismissible fade in alert-danger']]); 2191 //$this->Flash->set($msgError1, ['params' => ['class' => 'alert alert-dismissible fade in alert-danger']]);
2190 return $this->redirect(['action'=>'edit',$id]); 2192 return $this->redirect(['action'=>'edit',$id]);
2191 - } else { 2193 + }
  2194 + // Validation de plusieurs matériels (cochés) à la fois => on annule l'action de validation
  2195 + else {
2192 $this->Flash->error($msgError2); 2196 $this->Flash->error($msgError2);
2193 return False; 2197 return False;
2194 } 2198 }
@@ -2199,6 +2203,35 @@ class MaterielsController extends AppController { @@ -2199,6 +2203,35 @@ class MaterielsController extends AppController {
2199 //$materiel->date_validated = date('Y-m-d'); 2203 //$materiel->date_validated = date('Y-m-d');
2200 //debug($materiel->date_validated); 2204 //debug($materiel->date_validated);
2201 //exit; 2205 //exit;
  2206 +
  2207 + // Si le current user est un admin => on le met comme "gestionnaire" de ce matériel
  2208 + //if ($newStatus == 'VALIDATED') {
  2209 + $current_user = $_SESSION['Auth']['User']['sn'][0];
  2210 + if (
  2211 + in_array(
  2212 +
  2213 + $current_user,
  2214 +
  2215 + //TableRegistry::get('Users')->find('list', [
  2216 + TableRegistry::getTableLocator()->get('Users')
  2217 + ->find('list', [
  2218 + 'keyField' => 'id',
  2219 + 'valueField' => 'nom'
  2220 + ])
  2221 + ->where(['role =' => 'Administration'])
  2222 + ->toArray()
  2223 +
  2224 + )
  2225 + ) {
  2226 + $gestionnaireID = TableRegistry::getTableLocator()->get('Users')
  2227 + ->find()
  2228 + ->where(['nom' => $current_user])
  2229 + ->first()
  2230 + ->id;
  2231 + $materiel->gestionnaire_id = $gestionnaireID;
  2232 + } // if
  2233 + //}
  2234 +
2202 } // VALIDATED 2235 } // VALIDATED
2203 2236
2204 // SAVE 2237 // SAVE
@@ -2214,30 +2247,11 @@ class MaterielsController extends AppController { @@ -2214,30 +2247,11 @@ class MaterielsController extends AppController {
2214 $success = True; 2247 $success = True;
2215 if ($onlyOneMateriel) $this->Flash->success(__($message)); 2248 if ($onlyOneMateriel) $this->Flash->success(__($message));
2216 $this->ilog("Changement de statut (passe à '$newStatus') du matériel '$materiel' (id=$id)"); 2249 $this->ilog("Changement de statut (passe à '$newStatus') du matériel '$materiel' (id=$id)");
2217 - // TODO: ce code ne peut pas marcher !!! il faut faire un SAVE  
2218 - if ($newStatus == 'VALIDATED')  
2219 - if (in_array($_SESSION['Auth']['User']['sn'][0], TableRegistry::get('Users')->find('list', [  
2220 - 'keyField' => 'id',  
2221 - 'valueField' => 'nom'  
2222 - ])  
2223 - ->where([  
2224 - 'role =' => 'Administration'  
2225 - ])  
2226 - ->toArray())) {  
2227 - $gestionnaireID = TableRegistry::get('Users')->find()  
2228 - ->where([  
2229 - 'nom' => $_SESSION['Auth']['User']['sn'][0]  
2230 - ])  
2231 - ->first()->id;  
2232 - $materiel->gestionnaire_id = $gestionnaireID;  
2233 - // TODO: SAVE !!!  
2234 - }  
2235 //$this->sendEmail($materiel); 2250 //$this->sendEmail($materiel);
2236 //évite le double envoi car il y a un envoi de mail a la fonction add et à l'état created 2251 //évite le double envoi car il y a un envoi de mail a la fonction add et à l'état created
2237 //évite les envois succcessifs si qqn fait une erreur sur la fiche, valide la fiche, et dévalide pour remodifier 2252 //évite les envois succcessifs si qqn fait une erreur sur la fiche, valide la fiche, et dévalide pour remodifier
2238 //if ($newStatus == 'ARCHIVED' || $newStatus == 'TOBEARCHIVED') { 2253 //if ($newStatus == 'ARCHIVED' || $newStatus == 'TOBEARCHIVED') {
2239 - if (in_array($newStatus,['ARCHIVED','TOBEARCHIVED','VALIDATED']))  
2240 - $this->sendmail($materiel,3); 2254 + if (in_array($newStatus,['ARCHIVED','TOBEARCHIVED','VALIDATED'])) $this->sendmail($materiel,3);
2241 } // SAVE OK 2255 } // SAVE OK
2242 2256
2243 if (! $onlyOneMateriel) 2257 if (! $onlyOneMateriel)
@@ -2254,7 +2268,9 @@ class MaterielsController extends AppController { @@ -2254,7 +2268,9 @@ class MaterielsController extends AppController {
2254 'action' => $from, 2268 'action' => $from,
2255 $id // null pour $from=index 2269 $id // null pour $from=index
2256 ]); 2270 ]);
2257 - } 2271 +
  2272 + } // statusSetTo()
  2273 +
2258 2274
2259 //@Override parent 2275 //@Override parent
2260 static public function getActions() { 2276 static public function getActions() {