/home/brandsfa/www/app/Http/Controllers/RestAPI/v4/CategoryController.php
<?php

namespace App\Http\Controllers\RestAPI\v4;

use App\Http\Controllers\Controller;
use App\Models\Category;
use App\Utils\CategoryManager;
use App\Utils\Helpers;
use Illuminate\Http\Request;

class CategoryController extends Controller
{
    public function get_categories()
    {
        try {
            $categories = Category::with(['childes.childes'])->where(['position' => 0])->priority()->get();
            return response()->json($categories, 200);
        } catch (\Exception $e) {
            return response()->json([], 200);
        }
    }

    public function get_products(Request $request, $id)
    {
        return response()->json(Helpers::product_data_formatting(CategoryManager::products($id, $request), true), 200);
    }

    public function popular_categories(){
        $categories = Category::withCount(['product' => function($query){
                $query->whereHas('orderDetails', function($query){
                    $query->where('delivery_status', 'delivered');
                })->active();
            }])
            ->orderBy('product_count', 'DESC')
            ->take(9)->get();

        return response()->json($categories, 200);
    }
}