<?php
session_start();

// Database Connection
$pdo = new PDO("mysql:host=localhost;dbname=luziraco_LUZIRA", "luziraco_Staff", "Luzira@2025");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// Check login and role
if (!isset($_SESSION['username']) || !isset($_SESSION['role'])) {
    header("Location: login.php");
    exit();
}

$username = $_SESSION['username'];
$role = $_SESSION['role'];
$allowed_roles = ['Admin', 'Class Teacher', 'Teacher'];

if (!in_array($role, $allowed_roles)) {
    header("Location: login.php");
    exit();
}

// Check verification
$stmt = $pdo->prepare("SELECT password FROM USERS WHERE USER_NAME = ? AND ROLE = ?");
$stmt->execute([$username, $role]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$user) {
    die("User not found.");
}

$actual_password = $user['password'];

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['verification_password'])) {
    if ($_POST['verification_password'] === $actual_password) {
        $_SESSION['verified_' . $username . '_' . $role] = true;
        header("Location: " . $_SERVER['PHP_SELF']);
        exit();
    } else {
        $error = "❌ Incorrect password. Please try again.";
    }
}

if (!isset($_SESSION['verified_' . $username . '_' . $role])) {
?>
<!DOCTYPE html>
<html>
<head>
    <title>Verify Access</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background: #f4f4f4;
            display: flex;
            align-items: center;
            justify-content: center;
            height: 100vh;
        }
        .container {
            background: #fff;
            padding: 30px;
            border-radius: 10px;
            box-shadow: 0 0 10px rgba(0,0,0,0.1);
            width: 350px;
            text-align: center;
        }
        input[type="password"], input[type="submit"] {
            width: 90%;
            padding: 10px;
            margin-top: 10px;
            border-radius: 5px;
            border: 1px solid #ccc;
            font-size: 16px;
        }
        input[type="submit"] {
            background-color: #007bff;
            color: white;
            cursor: pointer;
            border: none;
        }
        .error {
            color: red;
            margin-top: 10px;
        }
    </style>
</head>
<body>
<div class="container">
    <h3><?= htmlspecialchars($role) ?> Verification</h3>
    <p>Enter your password to continue</p>
    <form method="POST">
        <input type="password" name="verification_password" placeholder="Password" required>
        <br>
        <input type="submit" value="Verify">
    </form>
    <?php if (isset($error)) echo "<div class='error'>$error</div>"; ?>
</div>
</body>
</html>
<?php
    exit();
}



// Handle Form Submissions ALL
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $action = $_POST['action'] ?? '';

    if ($action === 'load_students_by_class') {
        $stmt = $pdo->prepare("SELECT STUDENT_ID, STUDENT_NAME FROM STUDENTS WHERE CLASS = ? ORDER BY STUDENT_NAME ASC");
        $stmt->execute([$_POST['class']]);
        $students = $stmt->fetchAll(PDO::FETCH_ASSOC);
        echo json_encode($students);
        exit;
    }

    if ($action === 'add_midterm_lower') {
        $stmt = $pdo->prepare("INSERT INTO MIDTERM_LOWER (
            STUDENT_ID, STUDENT_NAME, CLASS, TERM, MTC, ENG, LIT1, LIT2, RE, RECORDED_BY
        ) VALUES (
            ?, (SELECT STUDENT_NAME FROM STUDENTS WHERE STUDENT_ID = ?), ?, ?, ?, ?, ?, ?, ?, ?
        )");
        $done = $stmt->execute([
            $_POST['student_id'], $_POST['student_id'], $_POST['class'], $_POST['term'],
            $_POST['mtc'] ?: null, $_POST['eng'] ?: null, $_POST['lit1'] ?: null,
            $_POST['lit2'] ?: null, $_POST['re'] ?: null, $username
        ]);
        exit($done ? "✅ Midterm (Lower) result added." : "❌ Failed to add result.");

    } elseif ($action === 'view_midterm_lower') {
        $stmt = $pdo->prepare("SELECT * FROM MIDTERM_LOWER WHERE CLASS = ? ORDER BY STUDENT_NAME");
        $stmt->execute([$_POST['result_class']]);
        $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
        echo generateTable($results);
        exit;

    } elseif ($action === 'add_eot_lower') {
        $stmt = $pdo->prepare("INSERT INTO EOT_LOWER (
            STUDENT_ID, STUDENT_NAME, CLASS, TERM, MTC, ENG, LIT1, LIT2, RE, RECORDED_BY
        ) VALUES (
            ?, (SELECT STUDENT_NAME FROM STUDENTS WHERE STUDENT_ID = ?), ?, ?, ?, ?, ?, ?, ?, ?
        )");
        $done = $stmt->execute([
            $_POST['student_id'], $_POST['student_id'], $_POST['class'], $_POST['term'],
            $_POST['mtc'] ?: null, $_POST['eng'] ?: null, $_POST['lit1'] ?: null,
            $_POST['lit2'] ?: null, $_POST['re'] ?: null, $username
        ]);
        exit($done ? "✅ EOT (Lower) result added." : "❌ Failed to add result.");

    } elseif ($action === 'view_eot_lower') {
        $stmt = $pdo->prepare("SELECT * FROM EOT_LOWER WHERE CLASS = ? ORDER BY STUDENT_NAME ASC");
        $stmt->execute([$_POST['result_class']]);
        $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
        echo generateTable($results);
        exit;
    }
}

