<?php
/**
 * SMS লগ টেবিল সেটআপ স্ক্রিপ্ট
 * 
 * এই স্ক্রিপ্ট সকল পাঠানো SMS ট্র্যাক করার জন্য ডাটাবেস টেবিল তৈরি করে
 */

require_once(__DIR__ . '/config/database.php');

try {
    // SMS logs টেবিল তৈরি করুন
    $pdo->exec("
        CREATE TABLE IF NOT EXISTS sms_logs (
            id INT AUTO_INCREMENT PRIMARY KEY,
            phone_number VARCHAR(20) NOT NULL,
            message LONGTEXT NOT NULL,
            type ENUM('text', 'otp') DEFAULT 'text',
            status ENUM('sent', 'failed', 'pending') DEFAULT 'pending',
            response JSON,
            api_status_code VARCHAR(10),
            student_id INT,
            class_id INT,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
            INDEX idx_phone (phone_number),
            INDEX idx_status (status),
            INDEX idx_created (created_at),
            INDEX idx_student (student_id),
            FOREIGN KEY (student_id) REFERENCES students(id) ON DELETE SET NULL,
            FOREIGN KEY (class_id) REFERENCES classes(id) ON DELETE SET NULL
        )
    ");
    
    echo "✓ sms_logs টেবিল সফলভাবে তৈরি হয়েছে\n";
    
    // SMS মেসেজ টেমপ্লেট টেবিল তৈরি করুন
    $pdo->exec("
        CREATE TABLE IF NOT EXISTS sms_templates (
            id INT AUTO_INCREMENT PRIMARY KEY,
            name VARCHAR(100) UNIQUE NOT NULL,
            title VARCHAR(255) NOT NULL,
            template_text LONGTEXT NOT NULL,
            description TEXT,
            placeholders JSON,
            active TINYINT(1) DEFAULT 1,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
            INDEX idx_active (active)
        )
    ");
    
    echo "✓ sms_templates টেবিল সফলভাবে তৈরি হয়েছে\n";
    
    // SMS ক্যাম্পেইন টেবিল তৈরি করুন
    $pdo->exec("
        CREATE TABLE IF NOT EXISTS sms_campaigns (
            id INT AUTO_INCREMENT PRIMARY KEY,
            name VARCHAR(255) NOT NULL,
            message LONGTEXT NOT NULL,
            target_type ENUM('students', 'class', 'all') DEFAULT 'students',
            target_ids JSON,
            class_id INT,
            status ENUM('draft', 'scheduled', 'sending', 'completed', 'failed') DEFAULT 'draft',
            scheduled_at DATETIME,
            started_at DATETIME,
            completed_at DATETIME,
            total_sent INT DEFAULT 0,
            total_failed INT DEFAULT 0,
            created_by INT,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
            FOREIGN KEY (class_id) REFERENCES classes(id) ON DELETE SET NULL,
            FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE SET NULL,
            INDEX idx_status (status),
            INDEX idx_scheduled (scheduled_at)
        )
    ");
    
    echo "✓ sms_campaigns টেবিল সফলভাবে তৈরি হয়েছে\n";
    
    // SMS settings টেবিল তৈরি করুন
    $pdo->exec("
        CREATE TABLE IF NOT EXISTS sms_settings (
            id INT AUTO_INCREMENT PRIMARY KEY,
            key_name VARCHAR(100) UNIQUE NOT NULL,
            value LONGTEXT,
            data_type ENUM('string', 'integer', 'boolean', 'json') DEFAULT 'string',
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
        )
    ");
    
    echo "✓ sms_settings টেবিল সফলভাবে তৈরি হয়েছে\n";
    
    // ডিফল্ট সেটিংস যোগ করুন
    $stmt = $pdo->prepare("
        INSERT IGNORE INTO sms_settings (key_name, value, data_type)
        VALUES (?, ?, ?)
    ");
    
    $settings = [
        ['sms_enabled', '0', 'boolean'],
        ['api_key', '', 'string'],
        ['caller_id', '1234', 'string'],
        ['send_to_guardian', '1', 'boolean'],
        ['max_retries', '3', 'integer'],
        ['rate_limit', '60', 'integer'],
    ];
    
    foreach ($settings as $setting) {
        $stmt->execute($setting);
    }
    
    echo "✓ ডিফল্ট সেটিংস যোগ করা হয়েছে\n";
    
    echo "\n✓ সমস্ত টেবিল সফলভাবে তৈরি হয়েছে!\n";
    
} catch (PDOException $e) {
    echo "✗ ত্রুটি: " . $e->getMessage() . "\n";
    exit(1);
}
?>
