<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class SmsTemplate extends Model
{
    use HasFactory;

    protected $table = 'sms_templates';
    
    protected $fillable = [
        'name',
        'template_id',
        'purpose',
        'message',
        'variables',
        'is_active',
        'created_by'
    ];

    protected $casts = [
        'variables' => 'array',
        'is_active' => 'boolean'
    ];

    public function creator()
    {
        return $this->belongsTo(User::class, 'created_by');
    }

    public function logs()
    {
        return $this->hasMany(SmsLog::class, 'template_id');
    }

    // Default templates
    public static function getDefaultTemplates()
    {
        return [
            [
                'name' => 'ভর্তি নিশ্চিতকরণ',
                'purpose' => 'admission',
                'message' => 'প্রিয় {student_name}, আপনার {institution_name} এ ভর্তি নিশ্চিত হয়েছে। আপনার ছাত্র আইডি: {student_id}। লগইন করুন: {login_url}। ধন্যবাদ।',
                'variables' => ['student_name', 'institution_name', 'student_id', 'login_url']
            ],
            [
                'name' => 'ফি পরিশোধ',
                'purpose' => 'fee_payment',
                'message' => 'প্রিয় {student_name}, আপনার {month} মাসের বিল {amount} টাকা পরিশোধ করা হয়েছে। বকেয়া: {due} টাকা। ধন্যবাদ।',
                'variables' => ['student_name', 'month', 'amount', 'due']
            ],
            [
                'name' => 'ফলাফল প্রকাশ',
                'purpose' => 'exam_result',
                'message' => 'প্রিয় {student_name}, আপনার {exam_name} এর ফলাফল প্রকাশিত হয়েছে। GPA: {gpa}, Grade: {grade}। বিস্তারিত দেখুন: {result_url}',
                'variables' => ['student_name', 'exam_name', 'gpa', 'grade', 'result_url']
            ],
            [
                'name' => 'অনুপস্থিতির তথ্য',
                'purpose' => 'attendance',
                'message' => 'প্রিয় অভিভাবক, আপনার সন্তান {student_name} আজ {date} তারিখে অনুপস্থিত ছিল। অনুগ্রহ করে যোগাযোগ করুন।',
                'variables' => ['student_name', 'date']
            ],
            [
                'name' => 'ছুটির তথ্য',
                'purpose' => 'holiday',
                'message' => 'সকলের অবগতির জন্য জানানো যাচ্ছে যে, {start_date} থেকে {end_date} পর্যন্ত {holiday_name} উপলক্ষ্যে প্রতিষ্ঠান বন্ধ থাকবে।',
                'variables' => ['start_date', 'end_date', 'holiday_name']
            ],
            [
                'name' => 'জন্মদিনের শুভেচ্ছা',
                'purpose' => 'birthday',
                'message' => 'শুভ জন্মদিন {student_name}! আপনার জীবন আনন্দে ভরে উঠুক। শুভকামনা। - {institution_name}',
                'variables' => ['student_name', 'institution_name']
            ]
        ];
    }

    // Parse template with variables
    public function parse($data)
    {
        $message = $this->message;
        
        foreach ($data as $key => $value) {
            $message = str_replace('{' . $key . '}', $value, $message);
        }
        
        return $message;
    }
}