authorize('viewAny', Project::class); return Inertia::render('projects/index', [ 'projects' => ProjectResource::collection( Project::query()->simplePaginate(config('web.pagination_size')) ), ]); } #[Post('/', name: 'projects.store')] public function store(Request $request): RedirectResponse { $this->authorize('create', Project::class); $project = app(CreateProject::class)->create(user(), $request->all()); user()->update([ 'current_project_id' => $project->id, ]); return redirect()->route('projects') ->with('success', 'Project created successfully.'); } #[Post('switch/{project}', name: 'projects.switch')] public function switch(Project $project): RedirectResponse { $this->authorize('view', $project); user()->update([ 'current_project_id' => $project->id, ]); $previousUrl = URL::previous(); $previousRequest = Request::create($previousUrl); $previousRoute = app('router')->getRoutes()->match($previousRequest); if (count($previousRoute->parameters()) > 0) { return redirect()->route('servers'); } return redirect()->route($previousRoute->getName()); } #[Post('/{project}/users', name: 'projects.users')] public function storeUser(Request $request, Project $project): RedirectResponse { $this->authorize('update', $project); app(AddUser::class)->add($project, $request->all()); return redirect()->route('projects') ->with('success', 'User added to project successfully.'); } #[Delete('{project}/users', name: 'projects.users')] public function destroyUser(Request $request, Project $project): RedirectResponse { $this->authorize('update', $project); $this->validate($request, [ 'user' => [ 'required', 'exists:users,id', ], ]); $user = User::query()->find($request->input('user')); $project->users()->detach($user); return redirect()->route('projects') ->with('success', 'User removed from project successfully.'); } #[Delete('{project}', name: 'projects.destroy')] public function destroy(Request $request, Project $project): RedirectResponse { $this->authorize('delete', $project); app(DeleteProject::class)->delete(user(), $project, $request->all()); return redirect()->route('projects') ->with('success', 'Project deleted successfully.'); } }