From a1413a600299504753bb0cfe2fc5f82e0f29076d Mon Sep 17 00:00:00 2001 From: Roly Gutierrez Date: Wed, 28 Jul 2021 13:35:33 -0400 Subject: [PATCH] PMCORE-3186 Rest Services - CRUD My task column settings --- .../src/ProcessMaker/Model/UserConfigTest.php | 17 +++--- .../src/ProcessMaker/Model/UserConfig.php | 24 ++++---- .../src/ProcessMaker/Services/Api/Home.php | 60 ++++++++++++------- 3 files changed, 57 insertions(+), 44 deletions(-) diff --git a/tests/unit/workflow/engine/src/ProcessMaker/Model/UserConfigTest.php b/tests/unit/workflow/engine/src/ProcessMaker/Model/UserConfigTest.php index d1e7a66e1..12d23969d 100644 --- a/tests/unit/workflow/engine/src/ProcessMaker/Model/UserConfigTest.php +++ b/tests/unit/workflow/engine/src/ProcessMaker/Model/UserConfigTest.php @@ -15,6 +15,7 @@ class UserConfigTest extends TestCase public function setUp() { parent::setUp(); + UserConfig::truncate(); } /** @@ -34,7 +35,7 @@ class UserConfigTest extends TestCase { $id = 1; $name = "test"; - $setting = json_encode(["test" => 1]); + $setting = ["test" => 1]; $result = UserConfig::addSetting($id, $name, $setting); //assert get @@ -44,7 +45,7 @@ class UserConfigTest extends TestCase $this->assertArrayHasKey("setting", $result); $this->assertEquals($result["id"], $id); $this->assertEquals($result["name"], $name); - $this->assertEquals($result["setting"], json_decode($setting)); + $this->assertEquals($result["setting"], (object) $setting); } /** @@ -56,7 +57,7 @@ class UserConfigTest extends TestCase { $id = 1; $name = "test"; - $setting = json_encode(["test" => 1]); + $setting = ["test" => 1]; $result = UserConfig::addSetting($id, $name, $setting); $this->assertArrayHasKey("id", $result); @@ -64,7 +65,7 @@ class UserConfigTest extends TestCase $this->assertArrayHasKey("setting", $result); $this->assertEquals($result["id"], $id); $this->assertEquals($result["name"], $name); - $this->assertEquals($result["setting"], json_decode($setting)); + $this->assertEquals($result["setting"], (object) $setting); } /** @@ -76,18 +77,18 @@ class UserConfigTest extends TestCase { $id = 1; $name = "test"; - $setting = json_encode(["test" => 1]); + $setting = ["test" => 1]; $result = UserConfig::addSetting($id, $name, $setting); //assert edit - $setting = json_encode(["test" => 2, "test2" => 3]); + $setting = ["test" => 2, "test2" => 3]; $result = UserConfig::editSetting($id, $name, $setting); $this->assertArrayHasKey("id", $result); $this->assertArrayHasKey("name", $result); $this->assertArrayHasKey("setting", $result); $this->assertEquals($result["id"], $id); $this->assertEquals($result["name"], $name); - $this->assertEquals($result["setting"], json_decode($setting)); + $this->assertEquals($result["setting"], (object) $setting); } /** @@ -99,7 +100,7 @@ class UserConfigTest extends TestCase { $id = 2; $name = "test2"; - $setting = json_encode(["test2" => 1]); + $setting = ["test2" => 1]; $result = UserConfig::addSetting($id, $name, $setting); //assert delete diff --git a/workflow/engine/src/ProcessMaker/Model/UserConfig.php b/workflow/engine/src/ProcessMaker/Model/UserConfig.php index bfb08329b..1977f07f8 100644 --- a/workflow/engine/src/ProcessMaker/Model/UserConfig.php +++ b/workflow/engine/src/ProcessMaker/Model/UserConfig.php @@ -45,21 +45,17 @@ class UserConfig extends Model * Add user setting. * @param int $id * @param string $name - * @param string $setting + * @param array $setting * @return mix array|null */ - public static function addSetting(int $id, string $name, string $setting) + public static function addSetting(int $id, string $name, array $setting) { + $model = new UserConfig(); + $model->USR_ID = $id; + $model->USC_NAME = $name; + $model->USC_SETTING = json_encode($setting); + $model->save(); $userConfig = UserConfig::getSetting($id, $name); - if (empty($userConfig)) { - $model = new UserConfig(); - $model->USR_ID = $id; - $model->USC_NAME = $name; - $model->USC_SETTING = $setting; - $model->save(); - - $userConfig = UserConfig::getSetting($id, $name); - } return $userConfig; } @@ -67,14 +63,14 @@ class UserConfig extends Model * Edit user setting. * @param int $id * @param string $name - * @param string $setting + * @param array $setting * @return mix array|null */ - public static function editSetting(int $id, string $name, string $setting) + public static function editSetting(int $id, string $name, array $setting) { UserConfig::where('USR_ID', '=', $id) ->where('USC_NAME', '=', $name) - ->update(["USC_SETTING" => $setting]); + ->update(["USC_SETTING" => json_encode($setting)]); return UserConfig::getSetting($id, $name); } diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Home.php b/workflow/engine/src/ProcessMaker/Services/Api/Home.php index 5f40121af..e361269a0 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Home.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Home.php @@ -825,64 +825,80 @@ class Home extends Api /** * Get user setting. - * @params int $id - * @params string $name - * @url GET /config + * @url GET /config/:id/:name + * @param int $id + * @param string $name * @return array - * @throws Exception + * @throws RestException * @access protected * @class AccessControl {@permission PM_CASES} */ public function doGetConfig(int $id, string $name) { - return UserConfig::getSetting($id, $name); + $setting = UserConfig::getSetting($id, $name); + if (is_null($setting)) { + throw new RestException(Api::STAT_APP_EXCEPTION, G::LoadTranslation('ID_DOES_NOT_EXIST')); + } + return $setting; } /** * Add user setting. - * @params int $id - * @params string $name - * @params string $setting * @url POST /config + * @param int $id + * @param string $name + * @param array $setting * @return array - * @throws Exception + * @throws RestException * @access protected * @class AccessControl {@permission PM_CASES} */ - public function doPostConfig(int $id, string $name, string $setting) + public function doPostConfig(int $id, string $name, array $setting) { - return UserConfig::addSetting($id, $name, $setting); + try { + return UserConfig::addSetting($id, $name, $setting); + } catch (Exception $e) { + throw new RestException(Api::STAT_APP_EXCEPTION, G::LoadTranslation('ID_EXIST')); + } } /** * Update user setting. - * @params int $id - * @params string $name - * @params string $setting * @url PUT /config + * @param int $id + * @param string $name + * @param array $setting * @return array - * @throws Exception + * @throws RestException * @access protected * @class AccessControl {@permission PM_CASES} */ - public function doPutConfig(int $id, string $name, string $setting) + public function doPutConfig(int $id, string $name, array $setting) { - return UserConfig::editSetting($id, $name, $setting); + $setting = UserConfig::editSetting($id, $name, $setting); + if (is_null($setting)) { + throw new RestException(Api::STAT_APP_EXCEPTION, G::LoadTranslation('ID_DOES_NOT_EXIST')); + } + return $setting; } /** * Delete user setting. - * @params int $id - * @params string $name - * @url DELETE /config + * @url DELETE /config/:id/:name + * @param int $id + * @param string $name * @return array - * @throws Exception + * @throws RestException * @access protected * @class AccessControl {@permission PM_CASES} */ public function doDeleteConfig(int $id, string $name) { - return UserConfig::deleteSetting($id, $name); + $setting = UserConfig::deleteSetting($id, $name); + if (is_null($setting)) { + throw new RestException(Api::STAT_APP_EXCEPTION, G::LoadTranslation('ID_DOES_NOT_EXIST')); + } + return $setting; } /**