Mahdee Rajon  subception

File "ResponseDto.php"

Full Path: /var/www/html/back/app/Responses/ResponseDto.php
File size: 1.15 KB
MIME-type: text/x-php
Charset: utf-8

<?php

declare(strict_types=1);

namespace App\Responses;

use Spatie\LaravelData\Data;

class ResponseDto extends Data
{
    public function __construct(
        public string|null       $message = null,
        public array|null        $errors = null,
        public object|array|null $data = null,
        public ?bool             $status = null,

        /** @var PaginationDto */
        public ?array            $pagination = null,
        public ?bool             $paginatable = false,
    ) {

        if ($this->status === null) {
            $this->status = true;
        }

        if ($this->paginatable && blank($this->pagination)) {
            $this->pagination = Dto::dataExample(PaginationDto::class);
        }

        if (!$this->paginatable) {
            unset($this->pagination);
        }
        unset($this->paginatable);
    }

    public static function example(): array
    {
        return [
            'data' => [
               'status' => true,
               'message' => null,
               'errors' => null,
               'data' => [],
               'pagination' => null,
            ],
           'status' => true,
        ];
    }
}