<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Http\Requests\Api\BaseShow;
use App\Http\Requests\Api\MeetingIndex;
use App\Http\Resources\MeetingListResource;
use App\Http\Resources\MeetingResource;
use App\Libs\Services\MeetingService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Resources\Json\JsonResource;

class MeetingController extends Controller
{
    protected MeetingService $meetingService;

    public function __construct(MeetingService $meetingService) {
        $this->meetingService = $meetingService;
    }

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

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

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

        $meeting = $this->meetingService->findBySlug($data['slug']);

        if ($meeting) {
            return new MeetingResource($meeting);
        }

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