%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/graphicd/public_html/vebto/app/Http/Controllers/
Upload File :
Create Path :
Current File : /home/graphicd/public_html/vebto/app/Http/Controllers/UserFoldersController.php

<?php

namespace App\Http\Controllers;

use App\FileEntry;
use App\Folder;
use App\RootFolder;
use App\Services\Entries\SetPermissionsOnEntry;
use Common\Core\BaseController;
use Common\Workspaces\ActiveWorkspace;
use Illuminate\Http\JsonResponse;

class UserFoldersController extends BaseController
{
    /**
     * @var Folder
     */
    private $folder;

    /**
     * @param Folder $folder
     */
    public function __construct(Folder $folder)
    {
        $this->folder = $folder;
    }

    /**
     * @param $userId
     * @return JsonResponse
     */
    public function index($userId)
    {
        $this->authorize('index', [FileEntry::class, null, $userId]);

        $query = $this->folder
            ->where('workspace_id', app(ActiveWorkspace::class)->id ?? null);

        if ( ! app(ActiveWorkspace::class)->id) {
            $query->whereOwner($userId);
        }

        $folders = $query->select('file_entries.id', 'name', 'parent_id', 'path', 'type', 'workspace_id')
            ->with('users')
            ->orderByRaw('LENGTH(path)')
            ->limit(100)
            ->get();

        foreach ($folders as $key => $folder) {
            $folders[$key] = app(SetPermissionsOnEntry::class)->execute($folder);
        }

        return $this->success([
            'folders' => $folders,
            'rootFolder' => app(SetPermissionsOnEntry::class)->execute(new RootFolder()),
        ]);
    }
}

Zerion Mini Shell 1.0