<?php
declare(strict_types=1);

use App\Core\Database;

/**
 * HR SMS Notification Templates (Arabic)
 *
 * Templates for automated HR notifications via SMS.
 * Placeholders: {employee_name}, {date}, {days}, {amount}, {contract_end_date},
 *               {probation_end_date}, {document_type}, {expiry_date}, {loan_amount},
 *               {month_year}, {leave_type}, {leave_start}, {leave_end}
 */
return function (Database $db): void {
    $ts = date('Y-m-d H:i:s');

    $templates = [
        [
            'template_code' => 'hr_leave_approved',
            'name_ar'       => 'إشعار قبول إجازة',
            'name_en'       => 'Leave Approved Notification',
            'body_ar'       => 'عزيزي {employee_name}، تم الموافقة على طلب إجازتك ({leave_type}) من {leave_start} إلى {leave_end} ({days} يوم). نتمنى لك إجازة سعيدة.',
            'channel'       => 'sms',
            'event_trigger' => 'hr.leave.approved',
        ],
        [
            'template_code' => 'hr_leave_rejected',
            'name_ar'       => 'إشعار رفض إجازة',
            'name_en'       => 'Leave Rejected Notification',
            'body_ar'       => 'عزيزي {employee_name}، نأسف لإبلاغك بأنه تم رفض طلب إجازتك ({leave_type}) من {leave_start} إلى {leave_end}. يرجى مراجعة إدارة الموارد البشرية.',
            'channel'       => 'sms',
            'event_trigger' => 'hr.leave.rejected',
        ],
        [
            'template_code' => 'hr_salary_slip',
            'name_ar'       => 'إشعار صرف الراتب',
            'name_en'       => 'Salary Slip Notification',
            'body_ar'       => 'عزيزي {employee_name}، تم صرف راتبك عن شهر {month_year} بمبلغ صافي {amount} جنيه مصري. يمكنك الاطلاع على تفاصيل المفردات من خلال النظام.',
            'channel'       => 'sms',
            'event_trigger' => 'hr.payroll.paid',
        ],
        [
            'template_code' => 'hr_contract_expiry',
            'name_ar'       => 'تنبيه انتهاء عقد',
            'name_en'       => 'Contract Expiry Alert',
            'body_ar'       => 'تنبيه: عقد الموظف {employee_name} سينتهي بتاريخ {contract_end_date}. يرجى اتخاذ إجراء التجديد أو الإنهاء قبل هذا التاريخ.',
            'channel'       => 'sms',
            'event_trigger' => 'hr.contract.expiry_alert',
        ],
        [
            'template_code' => 'hr_probation_end',
            'name_ar'       => 'تنبيه انتهاء فترة الاختبار',
            'name_en'       => 'Probation End Alert',
            'body_ar'       => 'تنبيه: فترة اختبار الموظف {employee_name} ستنتهي بتاريخ {probation_end_date}. يرجى تقييم الأداء واتخاذ قرار التثبيت.',
            'channel'       => 'sms',
            'event_trigger' => 'hr.probation.end_alert',
        ],
        [
            'template_code' => 'hr_loan_approved',
            'name_ar'       => 'إشعار الموافقة على سلفة',
            'name_en'       => 'Loan Approved Notification',
            'body_ar'       => 'عزيزي {employee_name}، تم الموافقة على طلب السلفة الخاص بك بمبلغ {loan_amount} جنيه مصري. سيتم الصرف في أقرب وقت.',
            'channel'       => 'sms',
            'event_trigger' => 'hr.loan.approved',
        ],
        [
            'template_code' => 'hr_document_expiry',
            'name_ar'       => 'تنبيه انتهاء صلاحية مستند',
            'name_en'       => 'Document Expiry Alert',
            'body_ar'       => 'تنبيه: مستند ({document_type}) للموظف {employee_name} سينتهي بتاريخ {expiry_date}. يرجى تجديد المستند قبل انتهاء الصلاحية.',
            'channel'       => 'sms',
            'event_trigger' => 'hr.document.expiry_alert',
        ],
    ];

    foreach ($templates as $tpl) {
        $existing = $db->selectOne(
            "SELECT id FROM sms_templates WHERE template_code = ?",
            [$tpl['template_code']]
        );
        if ($existing) {
            continue;
        }

        $db->insert('sms_templates', [
            'template_code'       => $tpl['template_code'],
            'name_ar'             => $tpl['name_ar'],
            'name_en'             => $tpl['name_en'],
            'message_template_ar' => $tpl['body_ar'],
            'trigger_event'       => $tpl['event_trigger'],
            'is_active'           => 1,
            'created_at'          => $ts,
            'updated_at'          => $ts,
        ]);
    }
};
