GOOD SHELL MAS BOY
Server: Apache/2.4.52 (Ubuntu)
System: Linux vmi1836763.contaboserver.net 5.15.0-130-generic #140-Ubuntu SMP Wed Dec 18 17:59:53 UTC 2024 x86_64
User: www-data (33)
PHP: 8.4.10
Disabled: NONE
Upload Files
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);
        }
    }
}