Commit abc9320c324343c4de74e473b7253ba697baed0a
1 parent
db090f9a
Exists in
master
and in
1 other branch
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 | 2147 | */ |
2148 | 2148 | private function statusSetTo($newStatus, $message, $id = null, $from = 'index', $onlyOneMateriel = True) { |
2149 | 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 | 2152 | // - ARCHIVED |
2152 | 2153 | if ($newStatus == 'ARCHIVED') |
... | ... | @@ -2170,10 +2171,11 @@ class MaterielsController extends AppController { |
2170 | 2171 | Organisme, |
2171 | 2172 | Prix, |
2172 | 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 | 2176 | foreach ($mandatoryFields as $field) { |
2176 | 2177 | if ($field === null || $field == '') { |
2178 | + // Validation d'un seul matériel => on revient à "edit" | |
2177 | 2179 | if ($onlyOneMateriel) { |
2178 | 2180 | /* (EP 2020 03) |
2179 | 2181 | * Ce genre de ligne ($this->Flash->...) affichant un message flash en haut de page, |
... | ... | @@ -2188,7 +2190,9 @@ class MaterielsController extends AppController { |
2188 | 2190 | //$this->Flash->set($msgError1, ['params' => ['class' => 'alert alert-dismissible in alert-danger']]); |
2189 | 2191 | //$this->Flash->set($msgError1, ['params' => ['class' => 'alert alert-dismissible fade in alert-danger']]); |
2190 | 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 | 2196 | $this->Flash->error($msgError2); |
2193 | 2197 | return False; |
2194 | 2198 | } |
... | ... | @@ -2199,6 +2203,35 @@ class MaterielsController extends AppController { |
2199 | 2203 | //$materiel->date_validated = date('Y-m-d'); |
2200 | 2204 | //debug($materiel->date_validated); |
2201 | 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 | 2235 | } // VALIDATED |
2203 | 2236 | |
2204 | 2237 | // SAVE |
... | ... | @@ -2214,30 +2247,11 @@ class MaterielsController extends AppController { |
2214 | 2247 | $success = True; |
2215 | 2248 | if ($onlyOneMateriel) $this->Flash->success(__($message)); |
2216 | 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 | 2250 | //$this->sendEmail($materiel); |
2236 | 2251 | //évite le double envoi car il y a un envoi de mail a la fonction add et à l'état created |
2237 | 2252 | //évite les envois succcessifs si qqn fait une erreur sur la fiche, valide la fiche, et dévalide pour remodifier |
2238 | 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 | 2255 | } // SAVE OK |
2242 | 2256 | |
2243 | 2257 | if (! $onlyOneMateriel) |
... | ... | @@ -2254,7 +2268,9 @@ class MaterielsController extends AppController { |
2254 | 2268 | 'action' => $from, |
2255 | 2269 | $id // null pour $from=index |
2256 | 2270 | ]); |
2257 | - } | |
2271 | + | |
2272 | + } // statusSetTo() | |
2273 | + | |
2258 | 2274 | |
2259 | 2275 | //@Override parent |
2260 | 2276 | static public function getActions() { | ... | ... |