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 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() {
... ...