<?php
ob_start();
require_once('tcpdf/tcpdf.php');
require_once('db_connection.php');

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['report_class'], $_POST['student_id'])) {
    $class = $_POST['report_class'];
    $student_id = $_POST['student_id'];
    $term = $_POST['report_term'] ?? 'N/A';
    $year = $_POST['report_year'] ?? 'N/A';

    // Get the student result
    $stmt = $pdo->prepare("
        SELECT r.*, s.STUDENT_NAME, s.CLASS, s.SEX
        FROM RANKED_RESULTS r
        INNER JOIN STUDENTS s ON r.STUDENT_ID = s.STUDENT_ID
        WHERE s.STATUS = 'Sponsored'
          AND r.STUDENT_ID = ?
          AND r.TERM = ?
          AND r.YEAR = ?
    ");
    $stmt->execute([$student_id, $term, $year]);
    $student = $stmt->fetch(PDO::FETCH_ASSOC);

    if (!$student) {
        ob_end_clean();
        die('❌ No report found for the selected student.');
    }

    // Create PDF
    $pdf = new TCPDF('P', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
    $pdf->SetCreator('Luzira COU Primary School');
    $pdf->SetAuthor('Luzira COU Primary School');
    $pdf->SetTitle("Report - {$student['STUDENT_NAME']}");
    $pdf->setPrintHeader(false);
    $pdf->setPrintFooter(false);
    $pdf->SetMargins(5, 4, 5);
    $pdf->SetAutoPageBreak(TRUE, 10);
    $pdf->SetFont('helvetica', '', 10);

    // Subject comment logic
    $commentsMap = [
        'MTC' => [[0, 39, 'IMPROVE'], [40, 54, 'TRIED'], [55, 69, 'FAIR'], [70, 89, 'VGOOD'], [90, 100, 'EXCELLENT']],
        'ENG' => [[0, 39, 'IMPROVE'], [40, 54, 'TRIED'], [55, 69, 'FAIR'], [70, 89, 'VGOOD'], [90, 100, 'EXCELLENT']],
        'SST' => [[0, 39, 'IMPROVE'], [40, 54, 'TRIED'], [55, 69, 'FAIR'], [70, 89, 'VGOOD'], [90, 100, 'EXCELLENT']],
        'SCI' => [[0, 39, 'IMPROVE'], [40, 54, 'TRIED'], [55, 69, 'FAIR'], [70, 89, 'VGOOD'], [90, 100, 'EXCELLENT']]
    ];

    $initials = [
        'P1' => ['MTC' => 'KA', 'ENG' => 'MA', 'SST' => 'JJ', 'SCI' => 'LL'],
        'P2' => ['MTC' => 'KK', 'ENG' => 'HH', 'SST' => 'QQ', 'SCI' => 'DD'],
        'P3' => ['MTC' => 'MN', 'ENG' => 'PA', 'SST' => 'RR', 'SCI' => 'EE'],
        'P4' => ['MTC' => 'ZA', 'ENG' => 'ZA', 'SST' => 'ZA', 'SCI' => 'ZA'],
        'P5' => ['MTC' => 'ZA', 'ENG' => 'ZA', 'SST' => 'ZA', 'SCI' => 'ZA'],
        'P6' => ['MTC' => 'ZA', 'ENG' => 'ZA', 'SST' => 'ZA', 'SCI' => 'ZA'],
        'P7' => ['MTC' => 'ZA', 'ENG' => 'ZA', 'SST' => 'ZA', 'SCI' => 'ZA']
    ];

    function getComment($subject, $mark, $commentsMap) {
        foreach ($commentsMap[$subject] as $range) {
            if ($mark >= $range[0] && $mark <= $range[1]) return $range[2];
        }
        return '';
    }

    // Generate report for one student
    $pdf->AddPage();
    $pdf->Rect(5, 5, $pdf->getPageWidth() - 10, $pdf->getPageHeight() - 10);
    $pdf->Image('logo.png', 7, 5, 20);
    $pdf->SetFont('helvetica', 'B', 16);
    $pdf->Cell(0, 10, 'LUZIRA CHURCH OF UGANDA PRIMARY SCHOOL', 0, 1, 'C');
    $pdf->SetFont('helvetica', 'B', 12);
    $pdf->Cell(0, 5, "P.O.BOX 20061, KAMPALA - Uganda", 0, 1, 'C');
    $pdf->Cell(0, 5, "STUDENT'S TERMLY REPORT - $term $year", 0, 1, 'C');

    // Student Info
    $pdf->writeHTML("<h4>Pupil Details</h4>", true, false, false, false, '');
    $pdf->writeHTML("<b>ID:</b> {$student['STUDENT_ID']}<br><b>Name:</b> {$student['STUDENT_NAME']}<br><b>Class:</b> {$student['CLASS']}<br><b>Sex:</b> {$student['SEX']}<br><b>Position:</b> {$student['POSITION']}", true, false, false, false, '');

    // Midterm
    $stmtMid = $pdo->prepare("SELECT * FROM midterm_results WHERE STUDENT_ID = ? AND CLASS = ? AND TERM = ? AND YEAR = ?");
    $stmtMid->execute([$student['STUDENT_ID'], $student['CLASS'], $term, $year]);
    $midterm = $stmtMid->fetch(PDO::FETCH_ASSOC);

    if ($midterm) {
        $pdf->writeHTML('<h3 style="color:#007BFF;">MIDTERM RESULTS</h3>', true, false, false, false, '');
        $table = '<table border="1" cellpadding="4"><tr><th>SUBJECT</th><th>MARK</th><th>AGG</th><th>COMMENT</th><th>INITIAL</th></tr>';
        foreach (['MTC', 'ENG', 'SST', 'SCI'] as $subject) {
            $mark = $midterm[$subject];
            $agg = $midterm[$subject.'_AGG'] ?? '';
            $comment = getComment($subject, $mark, $commentsMap);
            $init = $initials[$class][$subject] ?? '';
            $table .= "<tr><td>$subject</td><td>$mark</td><td>$agg</td><td>$comment</td><td>$init</td></tr>";
        }
        $table .= "<tr><td><b>TOTAL</b></td><td>{$midterm['TOTAL_MARKS']}</td><td>{$midterm['TOTAL_AGG']}</td><td colspan='2'>{$midterm['DIVISION']}</td></tr></table>";
        $pdf->writeHTML($table, true, false, false, false, '');
    }

    // End of Term
    $pdf->writeHTML('<h3 style="color:#28A745;">END OF TERM RESULTS</h3>', true, false, false, false, '');
    $table = '<table border="1" cellpadding="4"><tr><th>SUBJECT</th><th>MARK</th><th>AGG</th><th>COMMENT</th><th>INITIAL</th></tr>';
    foreach (['MTC', 'ENG', 'SST', 'SCI'] as $subject) {
        $mark = $student[$subject];
        $agg = $student[$subject.'_AGG'] ?? '';
        $comment = getComment($subject, $mark, $commentsMap);
        $init = $initials[$class][$subject] ?? '';
        $table .= "<tr><td>$subject</td><td>$mark</td><td>$agg</td><td>$comment</td><td>$init</td></tr>";
    }
    $table .= "<tr><td><b>TOTAL</b></td><td>{$student['TOTAL_MARKS']}</td><td>{$student['TOTAL_AGG']}</td><td colspan='2'>{$student['DIVISION']}</td></tr></table>";
    $pdf->writeHTML($table, true, false, false, false, '');

    // Remarks
    $pdf->writeHTML("<strong>Class Teacher's Comment:</strong> " . ($student['REMARKS'] ?? 'N/A'), true, false, false, false, '');

    // Manually typed Requirements Table
        $pdf->Ln(3);
        $pdf->writeHTML('<strong>Requirements</strong>', true, false, false, false, '');
        $pdf->writeHTML('
            <table border="1" cellpadding="3">
                <tr><th>Item</th><th>Status</th></tr>
                <tr><td>Exercise Books</td><td>Provided</td></tr>
                <tr><td>Mathematical Set</td><td>Provided</td></tr>
                <tr><td>Pens</td><td>Provided</td></tr>
                <tr><td>Pencils</td><td>Provided</td></tr>
            </table>', true, false, false, false, '');
        $pdf->Ln(4);


        $pdf->Ln(3);

    $division = $student['DIVISION'] ?? '';

if ($division === '1') {
    $ht_comment = 'Excellent performance. Keep it up.';
} elseif ($division === '2') {
    $ht_comment = 'Good work. Aim higher.';
} elseif ($division === '3') {
    $ht_comment = 'Fair performance. Needs improvement.';
} elseif ($division === '4' || $division === 'U') {
    $ht_comment = 'Work harder next time.';
} else {
    $ht_comment = 'Avoid missing exams.';
}

$pdf->writeHTML("<br><strong>Headteacher's Comment:</strong> $ht_comment", true, false, false, false, '');


    // Signature
    $yBefore = $pdf->GetY();
    $pdf->Image('signature.png', $pdf->GetX(), $yBefore, 20);
    $pdf->SetY($yBefore + 20);
    $pdf->Cell(20, 3, 'Headteacher', 0, 1, 'L');

    // Footer
    $pdf->SetFont('', 'BI');
    $pdf->SetTextColor(255, 255, 255);
    $pdf->SetFillColor(0, 0, 0);
    $pdf->Cell(0, 6, 'Disclaimer: Results can be verified at https://luziracouprimaryschool.com/', 0, 1, 'R', true);

    ob_end_clean();
    $pdf->Output("Student_Report_{$student['STUDENT_NAME']}.pdf", 'I');
    exit;
}
?>
