<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Http\Requests\Api\BaseShow;
use App\Http\Requests\Api\EventItemIndex;
use App\Http\Resources\EventItemListResource;
use App\Http\Resources\EventItemResource;
use App\Libs\Services\EventItemService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Resources\Json\JsonResource;

class EventItemController extends Controller
{
    protected EventItemService $eventItemService;

    public function __construct(EventItemService $eventItemService) {
        $this->eventItemService = $eventItemService;
    }

    /**
     * Display the specified resource.
     *
     * @param EventItemIndex $request
     * @return JsonResource|JsonResponse
     */
     public function index(EventItemIndex $request)
    {
        $data = $request->validated();
        $eventItems = $this->eventItemService->list($data);

        if ($eventItems) {
            return [
                'data' => EventItemListResource::collection($eventItems['events']),
                'pagination' => $eventItems['pagination'],
            ];
        }
        return response()->json([], 200);
    }

    /**
     * Display the specified resource.
     *
     * @param BaseShow $request
     * @return JsonResource|JsonResponse
     */
    public function show(BaseShow $request)
    {
        $data = $request->validated();

        $eventItem = $this->eventItemService->findBySlug($data['slug']);

        if ($eventItem) {
            return new EventItemResource($eventItem);
        }

        return response()->json(null, 404);
    }
}
