<?php
/**
 * IBVTE Admin - Result Management System
 */

require_once __DIR__ . '/../config.php';
require_once __DIR__ . '/../includes/db.php';
require_once __DIR__ . '/../includes/auth.php';

// Check database connection before proceeding
if (!checkDBConnection()) {
    exit;
}

Auth()->requireRole(['super_admin', 'admin']);

$db = DB();
$flash = getFlashMessage();

// Handle result declaration
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // CSRF Protection
    if (!Auth()->verifyCSRFToken($_POST['csrf_token'] ?? '')) {
        redirectWithMessage('results.php', 'Security session expired. Please try again.', 'danger');
    }

    $action = $_POST['action'] ?? '';
    
    if ($action === 'declare') {
        $studentId = intval($_POST['student_id'] ?? 0);
        $marksObtained = intval($_POST['marks_obtained'] ?? 0);
        $totalMarks = intval($_POST['total_marks'] ?? 100);
        $percentage = ($marksObtained / $totalMarks) * 100;
        
        // Calculate division
        $division = getDivision($percentage);
        
        // Calculate remark
        $remark = '';
        if ($percentage >= 75) $remark = 'D';
        else if ($percentage >= 60) $remark = 'I';
        else if ($percentage >= 50) $remark = 'II';
        else if ($percentage >= 40) $remark = 'III';
        else $remark = 'Fail';
        
        $db->update('students', [
            'marks_obtained' => $marksObtained,
            'total_marks' => $totalMarks,
            'percentage' => round($percentage, 2),
            'division' => $division,
            'remark' => $remark,
            'result_declared' => 1,
            'result_declared_at' => date('Y-m-d H:i:s')
        ], ['id' => $studentId]);
        
        // Add detailed subject results if provided
        if (!empty($_POST['subjects'])) {
            foreach ($_POST['subjects'] as $subject) {
                if (!empty($subject['name'])) {
                    $subMarks = intval($subject['marks'] ?? 0);
                    $subMax = intval($subject['max_marks'] ?? 100);
                    $subPercent = ($subMarks / $subMax) * 100;
                    
                    // Grade calculation
                    $grade = 'F';
                    $isPass = 0;
                    if ($subPercent >= 90) $grade = 'A+';
                    else if ($subPercent >= 80) $grade = 'A';
                    else if ($subPercent >= 70) $grade = 'B+';
                    else if ($subPercent >= 60) $grade = 'B';
                    else if ($subPercent >= 50) $grade = 'C';
                    else if ($subPercent >= 40) $grade = 'D';
                    
                    if ($subPercent >= 40) $isPass = 1;
                    
                    $db->insert('student_results', [
                        'student_id' => $studentId,
                        'exam_type' => 'final',
                        'exam_session' => $_POST['session_year'] ?? date('Y'),
                        'semester' => intval($_POST['semester'] ?? 1),
                        'subject_code' => strtoupper(substr($subject['name'], 0, 3)) . rand(100, 999),
                        'subject_name' => $subject['name'],
                        'max_marks' => $subMax,
                        'obtained_marks' => $subMarks,
                        'grade' => $grade,
                        'is_pass' => $isPass,
                        'is_published' => 1,
                        'published_at' => date('Y-m-d H:i:s'),
                        'created_by' => $_SESSION['user_id']
                    ]);
                }
            }
        }
        
        redirectWithMessage('results.php', 'Result declared successfully', 'success');
    }
    
    if ($action === 'bulk_declare') {
        $studentIds = $_POST['student_ids'] ?? [];
        foreach ($studentIds as $id) {
            $db->update('students', [
                'result_declared' => 1,
                'result_declared_at' => date('Y-m-d H:i:s')
            ], ['id' => $id]);
        }
        redirectWithMessage('results.php', count($studentIds) . ' results published', 'success');
    }
}

// Get students without declared results
$pendingStudents = $db->fetchAll(
    "SELECT s.*, c.course_name, u.institution_name
     FROM students s
     JOIN courses c ON s.course_id = c.id
     JOIN users u ON s.institution_id = u.id
     WHERE s.result_declared = 0 AND s.status = 'active'
     ORDER BY s.created_at DESC"
);

