summaryrefslogtreecommitdiff
path: root/generator/after-bake/src/Controller/EquipementsController.php
diff options
context:
space:
mode:
Diffstat (limited to 'generator/after-bake/src/Controller/EquipementsController.php')
-rw-r--r--generator/after-bake/src/Controller/EquipementsController.php47
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']);
}