/home/brandsfa/public_html/app/Http/Controllers/RestAPI/v1/BrandController.php
<?php

namespace App\Http\Controllers\RestAPI\v1;

use App\Http\Controllers\Controller;
use App\Models\Brand;
use App\Models\Product;
use App\Utils\BrandManager;
use Illuminate\Http\Request;

class BrandController extends Controller
{
    public function get_brands(Request $request)
    {
        if($request->has('seller_id') && !empty($request->seller_id)){
            //finding brand ids
            $brand_ids = Product::active()
                ->when($request->has('seller_id') && !empty($request->seller_id), function ($query) use ($request) {
                    return $query->where(['added_by' => 'seller'])
                        ->where('user_id', $request->seller_id);
                })->pluck('brand_id');

            $brands = Brand::active()->whereIn('id', $brand_ids)->withCount('brandProducts')->latest()->get();
        }else{
            $brands = BrandManager::get_active_brands();
        }

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

    public function get_products(Request $request, $brand_id)
    {
        try {
            $products = BrandManager::get_products($brand_id, $request);
        } catch (\Exception $e) {
            return response()->json(['errors' => $e], 403);
        }

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