<?php
session_start();
require_once '../config/database.php';
require_once '../includes/sidebar_layout.php';

if (!isset($_SESSION['user_id']) || $_SESSION['user_role'] != 'admin') {
    header('Location: ../login.php');
    exit();
}

$message = '';
$error = '';

if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['student_file'])) {
    $file = $_FILES['student_file']['tmp_name'];
    $file_type = $_FILES['student_file']['type'];

    if ($_FILES['student_file']['error'] == UPLOAD_ERR_OK) {
        if (($handle = fopen($file, "r")) !== FALSE) {
            $pdo->beginTransaction();
            $updated_count = 0;
            $error_count = 0;
            $header = fgetcsv($handle, 1000, ","); // Read header row

            while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
                $row_data = array_combine($header, $data);
                $student_id = $row_data['student_id'] ?? null;

                if ($student_id) {
                    $update_fields = [];
                    $params = [];
                    foreach ($row_data as $key => $value) {
                        if ($key != 'student_id') {
                            $update_fields[] = "`$key` = ?";
                            $params[] = $value;
                        }
                    }
                    $params[] = $student_id;

                    if (!empty($update_fields)) {
                        $sql = "UPDATE students SET " . implode(', ', $update_fields) . " WHERE student_id = ?";
                        $stmt = $pdo->prepare($sql);
                        if ($stmt->execute($params)) {
                            $updated_count++;
                        } else {
                            $error_count++;
                        }
                    }
                }
            }
            fclose($handle);

            if ($error_count > 0) {
                $pdo->rollBack();
                $error = "$error_count টি রেকর্ডে ত্রুটি থাকায় কোনো পরিবর্তন করা হয়নি।";
            } else {
                $pdo->commit();
                $message = "সফলভাবে $updated_count জন ছাত্র-ছাত্রীর তথ্য আপডেট করা হয়েছে।";
            }
        } else {
            $error = "ফাইলটি খোলা সম্ভব হয়নি।";
        }
    } else {
        $error = "ফাইল আপলোডে ত্রুটি হয়েছে।";
    }
}

$user_role = $_SESSION['user_role'];
$user_name = $_SESSION['user_name'];
?>

<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>বাল্ক স্টুডেন্ট আপডেট</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
    <link href="../assets/css/jessoreboard-theme.css" rel="stylesheet">
    <link href="../assets/css/sidebar.css" rel="stylesheet">
</head>
<body>
    <div class="sidebar-container">
        <?php echo renderSidebar('index_with_sidebar.php', $user_role, $user_name); ?>
        <div class="main-content">
            <div class="container mt-4">
                <div class="card">
                    <div class="card-header">
                        <h5><i class="fas fa-upload"></i> বাল্ক স্টুডেন্ট আপডেট</h5>
                    </div>
                    <div class="card-body">
                        <?php if ($message): ?>
                            <div class="alert alert-success"><?php echo $message; ?></div>
                        <?php endif; ?>
                        <?php if ($error): ?>
                            <div class="alert alert-danger"><?php echo $error; ?></div>
                        <?php endif; ?>

                        <div class="alert alert-info">
                            <strong>নির্দেশনা:</strong>
                            <ul>
                                <li>শুধুমাত্র CSV ফাইল আপলোড করুন।</li>
                                <li>ফাইলের প্রথম সারিতে কলামের নাম থাকতে হবে (e.g., student_id, first_name, phone)।</li>
                                <li>`student_id` কলামটি আবশ্যক এবং ছাত্র সনাক্ত করার জন্য ব্যবহৃত হবে।</li>
                                <li>যে কলামগুলো আপডেট করতে চান, শুধুমাত্র সেই কলামগুলো ফাইলে রাখুন।</li>
                            </ul>
                        </div>

                        <form method="POST" enctype="multipart/form-data">
                            <div class="mb-3">
                                <label for="student_file" class="form-label">CSV ফাইল নির্বাচন করুন</label>
                                <input type="file" class="form-control" id="student_file" name="student_file" accept=".csv" required>
                            </div>
                            <button type="submit" class="btn btn-primary">আপলোড ও আপডেট করুন</button>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>
