<?php

    namespace App\Http\Controllers\Api;

    use App\Http\Requests\Api\PlatformsIndex;
    use App\Models\Api;
    use Illuminate\Http\Request;
    use App\Http\Controllers\Controller;
    use App\Http\Resources\ApisCollection;
    use App\Facades\Services\BackendUserService;
    use App\Http\Requests\Api\BaseShow;

    class ApiController extends Controller
    {
        /**
         * Display a listing of the resource.
         * @param  PlatformsIndex  $request
         * @return \Illuminate\Http\Response
         */
        public function index(PlatformsIndex $request)
        {
            $data = $request->validated();
            $platform = $data['platform'];
            $model = $data['model'];
            $user = BackendUserService::getLoggedUser();
            $query = Api::full()
                ->select('*');
            if (!$user) {
                $query->with('websites')->where('status', 'published');
            }
            $query->orderBy('website_objects.position', 'asc');

            if ($platform !== 0) {
                $query->whereHas('platforms', function ($query) use ($platform) {
                    $query->where('platform_id', $platform);
                });
            }

            if ($model !== 0) {
                $query->whereHas('models', function ($query) use ($model) {
                    $query->where('product_group_id', $model);
                });
            }

            $apis = $query->paginate(12);
            return new ApisCollection($apis);
        }
    }
