<?php

namespace App\Http\Controllers;

use App\Http\Requests\AdminDelete;
use App\Http\Requests\LetterForm;
use App\Http\Requests\LetterIndex;
use App\Http\Requests\LetterShow;
use App\Http\Requests\LetterUpdate;
use App\Http\Resources\LetterListResource;
use App\Http\Resources\LetterResource;
use App\Libs\Services\LetterService;

class LetterController extends Controller
{
    public function getLetters(LetterIndex $request, LetterService $letterService)
    {
        $data = $request->validated();
        $lettersData = $letterService->getLetters($data);

        if ($lettersData) {
            return [
                'data' => LetterListResource::collection($lettersData['letters']),
                'pagination' => $lettersData['pagination'],
            ];
        }
        return response()->json([], 404);
    }

    public function createLetter(LetterForm $request, LetterService $letterService)
    {
        $data = $request->validated();
        $letter = $letterService->createLetter($data);

        if (empty($letter)) {
            return response(['error' => 'Error'], 401);
        }

        return new LetterResource($letter);
    }

    public function getLetter(LetterShow $request, LetterService $letterService) {
        $data = $request->validated();
        $letter = $letterService->findLetterById($data['id']);

        if (empty($letter)) {
            return response(['error' => 'Error'], 401);
        }

        return new LetterResource($letter);
    }

    public function updateLetter(LetterUpdate $request, LetterService $letterService) {
        $data = $request->validated();
        $letter = $letterService->updateLetter($data);

        if (empty($letter)) {
            return response(['error' => 'Error'], 401);
        }

        return new LetterResource($letter);
    }

    public function deleteLetter(AdminDelete $request, LetterService $letterService) {
        $data = $request->validated();
        $response = $letterService->deleteLetter($data['id']);
        return $response;
    }
}
