/
Shamaeva2
/
coursework.local
Обзор
Документация
Войти
/
Shamaeva2
/
coursework.local
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
app/Http/Controllers/BuildingController.php
119 строк
3 KB
Шамаева Виктория Сергеевна
политики для админов и пользователей
22 июн 2026, 13:50
22 июн 2026, 13:50
aac77d2
Код
Авторство
О чём код?
<?php namespace App\Http\Controllers; use App\Models\Building; use App\Http\Requests\StoreBuildingRequest; use App\Http\Requests\UpdateBuildingRequest; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Gate; use Inertia\Inertia; use Inertia\Response; class BuildingController extends Controller { /** * Display a listing of the resource. */ public function index(Request $request): Response { Gate::authorize('viewAny', Building::class); $perPage = 10; $orderBy = (string) $request->input('orderBy', 'desc'); $search = (string) $request->input('search', ''); $query = Building::query(); match ($orderBy) { 'desc' => $query->orderBy('created_at', 'desc'), 'asc' => $query->orderBy('created_at', 'asc'), default => $query->orderBy('created_at', 'desc'), }; if ($request->filled('search')) { $query->where(function ($searchQuery) use ($search) { $searchQuery->where('name', 'LIKE', "%{$search}%") ->orWhere('address', 'LIKE', "%{$search}%"); }); } $buildings = $query->paginate($perPage)->withQueryString(); return Inertia::render('buildings/VIndex', [ 'buildings' => $buildings, 'filters' => [ 'orderBy' => $orderBy, 'search' => $search, ], ]); } /** * Show the form for creating a new resource. */ public function create(): Response { Gate::authorize('create', Building::class); return Inertia::render('buildings/VCreate'); } /** * Store a newly created resource in storage. */ public function store(StoreBuildingRequest $request): RedirectResponse { Gate::authorize('create', Building::class); Building::create($request->validated()); return redirect()->route('buildings.index'); } /** * Display the specified resource. */ public function show(Building $building): Response { Gate::authorize('view', $building); return Inertia::render('buildings/VShow', [ 'building' => $building, ]); } /** * Show the form for editing the specified resource. */ public function edit(Building $building): Response { Gate::authorize('update', $building); return Inertia::render('buildings/VEdit', [ 'building' => $building, ]); } /** * Update the specified resource in storage. */ public function update(UpdateBuildingRequest $request, Building $building): RedirectResponse { Gate::authorize('update', $building); $building->update($request->validated()); return redirect()->route('buildings.index'); } /** * Remove the specified resource from storage. */ public function destroy(Building $building): RedirectResponse { Gate::authorize('delete', $building); $building->delete(); return redirect()->route('buildings.index'); } }