<?php
declare(strict_types=1);

use App\Core\Database;

return function (Database $db): void {
    // Branch IDs:
    // 1 = شيراتون, 2 = السادس من أكتوبر, 3 = العاصمة الإدارية, 4 = المعادي

    $discounts = [
        // Article 97: Cross-branch 50% (6th Oct ↔ Sheraton)
        [
            'article_number' => '97',
            'name_ar' => 'خصم أعضاء فرع السادس لفرع شيراتون',
            'name_en' => 'Cross-branch: 6th Oct to Sheraton',
            'description' => 'خصم 50% لأعضاء فرع السادس من أكتوبر عند الانضمام لفرع شيراتون (مادة 97)',
            'discount_percentage' => '50.00',
            'eligibility_type' => 'cross_branch_member',
            'source_branch_id' => 2,
            'target_branch_id' => 1,
            'applies_to' => 'membership_fee',
        ],
        [
            'article_number' => '97',
            'name_ar' => 'خصم أعضاء فرع شيراتون لفرع السادس',
            'name_en' => 'Cross-branch: Sheraton to 6th Oct',
            'description' => 'خصم 50% لأعضاء فرع شيراتون عند الانضمام لفرع السادس من أكتوبر (مادة 97)',
            'discount_percentage' => '50.00',
            'eligibility_type' => 'cross_branch_member',
            'source_branch_id' => 1,
            'target_branch_id' => 2,
            'applies_to' => 'membership_fee',
        ],
        // Article 97: Cross-branch 25% (either → Admin Capital)
        [
            'article_number' => '97',
            'name_ar' => 'خصم أعضاء فرع شيراتون لفرع العاصمة الإدارية',
            'name_en' => 'Cross-branch: Sheraton to Admin Capital',
            'description' => 'خصم 25% لأعضاء فرع شيراتون عند الانضمام لفرع العاصمة الإدارية (مادة 97)',
            'discount_percentage' => '25.00',
            'eligibility_type' => 'cross_branch_member',
            'source_branch_id' => 1,
            'target_branch_id' => 3,
            'applies_to' => 'membership_fee',
        ],
        [
            'article_number' => '97',
            'name_ar' => 'خصم أعضاء فرع السادس لفرع العاصمة الإدارية',
            'name_en' => 'Cross-branch: 6th Oct to Admin Capital',
            'description' => 'خصم 25% لأعضاء فرع السادس من أكتوبر عند الانضمام لفرع العاصمة الإدارية (مادة 97)',
            'discount_percentage' => '25.00',
            'eligibility_type' => 'cross_branch_member',
            'source_branch_id' => 2,
            'target_branch_id' => 3,
            'applies_to' => 'membership_fee',
        ],

        // Article 98: Government employees 50% at Admin Capital
        [
            'article_number' => '98',
            'name_ar' => 'خصم الموظفين الحكوميين — العاصمة الإدارية',
            'name_en' => 'Gov employees — Admin Capital',
            'description' => 'خصم 50% لموظفي الجهاز الإداري للدولة بفرع العاصمة الإدارية (مادة 98)',
            'discount_percentage' => '50.00',
            'eligibility_type' => 'government_employee',
            'target_branch_id' => 3,
            'applies_to' => 'membership_fee',
        ],

        // Article 98: Ministry of Youth 62.5% at Admin Capital
        [
            'article_number' => '98',
            'name_ar' => 'خصم موظفي وزارة الشباب — العاصمة الإدارية',
            'name_en' => 'Ministry of Youth — Admin Capital',
            'description' => 'خصم 62.5% لموظفي وزارة الشباب والرياضة بفرع العاصمة الإدارية (مادة 98)',
            'discount_percentage' => '62.50',
            'eligibility_type' => 'ministry_youth_employee',
            'target_branch_id' => 3,
            'applies_to' => 'membership_fee',
        ],

        // Article 99: Ministry of Youth 25% at 6th Oct or Sheraton
        [
            'article_number' => '99',
            'name_ar' => 'خصم موظفي وزارة الشباب — فرع شيراتون',
            'name_en' => 'Ministry of Youth — Sheraton',
            'description' => 'خصم 25% لموظفي وزارة الشباب والرياضة بفرع شيراتون (مادة 99)',
            'discount_percentage' => '25.00',
            'eligibility_type' => 'ministry_youth_employee',
            'target_branch_id' => 1,
            'applies_to' => 'membership_fee',
        ],
        [
            'article_number' => '99',
            'name_ar' => 'خصم موظفي وزارة الشباب — فرع السادس',
            'name_en' => 'Ministry of Youth — 6th Oct',
            'description' => 'خصم 25% لموظفي وزارة الشباب والرياضة بفرع السادس من أكتوبر (مادة 99)',
            'discount_percentage' => '25.00',
            'eligibility_type' => 'ministry_youth_employee',
            'target_branch_id' => 2,
            'applies_to' => 'membership_fee',
        ],

        // Article 100: Board of Trustees 50% + 2yr installment
        [
            'article_number' => '100',
            'name_ar' => 'خصم أعضاء مجلس الأمناء',
            'name_en' => 'Board of Trustees',
            'description' => 'خصم 50% لأعضاء مجلس الأمناء مع تقسيط على سنتين بدون فوائد (مادة 100)',
            'discount_percentage' => '50.00',
            'eligibility_type' => 'board_of_trustees',
            'target_branch_id' => null,
            'allows_installment' => 1,
            'installment_max_years' => 2,
            'installment_interest_rate' => '0.00',
            'applies_to' => 'membership_fee',
        ],

        // Article 101: Ministry employees installment only (no discount)
        [
            'article_number' => '101',
            'name_ar' => 'تقسيط موظفي الوزارة',
            'name_en' => 'Ministry employees installment',
            'description' => 'تقسيط رسوم العضوية على سنتين بدون فوائد لموظفي الوزارة (مادة 101) — بدون خصم',
            'discount_percentage' => '0.00',
            'eligibility_type' => 'ministry_youth_employee',
            'target_branch_id' => null,
            'allows_installment' => 1,
            'installment_max_years' => 2,
            'installment_interest_rate' => '0.00',
            'applies_to' => 'membership_fee',
            'notes' => 'مادة 101 — تقسيط فقط بدون خصم إضافي. يُطبق إذا كان الموظف لا يستحق خصم مواد 98/99.',
        ],

        // Article 102: Club employees (5+ years) up to 15%
        [
            'article_number' => '102',
            'name_ar' => 'خصم موظفي النادي (5 سنوات فأكثر)',
            'name_en' => 'Club employees 5+ years',
            'description' => 'خصم حتى 15% لموظفي النادي الذين أمضوا 5 سنوات فأكثر (مادة 102)',
            'discount_percentage' => '15.00',
            'max_discount_percentage' => '15.00',
            'eligibility_type' => 'club_employee',
            'target_branch_id' => null,
            'min_service_years' => 5,
            'applies_to' => 'membership_fee',
        ],

        // Article 110: Group membership (tiered — tiers stored separately)
        [
            'article_number' => '110',
            'name_ar' => 'خصم العضوية المجمعة',
            'name_en' => 'Group membership discount',
            'description' => 'خصم متدرج حسب عدد الأعضاء في المجموعة الواحدة (مادة 110)',
            'discount_percentage' => '0.00',
            'eligibility_type' => 'group_membership',
            'target_branch_id' => null,
            'applies_to' => 'membership_fee',
        ],
    ];

    $now = date('Y-m-d H:i:s');
    $groupDiscountId = null;

    foreach ($discounts as $d) {
        $row = [
            'article_number'            => $d['article_number'],
            'name_ar'                   => $d['name_ar'],
            'name_en'                   => $d['name_en'] ?? null,
            'description'               => $d['description'] ?? null,
            'discount_percentage'       => $d['discount_percentage'],
            'max_discount_percentage'   => $d['max_discount_percentage'] ?? null,
            'eligibility_type'          => $d['eligibility_type'],
            'source_branch_id'          => $d['source_branch_id'] ?? null,
            'target_branch_id'          => $d['target_branch_id'] ?? null,
            'min_service_years'         => $d['min_service_years'] ?? null,
            'allows_installment'        => $d['allows_installment'] ?? 0,
            'installment_max_years'     => $d['installment_max_years'] ?? null,
            'installment_interest_rate' => $d['installment_interest_rate'] ?? '0.00',
            'applies_to'                => $d['applies_to'] ?? 'membership_fee',
            'is_active'                 => 1,
            'notes'                     => $d['notes'] ?? null,
            'created_at'                => $now,
            'updated_at'                => $now,
        ];

        $id = $db->insert('regulatory_discounts', $row);

        if ($d['eligibility_type'] === 'group_membership') {
            $groupDiscountId = (int) $id;
        }
    }

    // Article 110 tiers
    if ($groupDiscountId) {
        $tiers = [
            ['min_quantity' => 5,  'max_quantity' => 10,   'discount_percentage' => '3.00'],
            ['min_quantity' => 11, 'max_quantity' => 20,   'discount_percentage' => '7.00'],
            ['min_quantity' => 21, 'max_quantity' => null,  'discount_percentage' => '10.00'],
        ];

        foreach ($tiers as $tier) {
            $db->insert('regulatory_discount_group_tiers', [
                'regulatory_discount_id' => $groupDiscountId,
                'min_quantity'           => $tier['min_quantity'],
                'max_quantity'           => $tier['max_quantity'],
                'discount_percentage'    => $tier['discount_percentage'],
                'is_active'              => 1,
            ]);
        }
    }
};
