json([ 'success' => true, 'message' => $message, 'data' => $data, ], $status); } /** * @param array $errors */ public static function failure(string $message, array $errors = [], int $status = 400): JsonResponse { return response()->json([ 'success' => false, 'message' => $message, 'errors' => $errors === [] ? new stdClass : $errors, ], $status); } /** * @param LengthAwarePaginator $paginator */ public static function paginated(LengthAwarePaginator $paginator, string $message = 'OK'): JsonResponse { return response()->json([ 'success' => true, 'message' => $message, 'data' => array_values($paginator->items()), 'meta' => [ 'current_page' => $paginator->currentPage(), 'per_page' => $paginator->perPage(), 'total' => $paginator->total(), 'last_page' => $paginator->lastPage(), ], ]); } public static function perPage(mixed $requested): int { if (! is_numeric($requested)) { return self::DEFAULT_PER_PAGE; } $pageSize = (int) $requested; if ($pageSize < 1) { return self::DEFAULT_PER_PAGE; } return min($pageSize, self::MAX_PER_PAGE); } }