Skip to main content
#P1743

POST /v2/core/hub/reservation

Hub: Create Manual Wallet Transaction

این اندپوینت برای ثبت دستی یک تراکنش مالی (سند) در کیف پول (`wallet`) استفاده می‌شود. اگرچه URL به "رزرو" اشاره دارد، اما عملکرد اصلی آن ایجاد یک رکورد بدهکار (`debit`) یا بستانکار (`credit`) برای یک شعبه خاص است. این عملیات معمولاً توسط مدیران هاب برای اصلاح حساب یا ثبت سند دستی انجام می‌شود.

Request Overview

URL: /v2/core/hub/reservation
Method: 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 (الزامی) نوع ماهیت تراکنش. مقادیر مجاز:
  • 'credit': افزایش اعتبار (بستانکار)
  • 'debit': کاهش اعتبار (بدهکار)
value numeric (الزامی) مبلغ تراکنش. بسته به diagnosis در ستون credit یا debit قرار می‌گیرد.
description string توضیحات تراکنش (بابت چه چیزی).

Logic Details

فرآیند ثبت در کنترلر به صورت زیر است:

  1. آماده‌سازی داده‌ها:
    • فیلد object_type به صورت سخت‌کد شده برابر با 'branch' قرار می‌گیرد.
    • فیلد object برابر با مقدار ارسالی branch تنظیم می‌شود.
    • شناسه اپراتور انجام‌دهنده عملیات از $request->get('operator')->id خوانده می‌شود.
  2. تعیین ماهیت مالی (Diagnosis Logic):
    • اگر diagnosis == 'credit' باشد: مقدار value در ستون credit و ستون debit برابر 0 می‌شود.
    • اگر diagnosis == 'debit' باشد: مقدار value در ستون debit و ستون credit برابر 0 می‌شود.
  3. درج در دیتابیس: آرایه ساخته شده مستقیماً با استفاده از 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
↓ (debit)
Set Debit = Value
Set Credit = 0
Prepare Insert Array
(Set object_type='branch')
DB::table('wallet')->insert(...)
Success?
No
Return 400 Bad Request
↓ (Yes)
Return 201 Created