1
0

update pagging data table material

This commit is contained in:
Wian Drs
2026-07-03 11:50:28 +07:00
parent c574ada5c1
commit 2b3592c4c2
2 changed files with 47 additions and 2 deletions
@@ -34,8 +34,9 @@ class MaterialController extends ApiController
$data = $this->service->list($filters); $data = $this->service->list($filters);
return $this->success( return $this->successPaginated(
MaterialResource::collection($data), $data,
MaterialResource::class,
'List material user berhasil diambil' 'List material user berhasil diambil'
); );
} }
+44
View File
@@ -2,6 +2,9 @@
namespace App\Traits; namespace App\Traits;
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
use Illuminate\Http\Resources\Json\JsonResource;
trait ApiResponse trait ApiResponse
{ {
protected function success($data = null, string $message = 'Success', int $code = 200) protected function success($data = null, string $message = 'Success', int $code = 200)
@@ -70,4 +73,45 @@ trait ApiResponse
'message' => $message 'message' => $message
], 404); ], 404);
} }
protected function successPaginated(
LengthAwarePaginator $data,
string $resource,
string $message = 'Success',
int $code = 200
) {
return response()->json([
'success' => true,
'code' => $code,
'message' => $message,
'data' => $resource::collection($data->items()),
'pagination' => [
'current_page' => $data->currentPage(),
'per_page' => $data->perPage(),
'from' => $data->firstItem(),
'to' => $data->lastItem(),
'last_page' => $data->lastPage(),
'total' => $data->total(),
'has_more' => $data->hasMorePages(),
'count' => count($data->items()),
'next_page' => $data->nextPageUrl(),
'prev_page' => $data->previousPageUrl(),
'first_page' => $data->url(1),
'last_page_url'=> $data->url($data->lastPage()),
],
'filters' => [
'page' => (int) request()->input('page', 1),
'per_page' => (int) request()->input('per_page', 15),
'search' => request()->input('search'),
'sort_by' => request()->input('sort_by'),
'sort_order' => request()->input('sort_order', 'desc'),
'type' => request()->input('type'),
]
], $code);
}
} }