Files
2026-07-27 16:24:09 +07:00

89 lines
2.2 KiB
PHP

<?php
namespace App\Traits;
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
trait ApiResponse
{
protected function success($data = null, string $message = 'Success', int $code = 200)
{
return response()->json([
'success' => true,
'code' => $code,
'message' => $message,
'data' => $data,
], $code);
}
protected function created($data = null, string $message = 'Data berhasil dibuat')
{
return response()->json([
'success' => true,
'code' => 201,
'message' => $message,
'data' => $data,
], 201);
}
protected function updated($data = null, string $message = 'Data berhasil diperbarui')
{
return response()->json([
'success' => true,
'code' => 200,
'message' => $message,
'data' => $data,
]);
}
protected function deleted(string $message = 'Data berhasil dihapus')
{
return response()->json([
'success' => true,
'code' => 200,
'message' => $message,
]);
}
protected function error(string $message = 'Internal Server Error', int $code = 500)
{
return response()->json([
'success' => false,
'code' => $code,
'message' => $message,
], $code);
}
protected function validationError($errors)
{
return response()->json([
'success' => false,
'code' => 422,
'message' => 'Validation Error',
'errors' => $errors,
], 422);
}
protected function notFound(string $message = 'Data tidak ditemukan')
{
return response()->json([
'success' => false,
'code' => 404,
'message' => $message,
], 404);
}
protected function successPaginated(
LengthAwarePaginator $data,
string $resource,
string $message = 'Success',
int $code = 200
) {
$data->through(
fn ($item) => (new $resource($item))->resolve(request())
);
return $this->success($data, $message, $code);
}
}