<?php
declare(strict_types=1);

/**
 * Idempotent migration: ensures subscription late-fine escalation rules exist
 * with the correct percentages (10/50/100/200/300) and that the grace period
 * rules exist.  Safe to run multiple times — uses ON DUPLICATE KEY UPDATE.
 *
 * Corrects a data issue where the original seed set YEAR_1=100%, YEAR_2=200%,
 * YEAR_3=300% (no YEAR_4/YEAR_5), whereas the correct business rule is:
 *   Year 1 after grace: 10%
 *   Year 2:             50%
 *   Year 3:            100%
 *   Year 4:            200%
 *   Year 5:            300%
 */
return [
    'up' => "
        INSERT INTO business_rules
            (rule_code, category, name_ar, name_en, data_type, current_value_json, parameters_json, is_active, effective_from, created_at, updated_at)
        VALUES
            ('LATE_SUB_FINE_YEAR_1', 'penalty', 'غرامة تأخير — بعد فترة السماح (10%)',  'Late Fine Year 1 — After Grace (10%)',  'percentage', '{\"percentage_of_subscription\":\"10.00\"}',  '{\"percentage_of_subscription\":\"decimal\"}', 1, '2020-01-01', NOW(), NOW()),
            ('LATE_SUB_FINE_YEAR_2', 'penalty', 'غرامة تأخير — سنة متأخرة (50%)',        'Late Fine Year 2 — 1 Year Overdue (50%)',   'percentage', '{\"percentage_of_subscription\":\"50.00\"}',  '{\"percentage_of_subscription\":\"decimal\"}', 1, '2020-01-01', NOW(), NOW()),
            ('LATE_SUB_FINE_YEAR_3', 'penalty', 'غرامة تأخير — سنتان متأخرة (100%)',     'Late Fine Year 3 — 2 Years Overdue (100%)', 'percentage', '{\"percentage_of_subscription\":\"100.00\"}', '{\"percentage_of_subscription\":\"decimal\"}', 1, '2020-01-01', NOW(), NOW()),
            ('LATE_SUB_FINE_YEAR_4', 'penalty', 'غرامة تأخير — 3 سنوات متأخرة (200%)',   'Late Fine Year 4 — 3 Years Overdue (200%)', 'percentage', '{\"percentage_of_subscription\":\"200.00\"}', '{\"percentage_of_subscription\":\"decimal\"}', 1, '2020-01-01', NOW(), NOW()),
            ('LATE_SUB_FINE_YEAR_5', 'penalty', 'غرامة تأخير — 4 سنوات متأخرة (300%)',   'Late Fine Year 5 — 4 Years Overdue (300%)', 'percentage', '{\"percentage_of_subscription\":\"300.00\"}', '{\"percentage_of_subscription\":\"decimal\"}', 1, '2020-01-01', NOW(), NOW()),
            ('SUB_GRACE_MONTHS', 'penalty', 'فترة السماح للاشتراك السنوي (شهور)', 'Subscription Grace Period (months)', 'integer', '{\"months\":3}', '{\"months\":\"integer\"}', 1, '2020-01-01', NOW(), NOW()),
            ('SUB_EXTENDED_GRACE_MONTHS', 'penalty', 'فترة السماح الممتدة بقرار مجلس الأمناء', 'Extended Grace Period (Trustees Council)', 'integer', '{\"months\":4}', '{\"months\":\"integer\"}', 1, '2020-01-01', NOW(), NOW()),
            ('LATE_SUB_FINE_MAX_YEARS', 'penalty', 'الحد الأقصى لسنوات الغرامة', 'Max Late Fine Years', 'integer', '{\"years\":5}', '{\"years\":\"integer\"}', 1, '2020-01-01', NOW(), NOW()),
            ('LATE_SUB_DROP_YEARS', 'penalty', 'سنوات التأخر قبل إسقاط العضوية', 'Years Before Membership Drop', 'integer', '{\"years\":5}', '{\"years\":\"integer\"}', 1, '2020-01-01', NOW(), NOW()),
            ('REINSTATEMENT_WINDOW', 'penalty', 'نافذة إعادة العضوية المسقطة (شهور)', 'Reinstatement Window (months)', 'integer', '{\"months\":12}', '{\"months\":\"integer\"}', 1, '2020-01-01', NOW(), NOW())
        ON DUPLICATE KEY UPDATE
            current_value_json = VALUES(current_value_json),
            name_ar            = VALUES(name_ar),
            name_en            = VALUES(name_en),
            updated_at         = NOW()
    ",
    'down' => "
        UPDATE business_rules SET current_value_json = '{\"percentage_of_subscription\":\"100.00\"}', name_ar = 'غرامة تأخير سنة أولى' WHERE rule_code = 'LATE_SUB_FINE_YEAR_1';
        UPDATE business_rules SET current_value_json = '{\"percentage_of_subscription\":\"200.00\"}', name_ar = 'غرامة تأخير سنة ثانية' WHERE rule_code = 'LATE_SUB_FINE_YEAR_2';
        UPDATE business_rules SET current_value_json = '{\"percentage_of_subscription\":\"300.00\"}', name_ar = 'غرامة تأخير سنة ثالثة' WHERE rule_code = 'LATE_SUB_FINE_YEAR_3';
        DELETE FROM business_rules WHERE rule_code IN ('LATE_SUB_FINE_YEAR_4', 'LATE_SUB_FINE_YEAR_5', 'SUB_GRACE_MONTHS', 'SUB_EXTENDED_GRACE_MONTHS', 'LATE_SUB_FINE_MAX_YEARS', 'LATE_SUB_DROP_YEARS', 'REINSTATEMENT_WINDOW')
    ",
];
