#P1743
POST /v2/core/hub/reservation
Hub: Create Manual Wallet Transaction
این اندپوینت برای ثبت دستی یک تراکنش مالی (سند) در کیف پول (`wallet`) استفاده میشود. اگرچه URL به "رزرو" اشاره دارد، اما عملکرد اصلی آن ایجاد یک رکورد بدهکار (`debit`) یا بستانکار (`credit`) برای یک شعبه خاص است. این عملیات معمولاً توسط مدیران هاب برای اصلاح حساب یا ثبت سند دستی انجام میشود.
Request Overview
URL:
/v2/core/hub/reservationMethod: POST
Controller: HubController@hubStoreReservation
Middleware: authWithJwt
Access Control
- نیاز به توکن احراز هویت (JWT) دارد.
- شناسه اپراتور (`operator`) به صورت خودکار از توکن یا میدلور استخراج میشود (`$request->get('operator')`).
Request Body Parameters
| Field | Type | Description |
|---|---|---|
| branch | integer/string | (الزامی) شناسه شعبهای که تراکنش برای آن ثبت میشود. این مقدار هم در فیلد branch و هم در فیلد object ذخیره میگردد. |
| target_type | string | نوع مقصد تراکنش (مثلاً user, office, provider). |
| target | integer/string | شناسه مقصد تراکنش (ID مربوط به target_type). |
| diagnosis | string | (الزامی) نوع ماهیت تراکنش. مقادیر مجاز:
|
| value | numeric | (الزامی) مبلغ تراکنش. بسته به diagnosis در ستون credit یا debit قرار میگیرد. |
| description | string | توضیحات تراکنش (بابت چه چیزی). |
Logic Details
فرآیند ثبت در کنترلر به صورت زیر است:
- آمادهسازی دادهها:
- فیلد
object_typeبه صورت سختکد شده برابر با'branch'قرار میگیرد. - فیلد
objectبرابر با مقدار ارسالیbranchتنظیم میشود. - شناسه اپراتور انجامدهنده عملیات از
$request->get('operator')->idخوانده میشود.
- فیلد
- تعیین ماهیت مالی (Diagnosis Logic):
- اگر
diagnosis == 'credit'باشد: مقدارvalueدر ستون credit و ستون debit برابر 0 میشود. - اگر
diagnosis == 'debit'باشد: مقدارvalueدر ستون debit و ستون credit برابر 0 میشود.
- اگر
- درج در دیتابیس: آرایه ساخته شده مستقیماً با استفاده از
DB::table('wallet')->insert()در جدول ذخیره میشود.
Response Structure
پاسخ موفق
- Status Code:
201 Created - Body: Empty (بدون محتوا).
پاسخ خطا
- Status Code:
400 Bad Request - در صورت بروز هرگونه Exception در فرآیند درج.
{
"error": {
"code": 1000,
"message": "SQLSTATE[23000]: Integrity constraint violation..." // پیام خطا
},
"meta": {
"timestamp": 1733737200
}
}
Flowchart
Start Request (POST)
↓
Extract Operator from Request Attributes
↓
Check Diagnosis
↓ (credit)
Set Credit = Value
Set Debit = 0
Set Debit = 0
↓ (debit)
Set Debit = Value
Set Credit = 0
Set Credit = 0
↓
Prepare Insert Array
(Set object_type='branch')
(Set object_type='branch')
↓
DB::table('wallet')->insert(...)
↓
Success?
No
Return 400 Bad Request
↓ (Yes)
Return 201 Created