diff --git a/routes/api.php b/routes/api.php index 105e497e..80ba547d 100644 --- a/routes/api.php +++ b/routes/api.php @@ -1,6 +1,9 @@ ['auth:sanctum']], function () { Route::post('/create-folder', CreateFolderController::class); Route::post('/upload', UploadFileController::class); - Route::patch('/rename/{id}', [EditItemsController::class, 'rename_item']); - Route::post('/remove', [EditItemsController::class, 'delete_item']); - Route::post('/move', [EditItemsController::class, 'move']); + Route::patch('/rename/{id}', RenameFileOrFolderController::class); + Route::post('/remove', DeleteFileOrFolderController::class); + Route::post('/move', MoveFileOrFolderController::class); Route::get('/zip/folder/{id}', ZipFolderController::class); Route::post('/zip/files', ZipFilesController::class); diff --git a/src/Domain/Folders/Actions/UpdateFolderPropertyAction.php b/src/Domain/Folders/Actions/UpdateFolderPropertyAction.php new file mode 100644 index 00000000..b4cc9ac0 --- /dev/null +++ b/src/Domain/Folders/Actions/UpdateFolderPropertyAction.php @@ -0,0 +1,43 @@ +emoji === 'default') { + $folder->update([ + 'emoji' => null, + 'color' => null, + ]); + } + + // Set emoji + if ($request->filled('emoji')) { + $folder->update([ + 'emoji' => $request->emoji, + 'color' => null, + ]); + } + + // Set color + if ($request->filled('color')) { + $folder->update([ + 'emoji' => null, + 'color' => $request->color, + ]); + } + } +} \ No newline at end of file diff --git a/src/Support/Services/FileManagerService.php b/src/Domain/Items/Actions/DeleteFileOrFolderAction.php similarity index 57% rename from src/Support/Services/FileManagerService.php rename to src/Domain/Items/Actions/DeleteFileOrFolderAction.php index 029cab62..958c3ccd 100644 --- a/src/Support/Services/FileManagerService.php +++ b/src/Domain/Items/Actions/DeleteFileOrFolderAction.php @@ -1,60 +1,26 @@ user_id : Auth::id(); - - // Get item - $item = get_item($request->type, $id, $user_id); - - // Rename item - $item->update([ - 'name' => $request->name, - ]); - - // Return updated item - return $item; - } - /** * Delete file or folder - * - * @param $item - * @param $id - * @param null $shared - * @throws \Exception */ - public function delete_item($item, $id, $shared = null) - { + public function __invoke( + array $item, + string $id, + ?Share $shared = null + ): void { // Delete folder if ($item['type'] === 'folder') { // Get folder @@ -153,63 +119,4 @@ class FileManagerService } } } - - /** - * Move folder or file to new location - * - * @param $request - * @param $to_id - */ - public function move($request, $to_id) - { - foreach ($request->items as $item) { - // Move folder - if ($item['type'] === 'folder') { - Folder::find($item['id']) - ->update(['parent_id' => $to_id]); - } - - // Move file - if ($item['type'] !== 'folder') { - UserFile::find($item['id']) - ->update(['folder_id' => $to_id]); - } - } - } - - /** - * Store folder icon - * - * @param $request - * @param $id - */ - public function edit_folder_properties($request, $id) - { - // Get folder - $folder = Folder::find($id); - - // Set default folder icon - if ($request->emoji === 'default') { - $folder->update([ - 'emoji' => null, - 'color' => null, - ]); - } - - // Set emoji - if ($request->filled('emoji')) { - $folder->update([ - 'emoji' => $request->emoji, - 'color' => null, - ]); - } - - // Set color - if ($request->filled('color')) { - $folder->update([ - 'emoji' => null, - 'color' => $request->color, - ]); - } - } -} +} \ No newline at end of file diff --git a/src/Domain/Items/Actions/MoveFileOrFolderAction.php b/src/Domain/Items/Actions/MoveFileOrFolderAction.php new file mode 100644 index 00000000..6d02de94 --- /dev/null +++ b/src/Domain/Items/Actions/MoveFileOrFolderAction.php @@ -0,0 +1,32 @@ +items as $item) { + // Move folder + if ($item['type'] === 'folder') { + Folder::find($item['id']) + ->update(['parent_id' => $to_id]); + } + + // Move file + if ($item['type'] !== 'folder') { + UserFile::find($item['id']) + ->update(['folder_id' => $to_id]); + } + } + } +} \ No newline at end of file diff --git a/src/Domain/Items/Actions/RenameFileOrFolderAction.php b/src/Domain/Items/Actions/RenameFileOrFolderAction.php new file mode 100644 index 00000000..a5ee2fe8 --- /dev/null +++ b/src/Domain/Items/Actions/RenameFileOrFolderAction.php @@ -0,0 +1,32 @@ +input('type'), $id); + + // Rename item + $item->update([ + 'name' => $request->input('name'), + ]); + + // Return updated item + return $item; + } +} \ No newline at end of file diff --git a/src/Domain/Items/Controllers/DeleteFileOrFolderController.php b/src/Domain/Items/Controllers/DeleteFileOrFolderController.php new file mode 100644 index 00000000..e7536cdc --- /dev/null +++ b/src/Domain/Items/Controllers/DeleteFileOrFolderController.php @@ -0,0 +1,32 @@ +email), 204, 'Done.' + ); + + foreach ($request->input('items') as $item) { + ($deleteFileOrFolder)($item, $item['id']); + } + + return response('Done', 204); + } +} \ No newline at end of file diff --git a/src/Domain/Items/Controllers/EditItemsController.php b/src/Domain/Items/Controllers/EditItemsController.php deleted file mode 100644 index f694e8b3..00000000 --- a/src/Domain/Items/Controllers/EditItemsController.php +++ /dev/null @@ -1,79 +0,0 @@ -demo->rename_item($request, $id); - } - - // If request contain icon or color, then change it - if ($request->filled('emoji') || $request->filled('color')) { - $this->filemanager->edit_folder_properties($request, $id); - } - - // Rename Item - return $this->filemanager->rename_item($request, $id); - } - - /** - * Delete item for authenticated master|editor user - * - * @param DeleteItemRequest $request - * @return ResponseFactory|\Illuminate\Http\Response - * @throws Exception - */ - public function delete_item(DeleteItemRequest $request) - { - abort_if(is_demo_account('howdy@hi5ve.digital'), 204, 'Done.'); - - foreach ($request->input('items') as $item) { - $this->filemanager->delete_item($item, $item['id']); - } - - return response('Done', 204); - } - - /** - * Move item for authenticated master|editor user - * - * @param MoveItemRequest $request - * @return ResponseFactory|\Illuminate\Http\Response - */ - public function move(MoveItemRequest $request) - { - abort_if(is_demo_account('howdy@hi5ve.digital'), 204, 'Done.'); - - $this->filemanager->move($request, $request->to_id); - - return response('Done!', 204); - } -} diff --git a/src/Domain/Items/Controllers/MoveFileOrFolderController.php b/src/Domain/Items/Controllers/MoveFileOrFolderController.php new file mode 100644 index 00000000..e4da5009 --- /dev/null +++ b/src/Domain/Items/Controllers/MoveFileOrFolderController.php @@ -0,0 +1,36 @@ +email), 204, 'Done.' + ); + + ($moveFileOrFolder)( + $request, $request->input('to_id') + ); + + return response('Done!', 204); + } +} \ No newline at end of file diff --git a/src/Domain/Items/Controllers/RenameFileOrFolderController.php b/src/Domain/Items/Controllers/RenameFileOrFolderController.php new file mode 100644 index 00000000..cf9a5df4 --- /dev/null +++ b/src/Domain/Items/Controllers/RenameFileOrFolderController.php @@ -0,0 +1,38 @@ +email)) { + return $this->demo->rename_item($request, $id); + } + + // If request contain icon or color, then change it + if ($request->filled('emoji') || $request->filled('color')) { + ($updateFolderProperty)($request, $id); + } + + // Rename Item + return ($renameFileOrFolder)($request, $id); + } +} \ No newline at end of file diff --git a/tests/TestCase.php b/tests/TestCase.php index 5b75c457..320848c9 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -25,6 +25,6 @@ abstract class TestCase extends BaseTestCase resolve(SetupService::class)->create_directories(); - //$this->withoutExceptionHandling(); + $this->withoutExceptionHandling(); } }