89 lines
2.2 KiB
PHP
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);
|
|
}
|
|
}
|