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

FEAT #11296 TIME 1:00 add resources by folder

parent 55d29f59
No related branches found
No related tags found
No related merge requests found
......@@ -184,6 +184,7 @@ $app->get('/folders/{id}', \Folder\controllers\FolderController::class . ':getBy
$app->put('/folders/{id}', \Folder\controllers\FolderController::class . ':update');
$app->delete('/folders/{id}', \Folder\controllers\FolderController::class . ':delete');
$app->get('/folders/{id}/resources', \Folder\controllers\FolderController::class . ':getResourcesById');
$app->post('/folders/{id}/resources', \Folder\controllers\FolderController::class . ':addResourcesById');
$app->put('/folders/{id}/sharing', \Folder\controllers\FolderController::class . ':sharing');
//Groups
......
......@@ -21,6 +21,7 @@ use Folder\models\FolderModel;
use Folder\models\ResourceFolderModel;
use Group\models\ServiceModel;
use History\controllers\HistoryController;
use Resource\controllers\ResController;
use Resource\controllers\ResourceListController;
use Resource\models\ResourceListModel;
use Respect\Validation\Validator;
......@@ -116,7 +117,7 @@ class FolderController
public function create(Request $request, Response $response)
{
$data = $request->getParams();
$data = $request->getParsedBody();
if (!Validator::stringType()->notEmpty()->validate($data['label'])) {
return $response->withStatus(400)->withJson(['errors' => 'Body label is empty or not a string']);
......@@ -430,7 +431,37 @@ class FolderController
$count = count($rawResources);
}
return $response->withJson(['resources' => $formattedResources, 'count' => $count]);
return $response->withJson(['resources' => $formattedResources, 'countResources' => $count]);
}
public function addResourcesById(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']);
}
$resourcesToClassify = array_diff($body['resources'], $foldersResources);
if (!ResController::hasRightByResId(['resId' => $resourcesToClassify, 'userId' => $GLOBALS['id']])) {
return $response->withStatus(400)->withJson(['errors' => 'Resources out of perimeter']);
}
foreach ($resourcesToClassify as $value) {
ResourceFolderModel::create(['folder_id' => $args['id'], 'res_id' => $value]);
}
return $response->withJson(['countResources' => count($foldersResources) + count($resourcesToClassify)]);
}
// login (string) : Login of user connected
......
......@@ -33,6 +33,22 @@ class ResourceFolderModel
return $resourcesFolders;
}
public static function create(array $args)
{
ValidatorModel::notEmpty($args, ['folder_id', 'res_id']);
ValidatorModel::intVal($args, ['folder_id', 'res_id']);
DatabaseModel::insert([
'table' => 'resources_folders',
'columnsValues' => [
'folder_id' => $args['folder_id'],
'res_id' => $args['res_id'],
]
]);
return true;
}
public static function delete(array $args)
{
ValidatorModel::notEmpty($args, ['where', 'data']);
......
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