Skip to main content
#P1099

Function getDetailsCharterItem

·  هدف:

این متد استاتیک یک ابزار داخلی قدرتمند برای استخراج و فرمت‌دهی جزئیات یک آیتم از چارتر است. بر اساس نوع (method) آیتم (مانند route, accommodation, visa, insurance, service)، متد داده‌های خام ورودی را پردازش کرده و یک آبجکت ساختاریافته و تمیز را به عنوان خروجی بازمی‌گرداند. برای آیتم‌های از نوع route، متد جزئیات بیشتری مانند subtype (هوایی، ریلی، اتوبوس) را نیز در نظر گرفته و اطلاعات مربوط به شرکت حمل‌ونقل، شماره پرواز/قطار، ترمینال‌ها و زمان‌بندی را استخراج می‌کند. برای سایر انواع، اطلاعات مرتبط با خودشان مانند جزئیات هتل، کشور ویزا، یا نوع بیمه را بازمی‌گرداند. این تابع نقش کلیدی در استانداردسازی و پاک‌سازی داده‌های details قبل از ذخیره‌سازی در دیتابیس ایفا می‌کند.

ویژگی‌ها توضیحات
هدف کلی پردازش و استانداردسازی آبجکت details یک آیتم چارتر.
متد استاتیک قابل فراخوانی بدون نیاز به ساخت نمونه از کلاس (CharterController::getDetailsCharterItem(...)).
منطق شرطی استفاده از if-else بر اساس method و submethod برای پردازش متفاوت انواع آیتم.
پاک‌سازی داده استفاده از توابعی مانند Functions::checkDatetime و Jalalian::fromFormat برای تبدیل و فرمت‌دهی تاریخ‌ها.
ساختاردهی خروجی تولید یک آبجکت JSON تمیز و قابل استفاده برای هر نوع آیتم.
کاربرد داخلی عمدتاً در متد storeCharter برای آماده‌سازی فیلد details قبل از درج در charter_items.

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

 

توضیحات موقعیت نوع داده نام پارمتر
آبجکت آیتم از درخواست ورودی که شامل method, submethod و details است. Parameter array $item
داده‌های پردازش‌شده مربوط به تاریخ و مسیر که در مراحل قبلی storeCharter تولید شده. Parameter array $data
تاریخ و زمان دقیق آیتم. Parameter string $datetime

·     خروجی (Return):

 

توضیحات نوع داده
یک آرایه انجمنی (associative array) که ساختار آن بسته به نوع آیتم متفاوت است و آماده‌ی تبدیل به JSON برای ذخیره‌سازی است. array

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

سناریو: پردازش جزئیات یک آیتم پرواز

  • Call (inside storeCharter):
php
    $item = [
        'method' => 'route',
        'submethod' => 'aircraft',
        'details' => [
            'origin' => ['id' => 1, 'terminal' => '2'],
            'destination' => ['id' => 2, 'terminal' => '1'],
            'company' => ['id' => 15],
            'vehicle' => ['number' => 'IR-456'],
            // ...
        ]
    ];
    $data = [ 'data' => ['duration' => '01:30'] ];
    $datetime = '2025-10-20 18:00:00';

    CharterController::getDetailsCharterItem($item, $data, $datetime);
  • Action:
  1. متد وارد شاخه if ($type == 'route') و سپس if ($subType == 'aircraft') می‌شود.
  2. اطلاعات مبدأ، مقصد، ترمینال، شرکت، شماره پرواز و مدت زمان را از ورودی‌ها استخراج می‌کند.
  3. تاریخ و زمان را فرمت می‌کند.
  • Return:
php
    [
        'status' => true,
        'origin' => [ 'id' => 1, 'terminal' => '2' ],
        'destination' => [ 'id' => 2, 'terminal' => '1' ],
        'duration' => '01:30',
        'datetime' => '2025-10-20 18:00:00',
        'company' => [ 'id' => 15 ],
        'vehicle' => [ 'number' => 'IR-456' ]
    ]