File: /var/www/console.fixgini.com/app/Http/Controllers/CategoryController.php
<?php
namespace App\Http\Controllers;
use App\Models\Category;
use Illuminate\Support\Str;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
class CategoryController extends Controller
{
public function index()
{
$categories = Category::latest()->orderBy('name', 'asc')->get();
return response()->json(['status' => 'success', 'data' => $categories]);
}
public function list()
{
$categories = Category::whereNull('parent_id')
->latest()
->get()
->shuffle();
return response()->json(['status' => 'success', 'data' => $categories]);
}
public function get()
{
$categories = Category::whereNull('parent_id')->orderBy('name', 'asc')->get();
return response()->json(['status' => 'success', 'data' => $categories], 200);
}
// public function query(Request $request)
// {
// $category_id = $request->input('category_id');
// $categories = Category::with('gigs')->where('id', $category_id)->get();
// return response()->json(['status' => 'success', 'data' => $categories]);
// }
public function query(Request $request)
{
$category_id = $request->input('category_id');
$slug = $request->input('category_slug');
// Query by `id` or `slug`
$category = Category::with([
'gigs.reviews',
'gigs.shop'
])
->when($category_id, function ($query) use ($category_id) {
$query->where('id', $category_id);
})
->when($slug, function ($query) use ($slug) {
$query->orWhere('slug', $slug);
})
->first();
if (!$category) {
return response()->json(['status' => 'error', 'message' => 'Category not found'], 404);
}
return response()->json(['status' => 'success', 'data' => $category]);
}
public function sellerCategory(Request $request)
{
try {
$validatedData = $request->validate([
'seller_category_id' => 'required|exists:categories,id',
]);
// Fetch the category and its children
$categories = Category::where('id', $validatedData['seller_category_id'])
->with('children')
->orderBy('name', 'asc')
->get();
return response()->json(['status' => 'success', 'data' => $categories], 200);
} catch (\Throwable $th) {
Log::error('Unable to fetch seller subcategories: ' . $th->getMessage());
return response()->json(['status' => 'failed', 'message' => 'Unable to fetch seller subcategories.'], 500);
}
}
}