<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Http\Requests\Api\BaseShow;
use App\Http\Requests\Api\RequestEmails;
use App\Http\Requests\Api\WorkGroupIndex;
use App\Http\Resources\EmailResource;
use App\Http\Resources\WorkGroupListResource;
use App\Http\Resources\WorkGroupResource;
use App\Libs\Services\WorkGroupService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Resources\Json\JsonResource;

class WorkGroupController extends Controller
{
    protected WorkGroupService $workGroupService;

    public function __construct(WorkGroupService $workGroupService) {
        $this->workGroupService = $workGroupService;
    }

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

        $workGroups = $this->workGroupService->list($data);

        if ($workGroups) {
            return response()->json(WorkGroupListResource::collection($workGroups), 200);
        }
        return response()->json([], 200);
    }

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

        $workGroup = $this->workGroupService->findBySlug($data['slug']);

        if ($workGroup) {
            return new WorkGroupResource($workGroup);
        }

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

    public function getEmails(RequestEmails $request)
    {
        $data = $request->validated();

        $emails = $this->workGroupService->getEmails($data);

        return new EmailResource($emails);
    }
}