function generateTable($results) {
    if (empty($results)) return "<p>No results found.</p>";
    $html = "<table class='styled-table'><thead><tr>";
    foreach (array_keys($results[0]) as $col) {
        $html .= "<th>" . htmlspecialchars($col) . "</th>";
    }
    $html .= "</tr></thead><tbody>";
    foreach ($results as $row) {
        $html .= "<tr>";
        foreach ($row as $val) {
            $html .= "<td>" . htmlspecialchars($val) . "</td>";
        }
        $html .= "</tr>";
    }
    $html .= "</tbody></table>";
    return $html;
}
?>

<!DOCTYPE html>
<html>
<head>
    <title>Lower Class Results</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 0;
            background: #f4f4f4;
            padding: 20px;
        }
        .section {
            background: #ffffff;
            border-radius: 10px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
            padding: 20px;
            margin-bottom: 30px;
            max-width: 100%;
            overflow-x: auto;
        }
        h2, h3 {
            color: #333;
        }
        form {
            display: flex;
            flex-wrap: wrap;
            gap: 10px;
            align-items: center;
        }
        input, select, button {
            padding: 10px;
            font-size: 14px;
            border-radius: 5px;
            border: 1px solid #ccc;
        }
        button {
            background-color: #28a745;
            color: white;
            cursor: pointer;
            border: none;
        }
        button:hover {
            background-color: #218838;
        }
        .styled-table {
            width: 100%;
            border-collapse: collapse;
            margin-top: 20px;
        }
        .styled-table th {
            background-color: #007BFF;
            color: white;
            padding: 10px;
        }
        .styled-table td {
            padding: 10px;
            border: 1px solid #ddd;
        }
        .styled-table tr:nth-child(even) {
            background-color: #f9f9f9;
        }

        .lower-results-btn {
    display: inline-block;
    padding: 12px 20px;
    background: linear-gradient(to right, #6a11cb, #2575fc);
    color: #fff;
    font-weight: bold;
    border-radius: 8px;
    text-decoration: none;
    box-shadow: 0 4px 8px rgba(0,0,0,0.2);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
    font-size: 16px;
    margin: 10px 0;
}
.lower-results-btn:hover {
    transform: scale(1.05);
    box-shadow: 0 6px 12px rgba(0,0,0,0.3);
}

.container {
            background: #fff;
            max-width: 400px;
            margin: auto;
            padding: 20px 30px;
            border-radius: 8px;
            box-shadow: 0 0 10px rgba(0,0,0,0.15);
        }
        
    </style>
</head>
<body>
<h2>School Results Management System</h2>
<a href="lower_single_results.php" class="lower-results-btn">📊 RECORD SINGLE SUBJECT</a>
<table><tr><td>
<div class="section">
<h2>Midterm Result Entry (Lower)</h2>
<form id="midtermLowerForm">
    <select name="class" id="classMidterm" required>
        <option value="">Select Class</option>
        <option value="P1">P1</option>
        <option value="P2">P2</option>
        <option value="P3">P3</option>
    </select>
    <select name="student_id" id="studentMidterm" required>
        <option value="">Select Student</option>
    </select>
    <select name="term" required>
    <option value="">Select Term</option>
    <option value="Term 1">Term 1</option>
    <option value="Term 2">Term 2</option>
    <option value="Term 3">Term 3</option>
</select>

    <input name="mtc" type="number" placeholder="Math">
    <input name="eng" type="number" placeholder="English">
    <input name="lit1" type="number" placeholder="Lit1">
    <input name="lit2" type="number" placeholder="Lit2">
    <input name="re" type="number" placeholder="RE">
    <button type="submit">Add Midterm</button>
</form>
<div id="midtermLowerMessage"></div>
</div></td>
<td>
<div class="section">
<h2>View Midterm Results</h2>
<form id="viewMidtermLowerForm">
    <input name="result_class" placeholder="Class (P1-P3)" required>
    <button type="submit">View</button>
</form>
<div id="midtermLowerResultsTable"></div>
</div></td>
</tr></table>

<table><tr><td>
<div class="section">
<h2>EOT Result Entry (Lower)</h2>
<form id="eotLowerForm">
    <select name="class" id="classEOT" required>
        <option value="">Select Class</option>
        <option value="P1">P1</option>
        <option value="P2">P2</option>
        <option value="P3">P3</option>
    </select>
    <select name="student_id" id="studentEOT" required>
        <option value="">Select Student</option>
    </select>
    <select name="term" required>
    <option value="">Select Term</option>
    <option value="Term 1">Term 1</option>
    <option value="Term 2">Term 2</option>
    <option value="Term 3">Term 3</option>
</select>

    <input name="mtc" type="number" placeholder="Math">
    <input name="eng" type="number" placeholder="English">
    <input name="lit1" type="number" placeholder="Lit1">
    <input name="lit2" type="number" placeholder="Lit2">
    <input name="re" type="number" placeholder="RE">
    <button type="submit">Add EOT</button>
</form>
<div id="eotLowerMessage"></div>
</div></td>

<td>
<div class="section">
<h2>View EOT Results</h2>
<form id="viewEOTLowerForm">
    <input name="result_class" placeholder="Class (P1-P3)" required>
    <button type="submit">View</button>
</form>
<div id="eotLowerResultsTable"></div>
</div></td>
</tr></table>


<script>
function handleForm(formId, messageId, action, resultId) {
    document.getElementById(formId).addEventListener("submit", function(e) {
        e.preventDefault();
        const formData = new FormData(this);
        formData.append("action", action);

        fetch("", { method: "POST", body: formData })
        .then(res => res.text())
        .then(msg => {
            if (messageId) document.getElementById(messageId).innerText = msg;
            if (resultId) document.getElementById(resultId).innerHTML = msg;
            if (msg.includes("✅")) this.reset();
        });
    });
}

handleForm("midtermLowerForm", "midtermLowerMessage", "add_midterm_lower");
handleForm("viewMidtermLowerForm", null, "view_midterm_lower", "midtermLowerResultsTable");
handleForm("eotLowerForm", "eotLowerMessage", "add_eot_lower");
handleForm("viewEOTLowerForm", null, "view_eot_lower", "eotLowerResultsTable");

function loadStudents(classSelectId, studentSelectId) {
    const classSelect = document.getElementById(classSelectId);
    const studentSelect = document.getElementById(studentSelectId);
    classSelect.addEventListener('change', () => {
        const formData = new FormData();
        formData.append('action', 'load_students_by_class');
        formData.append('class', classSelect.value);
        fetch('', { method: 'POST', body: formData })
            .then(res => res.json())
            .then(data => {
                studentSelect.innerHTML = '<option value="">Select Student</option>';
                data.forEach(student => {
                    const option = document.createElement('option');
                    option.value = student.STUDENT_ID;
                    option.textContent = `${student.STUDENT_NAME} (${student.STUDENT_ID})`;
                    studentSelect.appendChild(option);
                });
            });
    });
}

loadStudents("classMidterm", "studentMidterm");
loadStudents("classEOT", "studentEOT");
</script>
</body>
</html>
