Spaces:
Running
Running
File size: 1,814 Bytes
907b200 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | <?php
namespace App\Traits;
use Illuminate\Pagination\LengthAwarePaginator;
trait ApiResponseTrait
{
/**
* Success Response
*/
protected function successResponse(string $message, $data = null, int $code = 200)
{
return response()->json([
'success' => true,
'message' => $message,
'data' => $data
], $code);
}
/**
* Error Response
*/
protected function errorResponse(string $message, int $code = 400, $errors = null)
{
return response()->json([
'success' => false,
'message' => $message,
'data' => $errors ? ['errors' => $errors] : null
], $code);
}
/**
* Paginated Response
*/
protected function paginatedResponse(string $message, LengthAwarePaginator $paginator)
{
return response()->json([
'success' => true,
'message' => $message,
'data' => [
'results' => $paginator->items(),
'pagination' => [
'currentPage' => $paginator->currentPage(),
'totalPages' => $paginator->lastPage(),
'totalResults' => $paginator->total(),
'perPage' => $paginator->perPage(),
'hasNextPage' => $paginator->hasMorePages(),
'hasPrevPage' => !$paginator->onFirstPage()
]
]
]);
}
/**
* List Response
*/
protected function listResponse(string $message, $items)
{
return response()->json([
'success' => true,
'message' => $message,
'data' => [
'results' => $items,
'pagination' => null
]
]);
}
}
|