����JFIF��x�x����'
| Server IP : 78.140.185.180  /  Your IP : 216.73.216.38 Web Server : LiteSpeed System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64 User : builderbox ( 1072) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/builderbox/././././././www/common/Workspaces/Controllers/  | 
Upload File :  | 
<?php
namespace Common\Workspaces\Controllers;
use Auth;
use Common\Core\BaseController;
use Common\Database\Datasource\MysqlDataSource;
use Common\Workspaces\Actions\CrupdateWorkspace;
use Common\Workspaces\Actions\DeleteWorkspaces;
use Common\Workspaces\Requests\CrupdateWorkspaceRequest;
use Common\Workspaces\Workspace;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Http\Request;
class WorkspaceController extends BaseController
{
    /**
     * @var Workspace
     */
    private $workspace;
    /**
     * @var Request
     */
    private $request;
    public function __construct(Workspace $workspace, Request $request)
    {
        $this->workspace = $workspace;
        $this->request = $request;
    }
    public function index()
    {
        $userId = $this->request->get('userId');
        $this->authorize('index', [Workspace::class, $userId]);
        $builder = $this->workspace
            ->newQuery()
            ->withCount(['members'])
            ->with([
                'members' => function (HasMany $builder) {
                    $builder->with('permissions')->currentUserAndOwnerOnly();
                },
            ]);
        if ($userId) {
            $builder->forUser($userId);
        }
        $dataSource = new MysqlDataSource($builder, $this->request->all());
        $pagination = $dataSource->paginate();
        $pagination->transform(function (Workspace $workspace) {
            return $workspace->setCurrentUserAndOwner();
        });
        return $this->success(['pagination' => $pagination]);
    }
    public function show(Workspace $workspace)
    {
        $this->authorize('show', $workspace);
        $workspace->load(['invites', 'members']);
        if (
            $workspace->currentUser = $workspace->members
                ->where('id', Auth::id())
                ->first()
        ) {
            $workspace->currentUser->load('permissions');
        }
        return $this->success(['workspace' => $workspace]);
    }
    public function store(CrupdateWorkspaceRequest $request)
    {
        $this->authorize('store', Workspace::class);
        $workspace = app(CrupdateWorkspace::class)->execute($request->all());
        $workspace->loadCount('members');
        $workspace
            ->load([
                'members' => function (HasMany $builder) {
                    $builder->currentUserAndOwnerOnly();
                },
            ])
            ->setCurrentUserAndOwner();
        return $this->success(['workspace' => $workspace]);
    }
    public function update(
        Workspace $workspace,
        CrupdateWorkspaceRequest $request
    ) {
        $this->authorize('store', $workspace);
        $workspace = app(CrupdateWorkspace::class)->execute(
            $request->all(),
            $workspace,
        );
        return $this->success(['workspace' => $workspace]);
    }
    public function destroy(string $ids)
    {
        $workspaceIds = explode(',', $ids);
        $this->authorize('destroy', [Workspace::class, $workspaceIds]);
        app(DeleteWorkspaces::class)->execute($workspaceIds);
        return $this->success();
    }
}