Files
dredgenews/app/Http/Controllers/CategoryController.php
T
dredgy 439139a057
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled
Done
2026-07-04 23:09:00 +10:00

74 lines
2.0 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Http\Requests\Categories\StoreCategoryRequest;
use App\Http\Requests\Categories\UpdateCategoryRequest;
use App\Models\Category;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\DB;
use Inertia\Inertia;
use Inertia\Response;
class CategoryController extends Controller
{
public function getAll(){
return Category::query()
->where('user_id', request()->user()->id)
->whereNull('parent_id')
->with(['children.feeds', 'feeds'])
->orderBy('title')
->get();
}
public function index(): Response
{
$categories = $this->getAll();
return Inertia::render('Settings/Index', [
'categories' => $categories,
]);
}
public function store(StoreCategoryRequest $request): RedirectResponse
{
DB::transaction(function () use ($request) {
$category = Category::create([
'user_id' => $request->user()->id,
'parent_id' => $request->input('parent_id'),
'title' => $request->input('title'),
'description' => $request->input('description'),
]);
$category->feeds()->createMany($request->input('feeds', []));
});
return back();
}
public function update(UpdateCategoryRequest $request, Category $category): RedirectResponse
{
DB::transaction(function () use ($request, $category) {
$category->update([
'parent_id' => $request->input('parent_id'),
'title' => $request->input('title'),
'description' => $request->input('description'),
]);
$category->feeds()->delete();
$category->feeds()->createMany($request->input('feeds', []));
});
return back();
}
public function destroy(Category $category): RedirectResponse
{
abort_unless($category->user_id === request()->user()->id, 403);
$category->delete();
return back();
}
}