<?php
declare(strict_types=1);

use App\Core\Database;

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

    $templates = [
        [
            'template_code' => 'MEMBER_ACCEPTED',
            'name_ar'       => 'قبول العضوية',
            'name_en'       => 'Membership Accepted',
            'message_template_ar' => 'عزيزي {member_name}، تم قبول عضويتكم في نادي الكابتن. يرجى سداد المستحقات خلال 15 يوم من تاريخ اليوم. رقم الاستمارة: {form_number}',
            'variables_json' => '["member_name","form_number"]',
            'trigger_event'  => 'member.accepted',
        ],
        [
            'template_code' => 'MEMBER_REJECTED',
            'name_ar'       => 'رفض العضوية',
            'name_en'       => 'Membership Rejected',
            'message_template_ar' => 'عزيزي {member_name}، نأسف لعدم قبول طلب عضويتكم في نادي الكابتن. يمكنكم التقدم مرة أخرى.',
            'variables_json' => '["member_name"]',
            'trigger_event'  => 'member.rejected',
        ],
        [
            'template_code' => 'PAYMENT_CONFIRMED',
            'name_ar'       => 'تأكيد الدفع',
            'name_en'       => 'Payment Confirmed',
            'message_template_ar' => 'عزيزي {member_name}، تم تسجيل دفعتكم بمبلغ {amount} ج.م. رقم الإيصال: {receipt_number}. شكراً لكم.',
            'variables_json' => '["member_name","amount","receipt_number"]',
            'trigger_event'  => 'payment.completed',
        ],
        [
            'template_code' => 'SUBSCRIPTION_DUE',
            'name_ar'       => 'موعد الاشتراك السنوي',
            'name_en'       => 'Subscription Due',
            'message_template_ar' => 'عزيزي {member_name}، يُرجى سداد الاشتراك السنوي {financial_year} بمبلغ {amount} ج.م قبل 30 سبتمبر لتجنب الغرامات.',
            'variables_json' => '["member_name","financial_year","amount"]',
            'trigger_event'  => 'subscription.due',
        ],
        [
            'template_code' => 'SUBSCRIPTION_OVERDUE',
            'name_ar'       => 'تأخر الاشتراك السنوي',
            'name_en'       => 'Subscription Overdue',
            'message_template_ar' => 'عزيزي {member_name}، الاشتراك السنوي {financial_year} متأخر. المبلغ المستحق: {amount} ج.م بما في ذلك الغرامات. يرجى السداد فوراً.',
            'variables_json' => '["member_name","financial_year","amount"]',
            'trigger_event'  => 'subscription.overdue',
        ],
        [
            'template_code' => 'INSTALLMENT_REMINDER',
            'name_ar'       => 'تذكير بالقسط',
            'name_en'       => 'Installment Reminder',
            'message_template_ar' => 'عزيزي {member_name}، تذكير بموعد القسط رقم {installment_number} بمبلغ {amount} ج.م المستحق في {due_date}.',
            'variables_json' => '["member_name","installment_number","amount","due_date"]',
            'trigger_event'  => 'installment.reminder',
        ],
        [
            'template_code' => 'INSTALLMENT_OVERDUE',
            'name_ar'       => 'تأخر القسط',
            'name_en'       => 'Installment Overdue',
            'message_template_ar' => 'عزيزي {member_name}، القسط رقم {installment_number} بمبلغ {amount} ج.م تجاوز موعده. يرجى السداد فوراً لتجنب الإيقاف.',
            'variables_json' => '["member_name","installment_number","amount"]',
            'trigger_event'  => 'installment.overdue',
        ],
        [
            'template_code' => 'FORM_EXPIRY_WARNING',
            'name_ar'       => 'تحذير انتهاء الاستمارة',
            'name_en'       => 'Form Expiry Warning',
            'message_template_ar' => 'عزيزي {member_name}، استمارتكم رقم {form_number} ستنتهي خلال {days_remaining} أيام. يرجى إتمام السداد قبل {expiry_date}.',
            'variables_json' => '["member_name","form_number","days_remaining","expiry_date"]',
            'trigger_event'  => 'form.expiry_warning',
        ],
        [
            'template_code' => 'INTERVIEW_SCHEDULED',
            'name_ar'       => 'موعد المقابلة',
            'name_en'       => 'Interview Scheduled',
            'message_template_ar' => 'عزيزي {member_name}، تم تحديد موعد مقابلتكم مع مجلس الأمناء في {date} الساعة {time}. يرجى الحضور في الموعد.',
            'variables_json' => '["member_name","date","time"]',
            'trigger_event'  => 'interview.scheduled',
        ],
        [
            'template_code' => 'CHILD_AGE_18_ALERT',
            'name_ar'       => 'تنبيه بلوغ ابن 18 سنة',
            'name_en'       => 'Child Age 18 Alert',
            'message_template_ar' => 'عزيزي {member_name}، نُعلمكم أن {child_name} سيبلغ 18 عاماً في {date}. قد تترتب رسوم إضافية.',
            'variables_json' => '["member_name","child_name","date"]',
            'trigger_event'  => 'child.approaching_18',
        ],
        [
            'template_code' => 'CHILD_AGE_25_ALERT',
            'name_ar'       => 'تنبيه بلوغ ابن 25 سنة',
            'name_en'       => 'Child Age 25 Alert',
            'message_template_ar' => 'عزيزي {member_name}، نُعلمكم أن {child_name} سيبلغ 25 عاماً في {date}. يجب التحويل لعضوية مستقلة.',
            'variables_json' => '["member_name","child_name","date"]',
            'trigger_event'  => 'child.approaching_25',
        ],
        [
            'template_code' => 'PENALTY_IMPOSED',
            'name_ar'       => 'إخطار بعقوبة',
            'name_en'       => 'Penalty Imposed',
            'message_template_ar' => 'عزيزي {member_name}، تم فرض عقوبة: {penalty_type}. يمكنكم التظلم خلال 15 يوم.',
            'variables_json' => '["member_name","penalty_type"]',
            'trigger_event'  => 'fine.imposed',
        ],
        [
            'template_code' => 'HONORARY_EXPIRY_WARNING',
            'name_ar'       => 'تحذير انتهاء العضوية الشرفية',
            'name_en'       => 'Honorary Expiry Warning',
            'message_template_ar' => 'عزيزي {member_name}، عضويتكم الشرفية ستنتهي في {expiry_date}. يرجى التواصل مع الإدارة للتجديد.',
            'variables_json' => '["member_name","expiry_date"]',
            'trigger_event'  => 'honorary.expiry_warning',
        ],
        [
            'template_code' => 'GENERAL_NOTIFICATION',
            'name_ar'       => 'إخطار عام',
            'name_en'       => 'General Notification',
            'message_template_ar' => '{message}',
            'variables_json' => '["message"]',
            'trigger_event'  => null,
        ],
    ];

    foreach ($templates as $t) {
        $existing = $db->selectOne("SELECT id FROM sms_templates WHERE template_code = ?", [$t['template_code']]);
        if ($existing) continue;
        $db->insert('sms_templates', [
            'template_code'       => $t['template_code'],
            'name_ar'             => $t['name_ar'],
            'name_en'             => $t['name_en'] ?? null,
            'message_template_ar' => $t['message_template_ar'],
            'variables_json'      => $t['variables_json'],
            'trigger_event'       => $t['trigger_event'],
            'is_active'           => 1,
            'created_at'          => $ts,
            'updated_at'          => $ts,
        ]);
    }
};