#P1101
Function getConditionCharterItem
· هدف:
این متد استاتیک به عنوان یک ابزار کمکی برای پردازش و استانداردسازی شرایط (Conditions) و خدمات (Services) مرتبط با یک آیتم محاسباتی چارتر عمل میکند. هدف اصلی آن، تبدیل آرایه خام ورودی از شرایط (که معمولاً از فرمهای فرانتاند میآید) به یک ساختار دادهی تمیز و یکپارچه قبل از ذخیرهسازی در دیتابیس است. متد برای هر شرط، تنها اطلاعات ضروری مانند شناسه (id), نوع (type) و مقدار (value) را استخراج کرده و در یک آرایه جدید جمعآوری میکند. این کار باعث میشود که دادههای اضافی یا نامرتبط حذف شده و تنها اطلاعات کلیدی در فیلد services جدول محاسبات به صورت JSON ذخیره شود.
| ویژگیها | توضیحات |
| هدف کلی | پاکسازی و استانداردسازی آرایه شرایط/خدمات یک آیتم. |
| عملیات اتمی (Atomic) | قابل فراخوانی به صورت عمومی (CharterController::getConditionCharterItem(...)). |
| پشتیبانی از انواع چارتر | حلقه زدن روی آرایه ورودی و استخراج فیلدهای کلیدی (id, type, value). |
| موتور تکرار (Repeat Engine) | حذف دادههای غیرضروری و ایجاد یک ساختار دادهی بهینه برای ذخیرهسازی. |
| ساختار داده پیچیده | عمدتاً در متد storeCharter برای پردازش فیلد services قبل از درج در جداول calculation. |
· ورودیها (پارامترها):
| توضیحات | موقعیت | نوع داده | نام پارمتر |
| آرایهای از آبجکتهای شرط/خدمت که هر کدام شامل جزئیات مختلفی هستند. | Parameter |
array |
$conditions |
· خروجی (Return):
| توضیحات | نوع داده |
آرایهای از آبجکتهای شرط/خدمت که هر کدام فقط شامل کلیدهای id, type, و value هستند. |
array |
· مثال استفاده / سناریو:
سناریو: پردازش شرایط کنسلی یک آیتم
- Call (inside
storeCharter):
php
$inputConditions = [
[ 'id' => 1, 'type' => ['id' => 'penalty'], 'value' => '10', 'title' => 'جریمه ۱۰ درصد', 'is_active' => true ],
[ 'id' => 2, 'type' => ['id' => 'duration'], 'value' => '48', 'title' => 'تا ۴۸ ساعت قبل', 'is_active' => true ]
];
CharterController::getConditionCharterItem($inputConditions);
- Action:
- متد روی آرایه
inputConditionsحلقه میزند. - برای هر آیتم، یک آبجکت جدید با استخراج مقادیر
id,type['id']وvalueمیسازد.
- Return:
php
[
[ 'id' => 1, 'type' => 'penalty', 'value' => '10' ],
[ 'id' => 2, 'type' => 'duration', 'value' => '48' ]
]