✨ feat(API): standarisasi response API dengan ResponseCode enum dan penambahan struktur meta
- Menambahkan ResponseCode enum untuk standarisasi semua response API. - Integrasi meta data: nomor rekening, periode, request_id, dan reference_code. - Memperbarui validasi input dengan response code standar (INVALID_FIELD). - Struktur response dibuat konsisten untuk success dan error. - Logging diperkuat untuk debugging dan monitoring.
This commit is contained in:
@@ -57,19 +57,43 @@ class BalanceSummaryRequest extends FormRequest
|
||||
public function messages(): array
|
||||
{
|
||||
return [
|
||||
'account_number.required' => 'Nomor rekening wajib diisi',
|
||||
'account_number.string' => 'Nomor rekening harus berupa teks',
|
||||
'account_number.max' => 'Nomor rekening maksimal 50 karakter',
|
||||
'account_number.regex' => 'Nomor rekening hanya boleh mengandung huruf, angka, dan strip',
|
||||
'start_date.required' => 'Tanggal awal wajib diisi',
|
||||
'start_date.date_format' => 'Format tanggal awal harus YYYY-MM-DD',
|
||||
'start_date.before_or_equal' => 'Tanggal awal harus sebelum atau sama dengan tanggal akhir',
|
||||
'end_date.required' => 'Tanggal akhir wajib diisi',
|
||||
'end_date.date_format' => 'Format tanggal akhir harus YYYY-MM-DD',
|
||||
'end_date.after_or_equal' => 'Tanggal akhir harus sesudah atau sama dengan tanggal awal',
|
||||
'account_number.required' => 'Nomor rekening wajib diisi.',
|
||||
'account_number.string' => 'Nomor rekening harus berupa teks.',
|
||||
'account_number.max' => 'Nomor rekening maksimal :max karakter.',
|
||||
'account_number.regex' => 'Nomor rekening hanya boleh mengandung huruf, angka, dan strip.',
|
||||
'start_date.required' => 'Tanggal awal wajib diisi.',
|
||||
'start_date.date_format' => 'Format tanggal awal harus YYYY-MM-DD.',
|
||||
'start_date.before_or_equal' => 'Tanggal awal harus sebelum atau sama dengan tanggal akhir.',
|
||||
'end_date.required' => 'Tanggal akhir wajib diisi.',
|
||||
'end_date.date_format' => 'Format tanggal akhir harus YYYY-MM-DD.',
|
||||
'end_date.after_or_equal' => 'Tanggal akhir harus sesudah atau sama dengan tanggal awal.',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle a failed validation attempt.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Validation\Validator $validator
|
||||
* @return void
|
||||
*
|
||||
* @throws \Illuminate\Validation\ValidationException
|
||||
*/
|
||||
protected function failedValidation($validator)
|
||||
{
|
||||
$errors = $validator->errors();
|
||||
$firstError = $errors->first();
|
||||
|
||||
throw new \Illuminate\Http\Exceptions\HttpResponseException(
|
||||
response()->json(
|
||||
\Modules\Webstatement\Enums\ResponseCode::INVALID_FIELD->toResponse(
|
||||
null,
|
||||
$firstError
|
||||
),
|
||||
\Modules\Webstatement\Enums\ResponseCode::INVALID_FIELD->getHttpStatus()
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare the data for validation.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user