<?php
/**
 * Fix for attendance table missing subject_id column
 * This script adds the subject_id column to the attendance table
 */

require_once 'config/database.php';
error_reporting(E_ALL);
ini_set('display_errors', 1);

echo "<h1>Attendance Table Fix</h1>";
echo "<p>উপস্থিতি টেবিলে subject_id কলাম যোগ করা হচ্ছে...</p>";

try {
    // Check if subject_id column already exists
    $stmt = $pdo->query("DESCRIBE attendance");
    $columns = $stmt->fetchAll(PDO::FETCH_COLUMN);

    if (!in_array('subject_id', $columns)) {
        echo "<p style='color: orange;'>⚠️ subject_id কলাম নেই। যোগ করা হচ্ছে...</p>";

        // Add subject_id column to attendance table
        $pdo->exec("
            ALTER TABLE attendance
            ADD COLUMN subject_id INT NULL AFTER class_id,
            ADD CONSTRAINT fk_attendance_subject_id
            FOREIGN KEY (subject_id) REFERENCES subjects(id) ON DELETE SET NULL
        ");

        echo "<p style='color: green;'>✅ subject_id কলাম সফলভাবে যোগ করা হয়েছে</p>";

        // Add index for better performance
        $pdo->exec("CREATE INDEX idx_attendance_subject_id ON attendance (subject_id)");
        echo "<p style='color: green;'>✅ subject_id এর জন্য ইনডেক্স তৈরি করা হয়েছে</p>";

    } else {
        echo "<p style='color: green;'>✅ subject_id কলাম ইতিমধ্যে আছে</p>";
    }

    // Verify the table structure
    echo "<h2>যাচাইকরণ</h2>";
    $stmt = $pdo->query("DESCRIBE attendance");
    $columns = $stmt->fetchAll(PDO::FETCH_ASSOC);

    echo "<h3>Attendance Table Columns:</h3>";
    echo "<ul>";
    foreach ($columns as $column) {
        echo "<li><strong>{$column['Field']}</strong> - {$column['Type']} " .
             ($column['Null'] == 'YES' ? '(NULL allowed)' : '(NOT NULL)') .
             ($column['Key'] ? " [{$column['Key']}]" : "") . "</li>";
    }
    echo "</ul>";

    // Test a sample query to make sure it works
    echo "<h2>টেস্ট কোয়েরি</h2>";
    try {
        $stmt = $pdo->prepare("
            INSERT INTO attendance (student_id, class_id, subject_id, date, status, remarks, created_at, updated_at)
            VALUES (?, ?, ?, ?, ?, ?, NOW(), NOW())
        ");
        $stmt->execute([1, 1, NULL, date('Y-m-d'), 'present', 'Test attendance']);
        $inserted_id = $pdo->lastInsertId();

        // Delete the test record
        $stmt = $pdo->prepare("DELETE FROM attendance WHERE id = ?");
        $stmt->execute([$inserted_id]);

        echo "<p style='color: green;'>✅ subject_id কলাম সহ INSERT কোয়েরি সফল</p>";

    } catch (Exception $e) {
        echo "<p style='color: red;'>❌ টেস্ট কোয়েরি ব্যর্থ: " . $e->getMessage() . "</p>";
    }

    echo "<h2>সমাধান সম্পূর্ণ</h2>";
    echo "<p style='color: green;'>🎉 উপস্থিতি সেভ করার সমস্যা সমাধান হয়েছে!</p>";
    echo "<p>এখন আপনি স্বাভাবিকভাবে উপস্থিতি নিতে পারবেন।</p>";

    echo "<h3>পরবর্তী ধাপ:</h3>";
    echo "<ol>";
    echo "<li><a href='teachers/attendance.php'>শিক্ষক উপস্থিতি পেজে যান</a></li>";
    echo "<li>একটি ক্লাস নির্বাচন করুন</li>";
    echo "<li>উপস্থিতি নিন এবং সেভ করুন</li>";
    echo "</ol>";

} catch (Exception $e) {
    echo "<p style='color: red;'>❌ ত্রুটি: " . $e->getMessage() . "</p>";
    echo "<p>অনুগ্রহ করে আপনার ডেটাবেস কনফিগারেশন চেক করুন এবং আবার চেষ্টা করুন।</p>";
}
?>
