Skip to content
Snippets Groups Projects
Verified Commit 36131046 authored by Damien's avatar Damien
Browse files

FEAT #11296 TIME 0:30 remove resources by folder

parent 52a7549f
No related branches found
No related tags found
No related merge requests found
...@@ -185,6 +185,7 @@ $app->put('/folders/{id}', \Folder\controllers\FolderController::class . ':updat ...@@ -185,6 +185,7 @@ $app->put('/folders/{id}', \Folder\controllers\FolderController::class . ':updat
$app->delete('/folders/{id}', \Folder\controllers\FolderController::class . ':delete'); $app->delete('/folders/{id}', \Folder\controllers\FolderController::class . ':delete');
$app->get('/folders/{id}/resources', \Folder\controllers\FolderController::class . ':getResourcesById'); $app->get('/folders/{id}/resources', \Folder\controllers\FolderController::class . ':getResourcesById');
$app->post('/folders/{id}/resources', \Folder\controllers\FolderController::class . ':addResourcesById'); $app->post('/folders/{id}/resources', \Folder\controllers\FolderController::class . ':addResourcesById');
$app->delete('/folders/{id}/resources', \Folder\controllers\FolderController::class . ':removeResourcesById');
$app->put('/folders/{id}/sharing', \Folder\controllers\FolderController::class . ':sharing'); $app->put('/folders/{id}/sharing', \Folder\controllers\FolderController::class . ':sharing');
//Groups //Groups
......
...@@ -453,6 +453,10 @@ class FolderController ...@@ -453,6 +453,10 @@ class FolderController
} }
$resourcesToClassify = array_diff($body['resources'], $foldersResources); $resourcesToClassify = array_diff($body['resources'], $foldersResources);
if (empty($resourcesToClassify)) {
return $response->withJson(['countResources' => count($foldersResources)]);
}
if (!ResController::hasRightByResId(['resId' => $resourcesToClassify, 'userId' => $GLOBALS['id']])) { if (!ResController::hasRightByResId(['resId' => $resourcesToClassify, 'userId' => $GLOBALS['id']])) {
return $response->withStatus(400)->withJson(['errors' => 'Resources out of perimeter']); return $response->withStatus(400)->withJson(['errors' => 'Resources out of perimeter']);
} }
...@@ -464,6 +468,40 @@ class FolderController ...@@ -464,6 +468,40 @@ class FolderController
return $response->withJson(['countResources' => count($foldersResources) + count($resourcesToClassify)]); return $response->withJson(['countResources' => count($foldersResources) + count($resourcesToClassify)]);
} }
public function removeResourcesById(Request $request, Response $response, array $args)
{
if (!Validator::numeric()->notEmpty()->validate($args['id'])) {
return $response->withStatus(400)->withJson(['errors' => 'Route id is not an integer']);
}
if (!FolderController::hasFolder(['id' => $args['id'], 'userId' => $GLOBALS['id']])) {
return $response->withStatus(400)->withJson(['errors' => 'Folder out of perimeter']);
}
$foldersResources = ResourceFolderModel::get(['select' => ['res_id'], 'where' => ['folder_id = ?'], 'data' => [$args['id']]]);
$foldersResources = array_column($foldersResources, 'res_id');
$body = $request->getParsedBody();
if (!Validator::arrayType()->notEmpty()->validate($body['resources'])) {
return $response->withStatus(400)->withJson(['errors' => 'Body resources is empty or not an array']);
}
$resourcesToUnclassify = array_intersect($foldersResources, $body['resources']);
if (empty($resourcesToUnclassify)) {
return $response->withJson(['countResources' => count($foldersResources)]);
}
if (!ResController::hasRightByResId(['resId' => $resourcesToUnclassify, 'userId' => $GLOBALS['id']])) {
return $response->withStatus(400)->withJson(['errors' => 'Resources out of perimeter']);
}
foreach ($resourcesToUnclassify as $value) {
ResourceFolderModel::delete(['where' => ['folder_id = ?', 'res_id = ?'], 'data' => [$args['id'], $value]]);
}
return $response->withJson(['countResources' => count($foldersResources) - count($resourcesToUnclassify)]);
}
// login (string) : Login of user connected // login (string) : Login of user connected
// folderId (integer) : Check specific folder // folderId (integer) : Check specific folder
// edition (boolean) : whether user can edit or not // edition (boolean) : whether user can edit or not
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment