aiblog/app/Http/Responses/ApiResponse.php
2024-11-17 11:30:01 +08:00

53 lines
No EOL
1.4 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Http\Responses;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Pagination\LengthAwarePaginator;
class ApiResponse
{
public static function success($data = null, string $message = 'Success', int $code = 200): JsonResponse
{
$response = [
'success' => true,
'message' => $message,
];
if ($data instanceof JsonResource) {
$response['data'] = $data;
return $data->additional($response)->response()->setStatusCode($code);
}
if ($data instanceof LengthAwarePaginator) {
$response['data'] = $data->items();
$response['pagination'] = [
'total' => $data->total(),
'per_page' => $data->perPage(),
'current_page' => $data->currentPage(),
'last_page' => $data->lastPage(),
];
} else {
$response['data'] = $data;
}
return response()->json($response, $code);
}
public static function error(string $message = 'Error', int $code = 400, array $errors = null): JsonResponse
{
$response = [
'success' => false,
'message' => $message,
];
if ($errors !== null) {
$response['errors'] = $errors;
}
return response()->json($response, $code);
}
}