From dce231dba336af1776a46dc3049719f25dce557c Mon Sep 17 00:00:00 2001
From: Damien <damien.burel@maarch.org>
Date: Thu, 8 Feb 2018 14:27:55 +0100
Subject: [PATCH] FEAT #58 History for baskets

---
 .../basket/controllers/BasketController.php   | 61 ++++++++++++++++++-
 src/core/lang/lang-en.php                     |  4 ++
 src/core/lang/lang-fr.php                     |  4 ++
 3 files changed, 68 insertions(+), 1 deletion(-)

diff --git a/src/app/basket/controllers/BasketController.php b/src/app/basket/controllers/BasketController.php
index 71bf6cbbf31..583810f9de0 100644
--- a/src/app/basket/controllers/BasketController.php
+++ b/src/app/basket/controllers/BasketController.php
@@ -19,6 +19,7 @@ use Action\models\ActionModel;
 use Core\Models\GroupModel;
 use Core\Models\ServiceModel;
 use Core\Models\ValidatorModel;
+use History\controllers\HistoryController;
 use Respect\Validation\Validator;
 use Slim\Http\Request;
 use Slim\Http\Response;
@@ -78,6 +79,14 @@ class BasketController
         $data['isFolderBasket'] = empty($data['isFolderBasket']) ? 'N' : 'Y';
         $data['flagNotif'] = empty($data['flagNotif']) ? 'N' : 'Y';
         BasketModel::create($data);
+        HistoryController::add([
+            'tableName' => 'baskets',
+            'recordId'  => $data['id'],
+            'eventType' => 'ADD',
+            'info'      => _BASKET_CREATION . " : {$data['id']}",
+            'moduleId'  => 'basket',
+            'eventId'   => 'basketCreation',
+        ]);
 
         return $response->withJson(['basket' => $data['id']]);
     }
@@ -112,6 +121,14 @@ class BasketController
         $data['flagNotif'] = empty($data['flagNotif']) ? 'N' : 'Y';
         $data['id'] = $aArgs['id'];
         BasketModel::update($data);
+        HistoryController::add([
+            'tableName' => 'baskets',
+            'recordId'  => $aArgs['id'],
+            'eventType' => 'UP',
+            'info'      => _BASKET_MODIFICATION . " : {$aArgs['id']}",
+            'moduleId'  => 'basket',
+            'eventId'   => 'basketModification',
+        ]);
 
         return $response->withJson(['success' => 'success']);
     }
@@ -128,6 +145,14 @@ class BasketController
         }
 
         BasketModel::delete(['id' => $aArgs['id']]);
+        HistoryController::add([
+            'tableName' => 'baskets',
+            'recordId'  => $aArgs['id'],
+            'eventType' => 'DEL',
+            'info'      => _BASKET_SUPPRESSION . " : {$aArgs['id']}",
+            'moduleId'  => 'basket',
+            'eventId'   => 'basketSuppression',
+        ]);
 
         return $response->withJson(['baskets' => BasketModel::get()]);
     }
@@ -210,6 +235,15 @@ class BasketController
             BasketModel::updateOrder(['id' => $basketToUpdate, 'order' => $key + 1]);
         }
 
+        HistoryController::add([
+            'tableName' => 'baskets',
+            'recordId'  => $aArgs['id'],
+            'eventType' => 'UP',
+            'info'      => _BASKETS_SORT_MODIFICATION,
+            'moduleId'  => 'basket',
+            'eventId'   => 'basketModification',
+        ]);
+
         $baskets = BasketModel::get([
             'select'    => ['basket_id', 'basket_name', 'basket_desc', 'basket_order'],
             'where'     => ['is_visible = ?'],
@@ -364,6 +398,14 @@ class BasketController
                 }
             }
         }
+        HistoryController::add([
+            'tableName' => 'baskets',
+            'recordId'  => $aArgs['id'],
+            'eventType' => 'UP',
+            'info'      => _BASKET_MODIFICATION . " : {$aArgs['id']}",
+            'moduleId'  => 'basket',
+            'eventId'   => 'basketModification',
+        ]);
 
         return $response->withJson(['success' => 'success']);
     }
@@ -434,6 +476,14 @@ class BasketController
                 }
             }
         }
+        HistoryController::add([
+            'tableName' => 'baskets',
+            'recordId'  => $aArgs['id'],
+            'eventType' => 'UP',
+            'info'      => _BASKET_MODIFICATION . " : {$aArgs['id']}",
+            'moduleId'  => 'basket',
+            'eventId'   => 'basketModification',
+        ]);
 
         return $response->withJson(['success' => 'success']);
     }
@@ -450,11 +500,20 @@ class BasketController
         }
 
         BasketModel::deleteGroup(['id' => $aArgs['id'], 'groupId' => $aArgs['groupId']]);
+        HistoryController::add([
+            'tableName' => 'baskets',
+            'recordId'  => $aArgs['id'],
+            'eventType' => 'UP',
+            'info'      => _BASKET_MODIFICATION . " : {$aArgs['id']}",
+            'moduleId'  => 'basket',
+            'eventId'   => 'basketModification',
+        ]);
 
         return $response->withJson(['success' => 'success']);
     }
 
-    private static function checkGroupActions(array $aArgs) {
+    private static function checkGroupActions(array $aArgs)
+    {
         ValidatorModel::notEmpty($aArgs, ['groupActions']);
         ValidatorModel::arrayType($aArgs, ['groupActions']);
 
diff --git a/src/core/lang/lang-en.php b/src/core/lang/lang-en.php
index 5d4444a6bec..a6455ab9821 100644
--- a/src/core/lang/lang-en.php
+++ b/src/core/lang/lang-en.php
@@ -12,6 +12,10 @@
  * @author dev@maarch.org
  */
 
+define('_BASKETS_SORT_MODIFICATION', 'Baskets order modification');
+define('_BASKET_CREATION', 'Basket creation');
+define('_BASKET_MODIFICATION', 'Basket modification');
+define('_BASKET_SUPPRESSION', 'Basket suppression');
 define('_ENTITY_CREATION', 'Entity creation');
 define('_ENTITY_MODIFICATION', 'Entity modification');
 define('_ENTITY_SUPPRESSION', 'Entity suppression');
diff --git a/src/core/lang/lang-fr.php b/src/core/lang/lang-fr.php
index 6441772ddee..94086f89447 100644
--- a/src/core/lang/lang-fr.php
+++ b/src/core/lang/lang-fr.php
@@ -12,6 +12,10 @@
  * @author dev@maarch.org
  */
 
+define('_BASKETS_SORT_MODIFICATION', 'Modification ordre bannettes');
+define('_BASKET_CREATION', 'Création bannette');
+define('_BASKET_MODIFICATION', 'Modification bannette');
+define('_BASKET_SUPPRESSION', 'Suppression bannette');
 define('_ENTITY_CREATION', 'Création entité');
 define('_ENTITY_MODIFICATION', 'Modification entité');
 define('_ENTITY_SUPPRESSION', 'Suppression entité');
-- 
GitLab