From 0d7416dcd07d5561e63ae75240e2281f03616b76 Mon Sep 17 00:00:00 2001 From: Damien <damien.burel@maarch.org> Date: Thu, 31 May 2018 16:56:48 +0200 Subject: [PATCH] FEAT #7731 Docserver update and delete --- core/Test/ListTemplateControllerTest.php | 9 +-- rest/index.php | 3 + .../controllers/DocserverController.php | 59 ++++++++++++++++--- .../models/DocserverModelAbstract.php | 12 ++-- src/core/lang/lang-fr.php | 6 +- 5 files changed, 67 insertions(+), 22 deletions(-) diff --git a/core/Test/ListTemplateControllerTest.php b/core/Test/ListTemplateControllerTest.php index 60a2b9b29b8..e505cca14d2 100644 --- a/core/Test/ListTemplateControllerTest.php +++ b/core/Test/ListTemplateControllerTest.php @@ -67,9 +67,8 @@ class ListTemplateControllerTest extends TestCase $this->assertSame('TEST LISTTEMPLATE123 DESCRIPTION', $listTemplate->description); } } - if (empty(self::$id)) { - $this->assertSame('Error', 'Creation failed'); - } + + $this->assertNotEmpty(self::$id); // READ $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']); @@ -153,9 +152,7 @@ class ListTemplateControllerTest extends TestCase $this->assertSame('TEST LISTTEMPLATE123 DESCRIPTION UPDATED', $listTemplate->description); } } - if (empty(self::$id)) { - $this->assertSame('Error', 'Update failed'); - } + $this->assertNotEmpty(self::$id); // READ $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']); diff --git a/rest/index.php b/rest/index.php index c9fbfbf0d11..6e3064d88a5 100755 --- a/rest/index.php +++ b/rest/index.php @@ -103,7 +103,10 @@ $app->get('/contactsTypes', \Contact\controllers\ContactTypeController::class . //Docservers $app->get('/docservers', \Docserver\controllers\DocserverController::class . ':get'); +$app->post('/docservers', \Docserver\controllers\DocserverController::class . ':create'); $app->get('/docservers/{id}', \Docserver\controllers\DocserverController::class . ':getById'); +$app->put('/docservers/{id}', \Docserver\controllers\DocserverController::class . ':update'); +$app->delete('/docservers/{id}', \Docserver\controllers\DocserverController::class . ':delete'); //DocserverTypes $app->get('/docserverTypes', \Docserver\controllers\DocserverTypeController::class . ':get'); diff --git a/src/app/docserver/controllers/DocserverController.php b/src/app/docserver/controllers/DocserverController.php index 4891556da6c..0261dfe73b8 100644 --- a/src/app/docserver/controllers/DocserverController.php +++ b/src/app/docserver/controllers/DocserverController.php @@ -58,7 +58,7 @@ class DocserverController $data = $request->getParams(); - $check = Validator::stringType()->notEmpty()->validate($data['id']) && preg_match("/^[\w-]*$/", $data['id']) && (strlen($data['id']) < 32); + $check = Validator::stringType()->notEmpty()->validate($data['docserver_id']) && preg_match("/^[\w-]*$/", $data['docserver_id']) && (strlen($data['docserver_id']) < 32); $check = $check && Validator::stringType()->notEmpty()->validate($data['docserver_type_id']); $check = $check && Validator::stringType()->notEmpty()->validate($data['device_label']); $check = $check && Validator::intVal()->notEmpty()->validate($data['size_limit_number']); @@ -70,7 +70,7 @@ class DocserverController return $response->withStatus(400)->withJson(['errors' => 'Bad Request']); } - $existingDocserver = DocserverModel::getById(['id' => $data['id'], 'select' => ['1']]); + $existingDocserver = DocserverModel::getById(['id' => $data['docserver_id'], 'select' => ['1']]); if (!empty($existingDocserver)) { return $response->withStatus(400)->withJson(['errors' => _ID. ' ' . _ALREADY_EXISTS]); } @@ -80,14 +80,52 @@ class DocserverController DocserverModel::create($data); HistoryController::add([ 'tableName' => 'docservers', - 'recordId' => $data['id'], + 'recordId' => $data['docserver_id'], 'eventType' => 'ADD', - 'info' => _BASKET_CREATION . " : {$data['id']}", + 'info' => _DOCSERVER_ADDED . " : {$data['docserver_id']}", 'moduleId' => 'docserver', 'eventId' => 'docserverCreation', ]); - return $response->withJson(['basket' => $data['id']]); + return $response->withJson(['docserver' => $data['docserver_id']]); + } + + public function update(Request $request, Response $response, array $aArgs) + { + if (!ServiceModel::hasService(['id' => 'admin_docservers', 'userId' => $GLOBALS['userId'], 'location' => 'basket', 'type' => 'admin'])) { + return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']); + } + + $data = $request->getParams(); + + $check = Validator::stringType()->notEmpty()->validate($data['device_label']); + $check = $check && Validator::intVal()->notEmpty()->validate($data['size_limit_number']); + $check = $check && Validator::stringType()->notEmpty()->validate($data['path_template']); + $check = $check && Validator::intVal()->notEmpty()->validate($data['priority_number']); + $check = $check && Validator::intVal()->notEmpty()->validate($data['adr_priority_number']); + if (!$check) { + return $response->withStatus(400)->withJson(['errors' => 'Bad Request']); + } + + $docserver = DocserverModel::getById(['id' => $aArgs['id'], 'select' => ['1']]); + if (empty($docserver)) { + return $response->withStatus(400)->withJson(['errors' => 'Docserver not found']); + } + + $data['is_readonly'] = empty($data['is_readonly']) ? 'N' : 'Y'; + $data['docserver_id'] = $aArgs['id']; + + DocserverModel::update($data); + HistoryController::add([ + 'tableName' => 'docservers', + 'recordId' => $aArgs['id'], + 'eventType' => 'UP', + 'info' => _DOCSERVER_UPDATED . " : {$aArgs['id']}", + 'moduleId' => 'docserver', + 'eventId' => 'docserverModification', + ]); + + return $response->withJson(['success' => 'success']); } public function delete(Request $request, Response $response, array $aArgs) @@ -97,12 +135,19 @@ class DocserverController } $docserver = DocserverModel::getById(['id' => $aArgs['id']]); - if(empty($docserver)){ return $response->withStatus(400)->withJson(['errors' => 'Docserver does not exist']); } - DocserverModel::delete(['id' => $aArgs['id']]); + DocserverModel::delete(['docserver_id' => $aArgs['id']]); + HistoryController::add([ + 'tableName' => 'docservers', + 'recordId' => $aArgs['id'], + 'eventType' => 'DEL', + 'info' => _DOCSERVER_DELETED . " : {$aArgs['id']}", + 'moduleId' => 'docserver', + 'eventId' => 'docserverSuppression', + ]); return $response->withJson(['docservers' => DocserverModel::get()]); } diff --git a/src/app/docserver/models/DocserverModelAbstract.php b/src/app/docserver/models/DocserverModelAbstract.php index 039ab4c8919..0977b348de0 100644 --- a/src/app/docserver/models/DocserverModelAbstract.php +++ b/src/app/docserver/models/DocserverModelAbstract.php @@ -92,14 +92,14 @@ class DocserverModelAbstract public static function create(array $aArgs) { - ValidatorModel::notEmpty($aArgs, ['id', 'docserver_type_id', 'device_label', 'path_template', 'coll_id', 'size_limit_number', 'priority_number', 'adr_priority_number', 'is_readonly']); - ValidatorModel::stringType($aArgs, ['id', 'docserver_type_id', 'device_label', 'path_template', 'coll_id', 'is_readonly']); + ValidatorModel::notEmpty($aArgs, ['docserver_id', 'docserver_type_id', 'device_label', 'path_template', 'coll_id', 'size_limit_number', 'priority_number', 'adr_priority_number', 'is_readonly']); + ValidatorModel::stringType($aArgs, ['docserver_id', 'docserver_type_id', 'device_label', 'path_template', 'coll_id', 'is_readonly']); ValidatorModel::intVal($aArgs, ['size_limit_number', 'priority_number', 'adr_priority_number']); DatabaseModel::insert([ 'table' => 'docservers', 'columnsValues' => [ - 'docserver_id' => $aArgs['id'], + 'docserver_id' => $aArgs['docserver_id'], 'docserver_type_id' => $aArgs['docserver_type_id'], 'device_label' => $aArgs['device_label'], 'path_template' => $aArgs['path_template'], @@ -131,13 +131,13 @@ class DocserverModelAbstract public static function delete(array $aArgs) { - ValidatorModel::notEmpty($aArgs, ['id']); - ValidatorModel::stringType($aArgs, ['id']); + ValidatorModel::notEmpty($aArgs, ['docserver_id']); + ValidatorModel::stringType($aArgs, ['docserver_id']); DatabaseModel::delete([ 'table' => 'docservers', 'where' => ['docserver_id = ?'], - 'data' => [$aArgs['id']] + 'data' => [$aArgs['docserver_id']] ]); return true; diff --git a/src/core/lang/lang-fr.php b/src/core/lang/lang-fr.php index 81bc1ec9b40..ac6fc1917ac 100644 --- a/src/core/lang/lang-fr.php +++ b/src/core/lang/lang-fr.php @@ -38,9 +38,9 @@ define('_CONTACTS_GROUP_LIST_DELETED', 'Suppression de contacts dans le groupe') define('_CONTACTS_GROUP_LABEL_ALREADY_EXISTS', 'Un groupe avec ce libellé existe déjà '); define('_DELETE_NOTIFICATIONS', 'Notification supprimée'); define('_DEST_USER', 'Destinataire'); -define('_DOCSERVER_ADDED', 'Docserver ajouté'); -define('_DOCSERVER_UPDATED', 'Docserver modifié'); -define('_DOCSERVER_DELETED', 'Docserver supprimé'); +define('_DOCSERVER_ADDED', 'Zone de stockage ajoutée'); +define('_DOCSERVER_UPDATED', 'Zone de stockage modifiée'); +define('_DOCSERVER_DELETED', 'Zone de stockage supprimée'); define('_DOCTYPE_FIRSTLEVEL_ADDED', 'Chemise ajoutée'); define('_DOCTYPE_FIRSTLEVEL_DELETED', 'Chemise supprimée'); define('_DOCTYPE_FIRSTLEVEL_UPDATED', 'Chemise modifiée'); -- GitLab