<?php
declare(strict_types=1);

use App\Core\Database;

return function (Database $db): void {
    $now = date('Y-m-d');
    $ts  = date('Y-m-d H:i:s');

    $rules = [
        [
            'rule_code'          => 'SPORTS_REG_FEE_MEMBER',
            'category'           => 'sports_activity',
            'name_ar'            => 'رسوم تسجيل نشاط رياضي - عضو',
            'name_en'            => 'Sports Registration Fee - Member',
            'description_ar'     => 'رسوم التسجيل لأول مرة في نشاط رياضي لعضو النادي',
            'data_type'          => 'amount',
            'current_value_json' => '{"amount":"50.00"}',
            'parameters_json'    => '{"amount":"decimal"}',
        ],
        [
            'rule_code'          => 'SPORTS_REG_FEE_NONMEMBER',
            'category'           => 'sports_activity',
            'name_ar'            => 'رسوم تسجيل نشاط رياضي - غير عضو',
            'name_en'            => 'Sports Registration Fee - Non-Member',
            'description_ar'     => 'رسوم التسجيل لأول مرة في نشاط رياضي لغير الأعضاء',
            'data_type'          => 'amount',
            'current_value_json' => '{"amount":"100.00"}',
            'parameters_json'    => '{"amount":"decimal"}',
        ],
        [
            'rule_code'          => 'SPORTS_REG_SERIAL_START_MEMBER',
            'category'           => 'sports_activity',
            'name_ar'            => 'بداية التسلسل - تسجيل عضو',
            'name_en'            => 'Registration Serial Start - Member',
            'description_ar'     => 'رقم بداية التسلسل لإيصالات تسجيل الأعضاء في الأنشطة الرياضية',
            'data_type'          => 'integer',
            'current_value_json' => '{"value":2134}',
            'parameters_json'    => '{"value":"integer"}',
        ],
        [
            'rule_code'          => 'SPORTS_REG_SERIAL_START_NONMEMBER',
            'category'           => 'sports_activity',
            'name_ar'            => 'بداية التسلسل - تسجيل غير عضو',
            'name_en'            => 'Registration Serial Start - Non-Member',
            'description_ar'     => 'رقم بداية التسلسل لإيصالات تسجيل غير الأعضاء في الأنشطة الرياضية',
            'data_type'          => 'integer',
            'current_value_json' => '{"value":682}',
            'parameters_json'    => '{"value":"integer"}',
        ],
        [
            'rule_code'          => 'SPORTS_SUB_CUTOFF_DAY',
            'category'           => 'sports_activity',
            'name_ar'            => 'يوم قطع الاشتراك الشهري',
            'name_en'            => 'Monthly Subscription Cutoff Day',
            'description_ar'     => 'اليوم من الشهر الذي يتم بعده احتساب الاشتراك للشهر التالي',
            'data_type'          => 'integer',
            'current_value_json' => '{"day":15}',
            'parameters_json'    => '{"day":"integer"}',
        ],
        [
            'rule_code'          => 'SPORTS_SUB_REVOKE_DAY',
            'category'           => 'sports_activity',
            'name_ar'            => 'يوم إلغاء الاشتراك لعدم السداد',
            'name_en'            => 'Subscription Revoke Day',
            'description_ar'     => 'عدد الأيام بعد استحقاق الاشتراك التي يتم بعدها الإلغاء التلقائي',
            'data_type'          => 'integer',
            'current_value_json' => '{"day":7}',
            'parameters_json'    => '{"day":"integer"}',
        ],
        [
            'rule_code'          => 'SPORTS_NONMEMBER_ACCESS_MINUTES',
            'category'           => 'sports_activity',
            'name_ar'            => 'مهلة دخول غير العضو (دقائق)',
            'name_en'            => 'Non-Member Access Window (Minutes)',
            'description_ar'     => 'المدة المسموح بها لغير العضو للبقاء في المنشأة قبل بدء المحاسبة',
            'data_type'          => 'integer',
            'current_value_json' => '{"minutes":30}',
            'parameters_json'    => '{"minutes":"integer"}',
        ],
        [
            'rule_code'          => 'SPORTS_PM_START_HOUR',
            'category'           => 'sports_activity',
            'name_ar'            => 'ساعة بدء الفترة المسائية',
            'name_en'            => 'PM Rate Start Hour',
            'description_ar'     => 'الساعة التي يبدأ بعدها تطبيق تسعير الفترة المسائية',
            'data_type'          => 'integer',
            'current_value_json' => '{"hour":17}',
            'parameters_json'    => '{"hour":"integer"}',
        ],
        [
            'rule_code'          => 'RENTAL_BULK_MIN_UNITS',
            'category'           => 'sports_activity',
            'name_ar'            => 'الحد الأدنى لوحدات التأجير الجماعي',
            'name_en'            => 'Bulk Rental Minimum Units',
            'description_ar'     => 'الحد الأدنى لعدد ساعات/وحدات الحجز للاستفادة من خصم التأجير الجماعي',
            'data_type'          => 'integer',
            'current_value_json' => '{"units":24}',
            'parameters_json'    => '{"units":"integer"}',
        ],
        [
            'rule_code'          => 'RENTAL_BULK_MIN_MONTHS',
            'category'           => 'sports_activity',
            'name_ar'            => 'الحد الأدنى لأشهر التأجير الجماعي',
            'name_en'            => 'Bulk Rental Minimum Months',
            'description_ar'     => 'الحد الأدنى لمدة عقد التأجير الجماعي بالأشهر',
            'data_type'          => 'integer',
            'current_value_json' => '{"months":2}',
            'parameters_json'    => '{"months":"integer"}',
        ],
        [
            'rule_code'          => 'RENTAL_BULK_DISCOUNT_PCT',
            'category'           => 'sports_activity',
            'name_ar'            => 'نسبة خصم التأجير الجماعي',
            'name_en'            => 'Bulk Rental Discount Percentage',
            'description_ar'     => 'نسبة الخصم على إجمالي عقد التأجير الجماعي عند استيفاء الحد الأدنى',
            'data_type'          => 'percentage',
            'current_value_json' => '{"percentage":"15.00"}',
            'parameters_json'    => '{"percentage":"decimal"}',
        ],
        [
            'rule_code'          => 'RENTAL_DEPOSIT_PCT',
            'category'           => 'sports_activity',
            'name_ar'            => 'نسبة تأمين التأجير',
            'name_en'            => 'Rental Deposit Percentage',
            'description_ar'     => 'نسبة مبلغ التأمين المطلوب عند توقيع عقد التأجير المؤسسي',
            'data_type'          => 'percentage',
            'current_value_json' => '{"percentage":"10.00"}',
            'parameters_json'    => '{"percentage":"decimal"}',
        ],
    ];

    foreach ($rules as $rule) {
        $existing = $db->selectOne("SELECT id FROM business_rules WHERE rule_code = ? AND branch_id IS NULL", [$rule['rule_code']]);
        if ($existing) {
            continue;
        }
        $db->insert('business_rules', [
            'rule_code'          => $rule['rule_code'],
            'category'           => $rule['category'],
            'name_ar'            => $rule['name_ar'],
            'name_en'            => $rule['name_en'] ?? null,
            'description_ar'     => $rule['description_ar'] ?? null,
            'data_type'          => $rule['data_type'],
            'current_value_json' => $rule['current_value_json'],
            'parameters_json'    => $rule['parameters_json'] ?? null,
            'branch_id'          => null,
            'effective_from'     => $now,
            'is_active'          => 1,
            'version'            => 1,
            'created_at'         => $ts,
            'updated_at'         => $ts,
        ]);
    }
};
