From ab10f03afee891321b354f165b2430a0acf354e3 Mon Sep 17 00:00:00 2001 From: AmirmahdiNourkazemi Date: Sat, 13 Jun 2026 18:40:18 +0330 Subject: [PATCH] fix --- app/Http/Controllers/CategoryController.php | 38 +++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/app/Http/Controllers/CategoryController.php b/app/Http/Controllers/CategoryController.php index 5b3fc79..1cc0769 100644 --- a/app/Http/Controllers/CategoryController.php +++ b/app/Http/Controllers/CategoryController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; use App\Models\Category; +use App\Models\MusicCategory; use App\Traits\StoresUploads; use Illuminate\Http\Request; use Illuminate\Support\Facades\Storage; @@ -14,6 +15,12 @@ class CategoryController extends Controller public function index(Request $request) { + // Playlist categories live in their own table (music_categories); serve + // them here too so the front has one /categories?type=... entry point. + if ($request->input('type') === Category::TYPE_PLAYLIST) { + return response()->json($this->playlistCategories($request)); + } + $query = Category::query()->withCount('subcategories'); if ($request->filled('type')) { @@ -29,6 +36,37 @@ public function index(Request $request) ); } + // Music categories normalized to the generic category shape. + private function playlistCategories(Request $request) + { + $query = MusicCategory::query()->with('image')->withCount('subcategories'); + + if (!$request->boolean('include_inactive')) { + $query->where('is_active', true); + } + + if ($request->boolean('with_subcategories')) { + $query->with('subcategories.image'); + } + + return $query->orderBy('order')->get()->map(function ($c) use ($request) { + return [ + 'id' => $c->id, + 'name' => $c->name, + 'type' => Category::TYPE_PLAYLIST, + 'description' => $c->description, + 'icon' => $c->image?->path, + 'icon_url' => $c->image?->url, + 'order' => $c->order, + 'is_active' => $c->is_active, + 'subcategories_count' => $c->subcategories_count, + 'subcategories' => $request->boolean('with_subcategories') ? $c->subcategories : null, + 'created_at' => $c->created_at, + 'updated_at' => $c->updated_at, + ]; + }); + } + public function store(Request $request) { $data = $request->validate([