// Get declared results
$declaredResults = $db->fetchAll(
    "SELECT s.*, c.course_name, u.institution_name
     FROM students s
     JOIN courses c ON s.course_id = c.id
     JOIN users u ON s.institution_id = u.id
     WHERE s.result_declared = 1
     ORDER BY s.result_declared_at DESC"
);

// Add dummy data
$dummyPending = [
    ['id' => 1, 'full_name' => 'Rahul Kumar', 'roll_number' => 'IBVTE24001', 'course_name' => 'Diploma in Computer', 'institution_name' => 'XYZ College', 'session_year' => '2023-24'],
    ['id' => 2, 'full_name' => 'Priya Sharma', 'roll_number' => 'IBVTE24002', 'course_name' => 'Diploma in Aviation', 'institution_name' => 'ABC Institute', 'session_year' => '2023-24'],
    ['id' => 3, 'full_name' => 'Amit Singh', 'roll_number' => 'IBVTE24003', 'course_name' => 'Diploma in Ayurveda', 'institution_name' => 'Medical College', 'session_year' => '2023-24'],
];

$dummyDeclared = [
    ['id' => 4, 'full_name' => 'Sunita Devi', 'roll_number' => 'IBVTE23001', 'course_name' => 'Diploma in Computer', 'institution_name' => 'XYZ College', 'marks_obtained' => 78, 'total_marks' => 100, 'percentage' => 78.00, 'division' => 'first', 'remark' => 'I', 'session_year' => '2022-23'],
    ['id' => 5, 'full_name' => 'Rajesh Patel', 'roll_number' => 'IBVTE23002', 'course_name' => 'Diploma in Civil', 'institution_name' => 'Engineering College', 'marks_obtained' => 82, 'total_marks' => 100, 'percentage' => 82.00, 'division' => 'first', 'remark' => 'I', 'session_year' => '2022-23'],
    ['id' => 6, 'full_name' => 'Anita Gupta', 'roll_number' => 'IBVTE23003', 'course_name' => 'Diploma in Automobile', 'institution_name' => 'Tech Institute', 'marks_obtained' => 76, 'total_marks' => 100, 'percentage' => 76.00, 'division' => 'distinction', 'remark' => 'D', 'session_year' => '2022-23'],
    ['id' => 7, 'full_name' => 'Vikram Rao', 'roll_number' => 'IBVTE23004', 'course_name' => 'Diploma in Computer', 'institution_name' => 'XYZ College', 'marks_obtained' => 35, 'total_marks' => 100, 'percentage' => 35.00, 'division' => 'fail', 'remark' => '*', 'session_year' => '2022-23'],
];

if (empty($pendingStudents)) {
    $pendingStudents = $dummyPending;
}
if (empty($declaredResults)) {
    $declaredResults = $dummyDeclared;
}

