#P1087
Function listWarrantyCharter
· هدف:
این متد وظیفه واکشی و آمادهسازی لیست گارانتیهای مرتبط با یک چارتر خاص را بر عهده دارد. پس از استخراج رکوردهای گارانتی از جدول charter_warranties، متد برای هر گارانتی، اطلاعات تکمیلی مهمی را از منابع دیگر واکشی و به آبجکت خروجی ضمیمه میکند. اولاً، اطلاعات گارانتیکننده (همکار) را با اولویت از کش Redis (colleagues:{id}) میخواند و در صورت عدم وجود، از دیتابیس استعلام کرده و در کش ذخیره میکند. ثانیاً، اگر چارتر از نوع اقامتی باشد، جزئیات اتاقهای گارانتی شده (مانند تعداد، کلاس و…) را از جدول charter_warranty_accommodation_rooms استخراج میکند. در نهایت، با فراخوانی ReservationController::capacityItemCharter، ظرفیت فعلی آیتمهای گارانتی شده را محاسبه کرده و به خروجی اضافه میکند. این فرآیند یک نمای کامل و جامع از هر گارانتی، شامل جزئیات مالی، اطلاعات گارانتیکننده، ظرفیت و اتاقهای مرتبط را فراهم میکند.
| ویژگیها | توضیحات |
| هدف کلی | واکشی و نمایش لیست کامل گارانتیهای یک چارتر. |
| واکشی اصلی | استعلام از جدول charter_warranties بر اساس main_id. |
| بهینهسازی با کش | خواندن اطلاعات گارانتیکننده (همکار) از Redis و ذخیرهسازی در صورت نیاز. |
| اطلاعات تکمیلی | ضمیمه کردن جزئیات اتاقهای گارانتی شده برای چارتراهای اقامتی. |
| محاسبه ظرفیت | محاسبه و افزودن ظرفیت فعلی (کل، باقیمانده، فروختهشده) برای هر آیتم گارانتی. |
| خروجی جامع | تجمیع اطلاعات از جداول و کشهای مختلف برای ارائه یک آبجکت کامل. |
· ورودیها (پارامترها):
| توضیحات | موقعیت | نوع داده | نام پارمتر |
| شناسه چارتر اصلی که لیست گارانتیهای آن مورد نیاز است. | Route/Body |
integer |
$request->id |
· خروجی (Return):
| توضیحات | نوع داده |
یک آبجکت JSON با کلید items (آرایهای از آبجکتهای گارانتی) و meta. هر آبجکت گارانتی شامل اطلاعات اصلی، آبجکت guarantor، آرایه rooms (در صورت وجود) و آبجکت capacity است. |
Illuminate\Http\JsonResponse |
در صورت بروز خطا، یک پاسخ با کد 400 Bad Request و جزئیات استثناء. |
Illuminate\Http\JsonResponse |
· مثال استفاده / سناریو:
سناریو: مشاهده لیست گارانتیهای یک چارتر هتل
- Request:
id: 620- Action:
- متد تمام رکوردها از
charter_warrantiesباmain_id=620را واکشی میکند. - برای هر گارانتی (فرضاً شناسه گارانتی
15وguarantorآن22است):
a. اطلاعات همکار 22 از Redis خوانده میشود.
b. تمام رکوردها از charter_warranty_accommodation_rooms با warranty_id=15 واکشی میشود.
c. ظرفیت آیتمهای مرتبط با این گارانتی محاسبه میشود.
- تمام این اطلاعات در یک آبجکت جامع تجمیع شده و به لیست خروجی اضافه میشود.
- Response:
HTTP Status:200 OKBody:
{
"items": [
{
"id": 15,
"main_id": 620,
"amount": 50000000,
"guarantor": { "id": 22, "title_fa": "آژانس الف", ... },
"rooms": [ { "item_id": 110, "capacity": 5, ... }, { "item_id": 112, "capacity": 3, ... } ],
"capacity": { "item_110": { "total": 5, "balance": 2, ... }, "item_112": { "total": 3, "balance": 3, ... } }
}
],
"meta": { "timestamp": ... }
}