<?php

    namespace App\Http\Controllers\Api;

    use App\Http\Requests\Api\ProjectsIndex;
    use App\Http\Resources\EventCollection;
    use App\Models\Project;
    use Illuminate\Http\Request;
    use App\Http\Controllers\Controller;
    use App\Http\Resources\ProjectsCollection;
    use App\Facades\Services\BackendUserService;
    use App\Http\Requests\Api\BaseShow;

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

            if ($category !== 0) {
                $query->whereHas('categories', function ($query) use ($category) {
                    $query->where('category_id', $category);
                });
            }

            if (count($tags) > 0) {
                $query->whereHas('tags', function ($query) use ($tags) {
                    $query->whereIn('tag_id', $tags);
                });
            }

            $projects = $query->paginate(12);

            return new ProjectsCollection($projects);
        }
    }
