#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:
- متد وارد شاخه
if ($type == 'route')و سپسif ($subType == 'aircraft')میشود. - اطلاعات مبدأ، مقصد، ترمینال، شرکت، شماره پرواز و مدت زمان را از ورودیها استخراج میکند.
- تاریخ و زمان را فرمت میکند.
- 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' ]
]