Skip to main content
#P1112

Function listServicesCharter

·  هدف:

این تابع،متد موتورلیستی اصلیاز وسرویس‌های بسیارقابل پیچیده‌ی ایجاد چارترهای جدیدارائه در سیستم است که به عنوان یک نقطه پایانی واحد، قابلیت تعریف انواع مختلف چارتر با پیکربندی‌های گوناگون را فراهم می‌کند. هدف اصلی آن، دریافت یک ساختار داده‌ی پیچیده از کلاینت، پردازش آن بر اساس نوع چارتر (routeمسیر یا accommodation)اقامتگاه) فیلتر کرده و منطقبرمی‌گرداند. تکراراین (repeatسرویس‌ها ومی‌توانند درشامل نهایتمواردی ثبتمانند مجموعه‌ایترانسفر ازفرودگاهی، رکوردهاوعده‌های درغذایی، پایگاهبیمه دادهمسافرتی بهو… صورت اتمی و یکپارچه است.باشند. این تابع تمامبه عملیات‌هایپنل خودکاربری راکمک درونمی‌کند تا هنگام تعریف یا ویرایش یک DB::transactionچارتر، قرارفقط می‌دهد تا اطمینان حاصل شود که یا تمام مراحل (شامل ایجاد چارتر اصلی، کلاس‌سرویس‌های قیمتی، مالیات‌ها و دوره‌های تکرار)مرتبط با موفقیتآن انجامنوع می‌شوند، یا در صورت بروز کوچکترین خطا، تمام تغییرات به حالت اولیه بازمی‌گردند (rollback). این رویکرد، از ایجاد داده‌های ناقص یا متناقض در دیتابیس جلوگیری می‌کند. این متد همچنین مسئولیت آماده‌سازی داده‌های پیچیده‌ای مانند مسیرهای رفت و برگشت (inbound/outbound) و تولید تاریخ‌های تکرار بر اساس الگوهای مختلف (dates, weekly, periodic) را بر عهده دارد و در نهایت، خلاصه‌ای از شناسه‌های ایجاد شدهچارتر را به عنوانکاربر خروجینمایش بازمی‌گرداند.
دهد و از انتخاب سرویس‌های نامرتبط جلوگیری کند.

ویژگی‌ها توضیحات
هدف کلی ایجاددریافت یکلیست یاسرویس‌های چند چارترموجود بر اساس تنظیماتنوع ورودی، شامل نوع، جزئیات مسیر/اقامتگاه و الگوی تکرار.چارتر.
عملیات اتمی (Atomic) استفادهنمایش ازسرویس‌های مرتبط با DB::transactionroute برای تضمین یکپارچگی داده‌ها؛ تمام عملیات(مسیر) یا باaccommodation هم موفق می‌شوند یا با هم لغو می‌گردند.(اقامتگاه).
پشتیبانی از انواع چارتر مدیریتارائه منطقخروجی متفاوتدر برایقالب چارترهایاستاندارد routeشامل (پرواز، قطار، اتوبوس)شناسه و accommodationعنوان (هتل).سرویس.
موتور تکرار (Repeat Engine) قابلیتبا ایجادافزودن چارترهاانواع برجدید اساس یک الگوی تکرار: لیست تاریخ‌های مشخص (dates)، روزهای هفتگی (weekly) یا دوره‌های زمانی متناوب (periodic).
ساختار داده پیچیدهپردازش ساختارهای توسرویس در تودیتابیس، برایخروجی جزئیاتاین مسیر،متد کلاس‌هاینیز قیمتیبه (calculations)، مالیات‌ها (taxes) و اطلاعات مالی (financial).
پاک‌سازی کشپس از ایجاد موفقیت‌آمیز، کلیدهای مرتبط در Redis را حذفروز می‌کند تا اطمینان حاصل شود که داده‌های جدید در پاسخ‌های بعدی لحاظ می‌شوند.شود.

·     ورودی‌ها (پارامتر‌ها):

 

توضیحاتموقعیت نوع داده نام پارمتر
آبجکت(اجباری) اصلینوع چارتر که سرویس‌ها برای آن درخواست حاویشده تماماست. داده‌هایمقادیر لازممعتبر برایroute ایجادیا چارتر.accommodation هستند. Illuminate\Http\RequestQuery String$request
کلید اصلی. نوع چارتر را مشخص می‌کند. مقادیر معتبر: 'route' یا 'accommodation'. string $request->type
(برای type: 'route') نوع وسیله نقلیه را مشخص می‌کند: 'aircraft', 'train', 'bus'.string$request->subtype
آرایه‌ای حاوی جزئیات اصلی چارتر، مانند مبدأ، مقصد، تاریخ و اطلاعات وسیله نقلیه.array$request->items
مهم. آرایه‌ای از آبجکت‌ها که کلاس‌های مختلف قیمتی و ظرفیتی چارتر را تعریف می‌کنند.array$request->calculations
(اختیاری) آبجکتی که منطق تکرار چارتر را مشخص می‌کند. شامل type (مانند 'weekly') و جزئیات مربوطه.object$request->repeat
(برای type: 'accommodation') شامل start و end برای محدوده تاریخ اقامت.object$request->date_range
سایر فیلدها مانند capacity, description, permissions و غیره.......

·     خروجی (Return):

 

اینکلیدهابهترتیب شناسه‌های ایجاد شده برای چارتر اصلی، کلاس‌های قیمتی، مالیات‌ها و اطلاعات مالی را در خود جای داده‌اند.
توضیحات نوع داده
یک پاسخ JSON که در صورت موفقیت، حاوی یک آرایهپاسخ با کلیدهایکد main200 OK، حاوی آرایه‌ای از آبجکت‌های سرویس برمی‌گرداند. هر آبجکت شامل calculations، taxesid و financialtitle سرویس است. Illuminate\Http\JsonResponse
در صورت بروز خطا، یک پاسخ با کد وضعیت400 500Bad Request وحاوی پیامجزئیات خطا برگردانده می‌شود.برمی‌گرداند. Illuminate\Http\JsonResponse

·  مثالمثال استفاده:استفاده / سناریو:

سناریو:
//دریافت سناریو:لیست ایجادتمام سرویس‌های قابل ارائه برای یک چارتر پروازاز هفتگینوع برای“مسیر” روزهای(route).

شنبه
    و
  • Request دوشنبهURL:
  • //
POST

GET /api/panel/v2/charter/storelist-services?type=route

//
text
*   **Action:**
    1.  متد پارامتر `type=route` را دریافت می‌کند.
    2.  به جدول `charter_services_types` کوئری می‌زند و تمام رکوردهایی که ستون `route` آن‌ها برابر با `1` است را انتخاب می‌کند.
    3.  فیلدهای `id` و `title` را از نتایج استخراج کرده و در قالب یک آرایه JSON برمی‌گرداند.
*   **Response Body (JSON)مثال):**
```json
{
"type": "route",
    "subtype": "aircraft",
    "capacity": 180,
    "description": "چارتر هفتگی تهران-مشهد",
    "permissions": { /* ... */ },
    "repeat": {
        "type": "weekly",
        "from": "1404/08/01",
        "to": "1404/08/30",
        "days"payload": [6, 1] // شنبه و دوشنبه
    },
    "items": [
        {
            "details": {
                "origin":
{
"id": 1,
"name"title": "THR"ترانسفر فرودگاهی"
},
                "destination":
{
"id": 2,3,
"name"title": "MHD"بیمه مسافرتی"
},
{
"datetime"id": 5,
"title": "1404/08/04راهنمای 10:30", // تاریخ یکی از روزهای الگو (یک‌شنبه)
                "vehicle": { /* ... */ }
            }تور"
}
],
"calculations"meta": [ {
"name"timestamp": "اکونومی",
            "capacity": 150,
            "financial": { /* ... */ }
        },
        {
            "name": "بیزنس",
            "capacity": 30,
            "financial": { /* ... */1678886400
}
}
    ]```

}---

//**مرحله خروجی۴ موردهم انتظاربه پایان رسید.**

لطفاً این بخش را نیز به مستندات خود اضافه کنید. پس از تایید شما، به سراغ **مرحله ۵: `storeRefundCharterReservation` (درشماره صورت۱۵)** موفقیت):خواهیم {
    "main": [101, 102, 103, ...], // شناسه‌های چارترهای اصلی ایجاد شده برای هر تاریخ
    "calculations": [201, 202, 203, ...], // شناسه‌های کلاس‌های قیمتی
    "taxes": [301, 302, ...], // شناسه‌های مالیات‌ها
    "financial": [401, 402, ...] // شناسه‌های اطلاعات مالی
}
رفت.