Mahdee Rajon  subception

File "FailedValidationExceptionResponse.php"

Full Path: /var/www/html/back/app/Responses/FailedValidationExceptionResponse.php
File size: 1012 B
MIME-type: text/x-php
Charset: utf-8

<?php

declare(strict_types=1);

namespace App\Responses;

use Illuminate\Contracts\Support\Responsable;
use Illuminate\Http\{JsonResponse, Response};
use Illuminate\Support\MessageBag;

final readonly class FailedValidationExceptionResponse implements Responsable
{
    private MessageBag $errors;

    public function __construct(MessageBag $errors)
    {
        $this->errors = $errors;
    }

    public function toResponse($request): JsonResponse
    {
        return new JsonResponse(
            data: [
                'status' => Response::HTTP_UNPROCESSABLE_ENTITY,
                'data' => [
                    'message' => __(key: 'Ошибка валидации!'),
                    'errors' => $this->errors
                ],
                'metadata' => [
                    'request_id' => str()->uuid()->toString(),
                    'timestamp' => now()->toIso8601String()
                ],
            ],
            status: Response::HTTP_UNPROCESSABLE_ENTITY
        );
    }
}