mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-06 02:33:48 +00:00
41 lines
1.2 KiB
PHP
41 lines
1.2 KiB
PHP
<?php
|
|
namespace Domain\Browsing\Controllers;
|
|
|
|
use Str;
|
|
use Illuminate\Http\Request;
|
|
use Domain\Files\Models\File;
|
|
use Domain\Folders\Models\Folder;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Domain\Files\Resources\FilesCollection;
|
|
use Domain\Folders\Resources\FolderResource;
|
|
use Domain\Folders\Resources\FolderCollection;
|
|
|
|
class BrowseFolderController
|
|
{
|
|
public function __invoke(
|
|
Request $request,
|
|
string $id,
|
|
): array {
|
|
$root_id = Str::isUuid($id) ? $id : null;
|
|
|
|
$folders = Folder::with(['parent:id,name', 'shared:token,id,item_id,permission,is_protected,expire_in'])
|
|
->where('parent_id', $root_id)
|
|
->where('user_id', Auth::id())
|
|
->sortable()
|
|
->get();
|
|
|
|
$files = File::with(['parent:id,name', 'shared:token,id,item_id,permission,is_protected,expire_in'])
|
|
->where('parent_id', $root_id)
|
|
->where('user_id', Auth::id())
|
|
->sortable()
|
|
->get();
|
|
|
|
// Collect folders and files to single array
|
|
return [
|
|
'folders' => new FolderCollection($folders),
|
|
'files' => new FilesCollection($files),
|
|
'root' => $root_id ? new FolderResource(Folder::findOrFail($root_id)) : null,
|
|
];
|
|
}
|
|
}
|