#P1685
GET /v2/charter/warranty
Charter: List Warranties
این اندپوینت برای بازیابی لیستی کامل از تمام گارانتیهای مرتبط با یک چارتر مشخص (main_id) استفاده میشود. به ازای هر گارانتی، اطلاعات تکمیلی شامل جزئیات گارانتیکننده (همکار) و لیست اتاقهای اختصاصدادهشده (برای چارترهای اقامتگاهی) نیز بازگردانده میشود. این اندپوینت از یک مکانیزم کش (Caching) با استفاده از Redis برای بهینهسازی و افزایش سرعت دریافت اطلاعات همکاران بهره میبرد.
Request Overview
/v2/charter/warrantyAccess Control
- دسترسی معتبر JWT
Request Parameters (Query String)
این اندپوینت اطلاعات مورد نیاز خود را از طریق Query String دریافت میکند.
| Parameter | Type | Description |
|---|---|---|
| id | integer | (الزامی) شناسه اصلی چارتر (charter_main.id) که گارانتیهای آن باید لیست شوند. |
Example Request
GET /v2/charter/warranty?id=451
Logic Details
فرآیند پردازش درخواست به شرح زیر است:
- واکشی گارانتیهای اصلی:
- ابتدا تمام رکوردها از جدول
charter_warrantiesکهmain_idآنها باidارسال شده در درخواست برابر است، واکشی میشوند. - نتایج بر اساس
idبه صورت نزولی (DESC) مرتب میشوند تا جدیدترین گارانتیها در ابتدای لیست قرار گیرند.
- ابتدا تمام رکوردها از جدول
- پردازش و غنیسازی هر گارانتی (Mapping):
سیستم بر روی هر رکورد گارانتی واکشیشده، یک سری عملیات برای تکمیل اطلاعات انجام میدهد:
- واکشی اطلاعات گارانتیکننده (Guarantor):
- ابتدا تلاش میشود اطلاعات همکار (
colleague) از کش Redis با کلیدی مانندcolleagues:{id}خوانده شود. - در صورت عدم وجود در کش (Cache Miss): یک کوئری به جدول
colleaguesدر پایگاه داده زده میشود تا اطلاعات همکار استخراج شود. - سپس اطلاعات به دست آمده در Redis ذخیره میشود تا در درخواستهای بعدی با سرعت بیشتری در دسترس باشد (Cache Write).
- ابتدا تلاش میشود اطلاعات همکار (
- واکشی اتاقهای گارانتیشده (برای اقامتگاهی):
- یک کوئری مجزا به جدول
charter_warranty_accommodation_roomsزده میشود تا تمام اتاقهایی که به شناسه گارانتی فعلی (warranty_id) متصل هستند، استخراج شوند.
- یک کوئری مجزا به جدول
- ساختاردهی پاسخ نهایی:
- اطلاعات جمعآوری شده در یک ساختار JSON استاندارد و قابل فهم برای فرانتاند قالببندی میشود. فیلدهای پایگاه داده مانند
reserve_adultوper_adultدر یک شیء تو در تویwarrantyقرار میگیرند. - اگر هیچ اتاقی برای گارانتی یافت نشود، فیلد
room_idمقدارfalseخواهد گرفت.
- اطلاعات جمعآوری شده در یک ساختار JSON استاندارد و قابل فهم برای فرانتاند قالببندی میشود. فیلدهای پایگاه داده مانند
- واکشی اطلاعات گارانتیکننده (Guarantor):
Response Structure
پاسخ موفق (Success)
در صورت موفقیت، پاسخ 200 OK به همراه یک ساختار JSON استاندارد حاوی لیست گارانتیها بازگردانده میشود.
- Status Code:
200 OK
{
"status": true,
"time": 1733271000, // Unix Timestamp
"data": [
{
"id": 99,
"item_id": 102, // شناسه آیتم (مثلا نوع اتاق)
"guarantor": { // اطلاعات کامل همکار از کش یا دیتابیس
"id": 25,
"title_fa": "آژانس مسافرتی بهار",
"title_en": "Bahar Agency",
"first_name": "علی",
"last_name": "رضایی",
"credit_amount": 50000000,
"status": 1
},
"warranty": {
"adult": {
"number": 2,
"price": 2500000
},
"child": {
"number": 1,
"price": 1800000
},
"infant": {
"number": 0,
"price": 0
}
},
"room_id": [ // لیست اتاق های این گارانتی
{
"id": 210,
"warranty_id": 99,
"room_id": 305
},
{
"id": 211,
"warranty_id": 99,
"room_id": 306
}
],
"sank_cost": 0,
"service_price": 150000,
"start_date": "2025-12-10",
"end_date": "2025-12-15",
"status": 1
},
{
"id": 88,
"item_id": 101, // شناسه آیتم (مثلا کلاس پروازی)
"guarantor": { ... },
"warranty": { ... },
"room_id": false, // این گارانتی اقامتگاهی نیست یا اتاقی ندارد
"sank_cost": 500000,
"service_price": 0,
"start_date": null,
"end_date": null,
"status": 1
}
]
}
پاسخ خطا (Error)
در صورت بروز هرگونه استثناء (Exception) در سرور، یک پاسخ با ساختار زیر و کد وضعیت (معمولا 200 OK به دلیل مدیریت خطا در کد) بازگردانده میشود.
توجه: نمایش trace خطا در محیط پروداکشن توصیه نمیشود.
{
"status": false,
"time": 1733271000,
"message": "Error message from the exception.",
"trace": [ ... ] // Stack trace of the error
}