<?php

    namespace App\Http\Controllers\Api;

    use App\Http\Requests\Api\PublicationsIndex;
    use App\Http\Resources\EventCollection;
    use App\Models\Publication;
    use Illuminate\Http\Request;
    use App\Http\Controllers\Controller;
    use App\Http\Resources\PublicationsCollection;
    use App\Facades\Services\BackendUserService;

    use App\Http\Requests\Api\BaseShow;

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

            if (!empty($theme)) {
                $query->whereHas('themes', function ($query) use ($theme) {
                    $query->where('theme_id', $theme);
                });
            }

            $publications = $query->paginate(12);
            return new PublicationsCollection($publications);
        }
    }