// Stats
$totalPending = count($pendingStudents);
$totalDeclared = count($declaredResults);
$totalPass = count(array_filter($declaredResults, fn($s) => $s['percentage'] >= 40));
$totalFail = count(array_filter($declaredResults, fn($s) => $s['percentage'] < 40));
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Result Management - <?= APP_SHORT_NAME ?></title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
    <link href="../assets/css/admin-style.css" rel="stylesheet">
    <style>
        .result-card { transition: all 0.3s; }
        .result-card:hover { transform: translateY(-3px); }
        .division-badge {
            font-size: 0.85rem;
            padding: 5px 12px;
            border-radius: 20px;
        }
        .division-distinction { background: #28a745; color: white; }
        .division-first { background: #17a2b8; color: white; }
        .division-second { background: #6c757d; color: white; }
        .division-third { background: #ffc107; color: #000; }
        .division-fail { background: #dc3545; color: white; }
        .subject-row { background: #f8f9fa; border-radius: 8px; padding: 10px; margin-bottom: 10px; }
    </style>
</head>
<body>
    <?php include __DIR__ . '/../includes/admin_header.php'; ?>
    
    <div class="container-fluid">
        <div class="row">
            <?php include __DIR__ . '/../includes/admin_sidebar.php'; ?>
            
            <main class="col-md-9 ms-sm-auto col-lg-10 px-md-4 py-4">
                <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pb-2 mb-3 border-bottom">
                    <h1 class="h2"><i class="fas fa-chart-bar me-2 text-primary"></i>Result Management</h1>
                </div>
                
                <?php if ($flash): ?>
                    <div class="alert alert-<?= $flash['type'] ?> alert-dismissible fade show">
                        <?= htmlspecialchars($flash['message']) ?>
                        <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
                    </div>
                <?php endif; ?>
                
                <!-- Stats -->
                <div class="row mb-4">
                    <div class="col-md-3">
                        <div class="card text-center py-3">
                            <h3 class="text-warning mb-0"><?= $totalPending ?></h3>
                            <small class="text-muted">Pending Results</small>
                        </div>
                    </div>
                    <div class="col-md-3">
                        <div class="card text-center py-3">
                            <h3 class="text-success mb-0"><?= $totalDeclared ?></h3>
                            <small class="text-muted">Total Declared</small>
                        </div>
                    </div>
                    <div class="col-md-3">
                        <div class="card text-center py-3">
                            <h3 class="text-primary mb-0"><?= $totalPass ?></h3>
                            <small class="text-muted">Passed</small>
                        </div>
                    </div>
                    <div class="col-md-3">
                        <div class="card text-center py-3">
                            <h3 class="text-danger mb-0"><?= $totalFail ?></h3>
                            <small class="text-muted">Failed</small>
                        </div>
                    </div>
                </div>
                
                <!-- Pending Results -->
                <div class="card mb-4">
                    <div class="card-header bg-white d-flex justify-content-between align-items-center">
                        <h5 class="mb-0"><i class="fas fa-clock me-2 text-warning"></i>Pending Results (<?= $totalPending ?>)</h5>
                        <button class="btn btn-sm btn-primary" onclick="bulkDeclare()">Bulk Declare</button>
                    </div>
                    <div class="card-body p-0">
                        <div class="table-responsive">
                            <table class="table table-hover align-middle">
                                <thead class="table-light">
                                    <tr>
                                        <th><input type="checkbox" class="form-check-input" id="selectAllPending"></th>
                                        <th>Student</th>
                                        <th>Roll Number</th>
                                        <th>Course</th>
                                        <th>Institution</th>
                                        <th>Session</th>
                                        <th>Action</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php foreach ($pendingStudents as $student): ?>
                                        <tr>
                                            <td><input type="checkbox" class="form-check-input student-checkbox" value="<?= $student['id'] ?>"></td>
                                            <td>
                                                <div class="d-flex align-items-center">
                                                    <div class="bg-primary bg-opacity-10 text-primary rounded-circle d-flex align-items-center justify-content-center" style="width: 35px; height: 35px;">
                                                        <i class="fas fa-user"></i>
                                                    </div>
                                                    <div class="ms-2">
                                                        <div class="fw-bold"><?= htmlspecialchars($student['full_name']) ?></div>
                                                        <div class="small fw-bold text-primary">Roll: <?= htmlspecialchars($student['roll_number']) ?></div>
                                                    </div>
                                                </div>
                                            </td>
                                            <td><?= htmlspecialchars($student['roll_number']) ?></td>
                                            <td><?= htmlspecialchars($student['course_name']) ?></td>
                                            <td>
                                                <div class="fw-bold text-primary"><?= htmlspecialchars($student['institution_name'] ?? 'Direct') ?></div>
                                            </td>
                                            <td><?= htmlspecialchars($student['session_year']) ?></td>
                                            <td>
                                                <button type="button" class="btn btn-sm btn-primary" data-bs-toggle="modal" data-bs-target="#declareModal<?= $student['id'] ?>">
                                                    <i class="fas fa-plus-circle me-1"></i>Declare Result
                                                </button>
                                            </td>
                                        </tr>
                                        
                                        <!-- Declare Result Modal -->
                                        <div class="modal fade" id="declareModal<?= $student['id'] ?>" tabindex="-1">
                                            <div class="modal-dialog modal-lg">
                                                <div class="modal-content">
                                                    <div class="modal-header" style="background: linear-gradient(135deg, #3b0b7c, #6c4ab6); color: white;">
                                                        <h5 class="modal-title"><i class="fas fa-chart-line me-2"></i>Declare Result</h5>
                                                        <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
                                                    </div>
                                                    <form method="POST">
                                                        <input type="hidden" name="csrf_token" value="<?= Auth()->generateCSRFToken() ?>">
                                                        <div class="modal-body">
                                                            <input type="hidden" name="action" value="declare">
                                                            <input type="hidden" name="student_id" value="<?= $student['id'] ?>">
                                                            <input type="hidden" name="session_year" value="<?= $student['session_year'] ?>">
                                                            
                                                            <div class="alert alert-info">
                                                                <strong>Student:</strong> <?= htmlspecialchars($student['full_name']) ?> | 
                                                                <strong>Roll:</strong> <?= htmlspecialchars($student['roll_number']) ?> | 
                                                                <strong>Course:</strong> <?= htmlspecialchars($student['course_name']) ?>
                                                            </div>
                                                            
                                                            <div class="mb-3">
                                                                <label class="fw-bold text-primary">Select Semester</label>
                                                                <select name="semester" class="form-select border-primary" required>
                                                                    <option value="" disabled selected>-- Choose Semester --</option>
                                                                    <option value="1">Semester 1 (1st Year)</option>
                                                                    <option value="2">Semester 2 (1st Year - Complete)</option>
                                                                    <option value="3">Semester 3 (2nd Year)</option>
                                                                    <option value="4">Semester 4 (2nd Year - Complete)</option>
                                                                    <option value="5">Semester 5 (3rd Year)</option>
                                                                    <option value="6">Semester 6 (3rd Year - Complete)</option>
                                                                </select>
                                                                <small class="text-muted">1 Year Course = 2 Sems | 2 Year Course = 4 Sems | 3 Year Course = 6 Sems</small>
                                                            </div>
                                                            
                                                            <div class="d-flex justify-content-between align-items-center mb-3">
                                                                <h6 class="fw-bold mb-0">Subject-wise Marks</h6>
                                                                <button type="button" class="btn btn-sm btn-outline-info" onclick="fillDummyData(<?= $student['id'] ?>)">Fill Dummy Data</button>
                                                            </div>
                                                            
                                                            <?php for ($i = 1; $i <= 6; $i++): ?>
                                                                <div class="subject-row row">
                                                                    <div class="col-md-6">
                                                                        <input type="text" name="subjects[<?= $i ?>][name]" class="form-control" placeholder="Subject <?= $i ?> Name">
                                                                    </div>
                                                                    <div class="col-md-3">
                                                                        <input type="number" name="subjects[<?= $i ?>][marks]" class="form-control" placeholder="Marks" max="100">
                                                                    </div>
                                                                    <div class="col-md-3">
                                                                        <input type="number" name="subjects[<?= $i ?>][max_marks]" class="form-control" placeholder="Max" value="100">
                                                                    </div>
                                                                </div>
                                                            <?php endfor; ?>
                                                            
                                                            <hr>
                                                            
                                                            <div class="row">
                                                                <div class="col-md-6">
                                                                    <label class="fw-bold">Total Marks Obtained</label>
                                                                    <input type="number" name="marks_obtained" class="form-control form-control-lg" required>
                                                                </div>
                                                                <div class="col-md-6">
                                                                    <label class="fw-bold">Maximum Marks</label>
                                                                    <input type="number" name="total_marks" class="form-control form-control-lg" value="500" required>
                                                                </div>
                                                            </div>
                                                        </div>
                                                        <div class="modal-footer">
                                                            <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
                                                            <button type="submit" class="btn btn-success">
                                                                <i class="fas fa-check me-1"></i>Declare Result
                                                            </button>
                                                        </div>
                                                    </form>
                                                </div>
                                            </div>
                                        </div>
                                    <?php endforeach; ?>
                                </tbody>
                            </table>
                        </div>
                    </div>
                </div>
                
                <!-- Declared Results -->
                <div class="card">
                    <div class="card-header bg-white">
                        <h5 class="mb-0"><i class="fas fa-check-circle me-2 text-success"></i>Declared Results</h5>
                    </div>
                    <div class="card-body p-0">
                        <div class="table-responsive">
                            <table class="table table-hover align-middle">
                                <thead class="table-light">
                                    <tr>
                                        <th>Student</th>
                                        <th>Roll Number</th>
                                        <th>Course & Sem</th>
                                        <th>Marks</th>
                                        <th>Percentage</th>
                                        <th>Division</th>
                                        <th>Remark</th>
                                        <th>Actions</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php foreach ($declaredResults as $result): ?>
                                        <tr class="result-card">
                                            <td>
                                                <div class="d-flex align-items-center">
                                                    <div class="bg-primary bg-opacity-10 text-primary rounded-circle d-flex align-items-center justify-content-center" style="width: 35px; height: 35px;">
                                                        <i class="fas fa-user"></i>
                                                    </div>
                                                    <div class="ms-2">
                                                        <div class="fw-bold"><?= htmlspecialchars($result['full_name']) ?></div>
                                                        <div class="small fw-bold text-primary">Roll: <?= htmlspecialchars($result['roll_number']) ?></div>
                                                        <small class="text-muted fw-bold"><?= htmlspecialchars($result['institution_name']) ?></small>
                                                    </div>
                                                </div>
                                            </td>
                                            <td><?= htmlspecialchars($result['roll_number']) ?></td>
                                            <td>
                                                <?= htmlspecialchars($result['course_name']) ?><br>
                                                <?php 
                                                    // Fetch latest semester from student_results
                                                    $sem = $db->fetchOne("SELECT semester FROM student_results WHERE student_id = ? ORDER BY semester DESC LIMIT 1", [$result['id']]);
                                                    $semNum = $sem ? $sem['semester'] : 1;
                                                ?>
                                                <span class="badge bg-info text-dark">Semester <?= $semNum ?></span>
                                            </td>
                                            <td>
                                                <span class="fw-bold"><?= $result['marks_obtained'] ?></span>/<?= $result['total_marks'] ?>
                                            </td>
                                            <td>
                                                <span class="badge bg-<?= $result['percentage'] >= 40 ? 'success' : 'danger' ?>">
                                                    <?= number_format($result['percentage'], 2) ?>%
                                                </span>
                                            </td>
                                            <td>
                                                <span class="division-badge division-<?= $result['division'] ?>">
                                                    <?= getDivisionLabel($result['division']) ?>
                                                </span>
                                            </td>
                                            <td>
                                                <span class="fw-bold <?= $result['remark'] === 'D' ? 'text-success' : ($result['remark'] === '*' ? 'text-danger' : '') ?>">
                                                    <?= $result['remark'] ?>
                                                </span>
                                            </td>
                                            <td>
                                                <div class="btn-group">
                                                    <a href="certificate-view.php?id=<?= $result['id'] ?>&csrf_token=<?= Auth()->generateCSRFToken() ?>" class="btn btn-sm btn-outline-success" title="Generate Certificate" target="_blank">
                                                        <i class="fas fa-certificate"></i>
                                                    </a>
                                                </div>
                                            </td>
                                        </tr>
                                    <?php endforeach; ?>
                                </tbody>
                            </table>
                        </div>
                    </div>
                </div>
            </main>
        </div>
    </div>
    
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
    <script>
        document.getElementById('selectAllPending').addEventListener('change', function() {
            document.querySelectorAll('.student-checkbox').forEach(cb => {
                cb.checked = this.checked;
            });
        });
        
        function bulkDeclare() {
            const selected = Array.from(document.querySelectorAll('.student-checkbox:checked')).map(cb => cb.value);
            if (selected.length === 0) {
                alert('Please select at least one student');
                return;
            }
            // Implement bulk declare logic
            alert('Bulk declare for ' + selected.length + ' students');
        }
        
        function fillDummyData(studentId) {
            const form = document.querySelector('#declareModal' + studentId + ' form');
            if(form) {
                const subjects = ['Theory of Operation', 'Practical Applications', 'Industrial Safety', 'Communication Skills', 'Workshop Practice', 'Project Work'];
                let totalMarks = 0;
                for(let i=1; i<=6; i++) {
                    form.querySelector(`input[name="subjects[${i}][name]"]`).value = subjects[i-1];
                    const marks = Math.floor(Math.random() * (95 - 45 + 1)) + 45; // random 45-95
                    form.querySelector(`input[name="subjects[${i}][marks]"]`).value = marks;
                    form.querySelector(`input[name="subjects[${i}][max_marks]"]`).value = 100;
                    totalMarks += marks;
                }
                form.querySelector(`input[name="marks_obtained"]`).value = totalMarks;
                form.querySelector(`input[name="total_marks"]`).value = 600;
                
                // select a random semester
                const semSelect = form.querySelector('select[name="semester"]');
                semSelect.selectedIndex = Math.floor(Math.random() * 6) + 1;
            }
        }
    </script>
</body>
</html>
