<?php

    namespace App\Http\Controllers\Api;

    use App\Http\Requests\Api\ProductGroupsIndex;
    use App\Http\Resources\EventCollection;
    use App\Models\ThreeDModel;
    use Illuminate\Http\Request;
    use App\Http\Controllers\Controller;
    use App\Http\Resources\ThreeDModelsCollection;
    use App\Facades\Services\BackendUserService;
    use App\Http\Requests\Api\BaseShow;

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

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

            $threeDModels = $query->paginate(12);
            $tdm = new ThreeDModelsCollection($threeDModels);
            return $tdm;
        }
    }
