Skip to main content
#P1465

POST /api/v2/online/accommodation/check_status

Route Info

Method Endpoint Controller Input Purpose
POST /api/v2/online/accommodation/check_status OnlineController@checkAccommodationStatus JSON Body بررسی و قفل رزرو (Booking Lock) در Providerهای Tport, Sepehr, AirPlus, SnappTrip

Logic

تابع بزرگ و چندحالته است: براساس پارامتر $type (one of [tport, airplus, sepehr, snapptrip]) رزرو قفل می‌شود. برای هر سرویس داده‌های mapped (ID های mapping_accommodation و roomtypes و board_type) گرفته می‌شود و سپس:

  • Tport: فراخوانی دو API calculate_price و save_normal_reserve → تولید LockId.
  • AirPlus: ولیدیشن مسافر (کدملی/پاسپورت/تاریخ سن/ظرفیت) و مقایسه Lock موقت با DB charters.
  • Sepehr: خواندن مستقیم از Lock Data ذخیره‌شده.
  • SnappTrip: ایجاد booking با API create_book و برگشت reservation_code.

در نهایت اطلاعات قفل در جدول temporary_reservations ثبت می‌گردد.

Input

{
 "type":"tport",
 "accommodation":{"id":331,"room_type":{"id":11,"board_type_list":{"id":5,"service":"tport"}}},
 "agentDetails":{"mobile":"0912xxxxxx","email":"agent@test.ir"}
}

Response

{
 "changed": true,
 "data": {
   "lock_data": {"Status":true,"Service":"tport","LockId":7139841,"total_payable":4120000},
   "payable": false,
   "credit": false,
   "error": false
 }
}

Security

JWT معتبر + دسترسی ماژول Online لازم است. همه‌ی پارامترها اعتبارسنجی می‌شوند.

Dependencies

  • TportApi, SepehrApi, AirPlusApi, SnappTripApi
  • mapping_accommodations, mapping_roomtypes, mapping_board_type
  • ReservationController::capacityItemCharter(), taxesItemCharter(), financialCalculation()
  • UserController::upsertPassenger()
  • temporary_reservations DB table

Performance

با درجه وابستگی به APIهای خارجی، میانگین پاسخ ۳–۸ ثانیه است. برای AirPlus بیشترین بار اعتبارسنجی داخلی دارد.

Error Handling

کدهای خطا از ۱۰۱۱ تا ۱۰۲۶ مطابق ReservationController::staticGetErrorDetails() برمی‌گردند.

{"changed":false,"data":{"error":[{"code":1011,"message":"کدملی نامعتبر است"}]}}

Side Effects

ثبت داده در جدول temporary_reservations. در صورت موفقیت، LockId روی Booking با تاریخ expire موقت ذخیره می‌شود.

Audit Trail

در لاگ system_logs با نوع "AccommodationLockAttempt" و نتیجه Success/Failed ذخیره می‌شود.

Improvement

  • مدیریت queue برای API های بیرونی.
  • افزودن timeout و retry برای Tport و SnappTrip.
  • بازگردانی LockTTL در خروجی (زمان اعتبار قفل).

Conclusion

این تابع قلب مرحله‌ی «رزرو موقت و پیش‌خرید» در pipeline رزرو آنلاین است و پس از آن تابع نهایی storeTrade() برای ثبت قطعی فراخوانی می‌شود.