Skip to main content
#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:
  1. متد روی آرایه inputConditions حلقه می‌زند.
  2. برای هر آیتم، یک آبجکت جدید با استخراج مقادیر id, type['id'] و value می‌سازد.
  • Return:
php
    [
        [ 'id' => 1, 'type' => 'penalty', 'value' => '10' ],
        [ 'id' => 2, 'type' => 'duration', 'value' => '48' ]
    ]