diff options
Diffstat (limited to 'generator/after-bake/src/Controller/EquipementsController.php')
-rw-r--r-- | generator/after-bake/src/Controller/EquipementsController.php | 47 |
1 files changed, 40 insertions, 7 deletions
diff --git a/generator/after-bake/src/Controller/EquipementsController.php b/generator/after-bake/src/Controller/EquipementsController.php index 216fe64..a17a724 100644 --- a/generator/after-bake/src/Controller/EquipementsController.php +++ b/generator/after-bake/src/Controller/EquipementsController.php @@ -85,14 +85,46 @@ class EquipementsController extends AppController public function add() { $equipement = $this->Equipements->newEntity(); + if ($this->request->is('post')) { - $equipement = $this->Equipements->patchEntity($equipement, $this->request->data); - if ($this->Equipements->save($equipement)) { - $this->Flash->success(__('The equipement has been saved.')); - return $this->redirect(['action' => 'index']); - } else { - $this->Flash->error(__('The equipement could not be saved. Please, try again.')); - } + // Expand the form data into an array of items for each MAC + $data = array(); + $mac_list = explode("\n", $this->request->data['mac']); + $mac_list = array_map('trim', $mac_list); + //debug($mac_list); + foreach ( $mac_list as $mac ) { + $item = $this->request->data; + $item['mac'] = $mac; + $data[] = $item; + } + //debug($data); + + // Save all in one transaction + // http://book.cakephp.org/3.0/en/orm/saving-data.html#converting-multiple-records + $entities = $this->Equipements->newEntities($data); + //debug($entities); + $all_ok = true; + $this->Equipements->connection()->transactional( function () use ($entities, &$all_ok) { + foreach ($entities as $entity) { + if ( ! $this->Equipements->save($entity, ['atomic' => false]) ) { + $all_ok = false; + } + } + return $all_ok; + }); + //debug($all_ok); + + if ( $all_ok ) { + $this->Flash->success(__('Equipements has been all saved.')); + //return $this->redirect(['action' => 'index']); + } else { + // Merge entities.N.[errors] in equipement.[errors] + foreach( $entities as $entity ) { + $equipement->errors( $entity->errors() ); + } + //debug($equipement); + $this->Flash->error(__('At least one Equipement is invalid. None Saved.')); + } } $equipements = $this->Equipements->Equipements->find('list')->order('mac'); $services = $this->Equipements->Services->find('list')->order(['service_type_id', 'adherent_id', 'id']); @@ -102,6 +134,7 @@ class EquipementsController extends AppController $equipementModes = $this->Equipements->EquipementModes->find('list'); $relais = $this->Equipements->Relais->find('list'); $this->set(compact('equipement', 'equipements', 'services', 'ipmgmt', 'equipementModeles', 'equipementModes', 'relais')); + //$this->set(compact('entities')); $this->set('_serialize', ['equipement']); } |