Skip to main content
#P1095

Function getAgeTitle 18

·  هدف:

این متد یک ابزار کمکی ساده و کاربردی برای تعیین گروه سنی (adult, child, infant) یک شخص بر اساس تاریخ تولد و یک تاریخ مبنا (معمولاً تاریخ پرواز یا شروع اقامت) است. منطق آن بر اساس محاسبه اختلاف تعداد روزها بین دو تاریخ کار می‌کند. ابتدا تاریخ تولد را با استفاده از Functions::checkDatetime به فرمت استاندارد تبدیل کرده و سپس اختلاف آن با تاریخ مبنا را بر حسب روز محاسبه می‌کند. در نهایت، بر اساس قوانین استاندارد صنعت هوانوردی و گردشگری، گروه سنی را مشخص می‌کند: کمتر یا مساوی ۷۳۰ روز (۲ سال) به عنوان infant (نوزاد)، بین ۷۳۰ و ۴۳۸۰ روز (۲ تا ۱۲ سال) به عنوان child (کودک)، و بیشتر از ۴۳۸۰ روز (۱۲ سال) به عنوان adult (بزرگسال) در نظر گرفته می‌شود.

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

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

 

توضیحات نوع داده نام پارمتر
آبجکت اصلی درخواست حاوی تمام داده‌های لازم برای ایجاد چارتر. Illuminate\Http\Request $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 که در صورت موفقیت، حاوی یک آرایه با کلیدهای main، calculations، taxes و financial است. این کلیدها به ترتیب شناسه‌های ایجاد شده برای چارتر اصلی، کلاس‌های قیمتی، مالیات‌ها و اطلاعات مالی را در خود جای داده‌اند. در صورت بروز خطا، یک پاسخ با کد وضعیت 500 و پیام خطا برگردانده می‌شود. Illuminate\Http\JsonResponse

·  مثال استفاده:

// سناریو: ایجاد یک چارتر پرواز هفتگی برای روزهای شنبه و دوشنبه
// POST /api/panel/v2/charter/store
// Body (JSON):
{
    "type": "route",
    "subtype": "aircraft",
    "capacity": 180,
    "description": "چارتر هفتگی تهران-مشهد",
    "permissions": { /* ... */ },
    "repeat": {
        "type": "weekly",
        "from": "1404/08/01",
        "to": "1404/08/30",
        "days": [6, 1] // شنبه و دوشنبه
    },
    "items": [
        {
            "details": {
                "origin": { "id": 1, "name": "THR" },
                "destination": { "id": 2, "name": "MHD" },
                "datetime": "1404/08/04 10:30", // تاریخ یکی از روزهای الگو (یک‌شنبه)
                "vehicle": { /* ... */ }
            }
        }
    ],
    "calculations": [
        {
            "name": "اکونومی",
            "capacity": 150,
            "financial": { /* ... */ }
        },
        {
            "name": "بیزنس",
            "capacity": 30,
            "financial": { /* ... */ }
        }
    ]
}

// خروجی مورد انتظار (در صورت موفقیت):
{
    "main": [101, 102, 103, ...], // شناسه‌های چارترهای اصلی ایجاد شده برای هر تاریخ
    "calculations": [201, 202, 203, ...], // شناسه‌های کلاس‌های قیمتی
    "taxes": [301, 302, ...], // شناسه‌های مالیات‌ها
    "financial": [401, 402, ...] // شناسه‌های اطلاعات مالی
}