<?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'      => 'SMS_SPORTS_REGISTRATION',
            'name_ar'            => 'تسجيل في الأنشطة الرياضية',
            'name_en'            => 'Sports Registration',
            'trigger_event'      => 'player.registered',
            'message_template_ar' => 'مرحباً {player_name}، تم تسجيلك بنجاح في الأنشطة الرياضية. رقم التسجيل: {registration_serial}',
            'message_template_en' => 'Hello {player_name}, you have been registered successfully. Registration #: {registration_serial}',
            'variables_json'     => json_encode(['player_name', 'registration_serial'], JSON_UNESCAPED_UNICODE),
        ],
        [
            'template_code'      => 'SMS_SPORTS_SUB_DUE',
            'name_ar'            => 'استحقاق اشتراك النشاط الرياضي',
            'name_en'            => 'Activity Subscription Due',
            'trigger_event'      => 'activity_sub.generated',
            'message_template_ar' => 'عزيزي {player_name}، اشتراك شهر {month} بمبلغ {amount} ج.م مستحق. الرجاء السداد قبل {due_date}',
            'message_template_en' => 'Dear {player_name}, subscription for {month} of {amount} EGP is due. Please pay before {due_date}',
            'variables_json'     => json_encode(['player_name', 'month', 'amount', 'due_date'], JSON_UNESCAPED_UNICODE),
        ],
        [
            'template_code'      => 'SMS_SPORTS_SUB_OVERDUE',
            'name_ar'            => 'تأخر اشتراك النشاط الرياضي',
            'name_en'            => 'Activity Subscription Overdue',
            'trigger_event'      => 'activity_sub.overdue',
            'message_template_ar' => 'تنبيه: اشتراك {player_name} لشهر {month} متأخر. المبلغ: {amount} ج.م. سيتم إيقاف الكارنيه في حالة عدم السداد',
            'message_template_en' => 'Alert: {player_name} subscription for {month} is overdue. Amount: {amount} EGP. Card will be suspended if unpaid',
            'variables_json'     => json_encode(['player_name', 'month', 'amount'], JSON_UNESCAPED_UNICODE),
        ],
        [
            'template_code'      => 'SMS_SPORTS_CARD_REVOKED',
            'name_ar'            => 'إيقاف كارنيه النشاط الرياضي',
            'name_en'            => 'Activity Card Revoked',
            'trigger_event'      => 'player.card_revoked',
            'message_template_ar' => 'تم إيقاف كارنيه النشاط الرياضي للاعب {player_name} بسبب عدم سداد الاشتراك. للاستفسار: اتصل بإدارة النادي',
            'message_template_en' => 'Activity card for {player_name} has been revoked due to unpaid subscription. Contact club administration for inquiries',
            'variables_json'     => json_encode(['player_name'], JSON_UNESCAPED_UNICODE),
        ],
        [
            'template_code'      => 'SMS_RESERVATION_CONFIRMED',
            'name_ar'            => 'تأكيد حجز ملعب',
            'name_en'            => 'Reservation Confirmed',
            'trigger_event'      => 'reservation.confirmed',
            'message_template_ar' => 'تم تأكيد حجز {facility_name} بتاريخ {date} من {start_time} إلى {end_time}. رقم الحجز: {reservation_number}',
            'message_template_en' => 'Reservation confirmed for {facility_name} on {date} from {start_time} to {end_time}. Ref: {reservation_number}',
            'variables_json'     => json_encode(['facility_name', 'date', 'start_time', 'end_time', 'reservation_number'], JSON_UNESCAPED_UNICODE),
        ],
        [
            'template_code'      => 'SMS_RESERVATION_REMINDER',
            'name_ar'            => 'تذكير بحجز ملعب',
            'name_en'            => 'Reservation Reminder',
            'trigger_event'      => 'reservation.reminder',
            'message_template_ar' => 'تذكير: لديك حجز {facility_name} غداً {date} الساعة {start_time}. رقم الحجز: {reservation_number}',
            'message_template_en' => 'Reminder: You have a reservation at {facility_name} tomorrow {date} at {start_time}. Ref: {reservation_number}',
            'variables_json'     => json_encode(['facility_name', 'date', 'start_time', 'reservation_number'], JSON_UNESCAPED_UNICODE),
        ],
        [
            'template_code'      => 'SMS_MEDICAL_EXPIRY',
            'name_ar'            => 'تنبيه انتهاء الشهادة الطبية',
            'name_en'            => 'Medical Certificate Expiry',
            'trigger_event'      => 'player.medical_expiry',
            'message_template_ar' => 'تنبيه: شهادتك الطبية ستنتهي بتاريخ {expiry_date}. يرجى تجديدها لاستمرار التسجيل في الأنشطة الرياضية',
            'message_template_en' => 'Alert: Your medical certificate expires on {expiry_date}. Please renew to continue sports activities',
            'variables_json'     => json_encode(['player_name', 'expiry_date'], JSON_UNESCAPED_UNICODE),
        ],
    ];

    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'],
            'trigger_event'      => $t['trigger_event'],
            'message_template_ar' => $t['message_template_ar'],
            'message_template_en' => $t['message_template_en'],
            'variables_json'     => $t['variables_json'],
            'is_active'          => 1,
            'created_at'         => $ts,
            'updated_at'         => $ts,
        ]);
    }
};
