<?php
// Database configuration
$db_host = 'localhost';
$db_user = 'ehha_Mendohza';
$db_password = '@Height22*#';
$db_name = 'ehha_schdb';

// Create connection
$conn = new mysqli($db_host, $db_user, $db_password, $db_name);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Enable error reporting
mysqli_report(MYSQLI_REPORT_ERROR);

// Retrieve registration number from URL parameter
$registration_no = isset($_GET['registration_no']) ? $_GET['registration_no'] : '';

// Initialize variables
$fullname = $father = $mother = $parents_address = $student_age = $date_of_birth_formatted = $registration_date = '';
$subject_results = [];
$cgpa = 0;

if (!empty($registration_no)) {
    // Fetch student information
    $sql_user = "SELECT fullname, father, mother, parents_address, age, registration_date 
                 FROM tbl_user 
                 WHERE registration_no = ?";
    
    $stmt_user = $conn->prepare($sql_user);
    $stmt_user->bind_param("s", $registration_no);
    $stmt_user->execute();
    $result_user = $stmt_user->get_result();
    
    if ($result_user->num_rows > 0) {
        $row_user = $result_user->fetch_assoc();
        $fullname = $row_user['fullname'];
        $father = $row_user['father'];
        $mother = $row_user['mother'];
        $parents_address = $row_user['parents_address'];
        
        // Calculate age from date of birth
        $date_of_birth = new DateTime($row_user['age']);
        $now = new DateTime();
        $student_age = $date_of_birth->diff($now)->y;
        
        // Format dates
        $date_of_birth_formatted = $date_of_birth->format('Y-m-d');
        $registration_date = $row_user['registration_date'];
        
        // Fetch student results
        $sql_results = "SELECT subject, year, class, SUM(total) AS total, COUNT(DISTINCT term) AS terms_count 
                        FROM tbl_student_results 
                        WHERE registration_no = ? 
                        GROUP BY subject, year 
                        ORDER BY year";
        
        $stmt_results = $conn->prepare($sql_results);
        $stmt_results->bind_param("s", $registration_no);
        $stmt_results->execute();
        $result_results = $stmt_results->get_result();
        
        // Process results
        if ($result_results->num_rows > 0) {
            while ($row_results = $result_results->fetch_assoc()) {
                $subject = $row_results['subject'];
                $year = $row_results['year'];
                $class = $row_results['class'];
                preg_match('/\b([a-zA-Z]+ \d+)\b/', $class, $matches);
                $base_class = isset($matches[1]) ? $matches[1] : $class;
                $total = $row_results['total'];
                $terms_count = $row_results['terms_count'];
                
                // Calculate GPA
                $gpa = calculateGPA($total / $terms_count);
                $grade = calculateGrade($gpa);
                
                // Store subject-wise results
                $subject_results[$subject][$year] = [
                    'total' => $total, 
                    'gpa' => $gpa, 
                    'grade' => $grade, 
                    'terms_count' => $terms_count, 
                    'class' => $base_class
                ];
            }
        }
    } else {
        $error_message = "No student found with the provided registration number.";
    }
} else {
    $error_message = "No registration number provided.";
}

// Close database connection
$conn->close();

// Function to calculate GPA
function calculateGPA($average_score) {
    if ($average_score >= 70) return 5.0;
    elseif ($average_score >= 60) return 4.0;
    elseif ($average_score >= 50) return 3.0;
    elseif ($average_score >= 45) return 2.0;
    elseif ($average_score >= 40) return 0.8;
    else return 0;
}

// Function to calculate grade based on GPA
function calculateGrade($gpa) {
    if ($gpa == 5.0) return 'A';
    elseif ($gpa == 4.0) return 'B';
    elseif ($gpa == 3.0) return 'C';
    elseif ($gpa == 2.0) return 'D';
    elseif ($gpa == 0.8) return 'E';
    else return 'F';
}

// Function to calculate grade based on GPA for GPA row
function calculateGradeForGPA($gpa) {
    if ($gpa <= 0.7) return 'F';
    elseif ($gpa > 0.7 && $gpa <= 1.5) return 'E';
    elseif ($gpa > 1.5 && $gpa <= 2.3) return 'D';
    elseif ($gpa > 2.3 && $gpa <= 3.1) return 'C';
    elseif ($gpa > 3.1 && $gpa <= 3.9) return 'B';
    else return 'A';
}

// Function to calculate grade based on CGPA
function calculateGradeForCGPA($cgpa) {
    if ($cgpa >= 3.6) return 'A';
    elseif ($cgpa >= 3.2 && $cgpa < 3.6) return 'B';
    elseif ($cgpa >= 2.4 && $cgpa < 3.2) return 'C';
    elseif ($cgpa >= 1.6 && $cgpa < 2.4) return 'D';
    elseif ($cgpa >= 0.8 && $cgpa < 1.6) return 'E';
    else return 'F';
}

// Function to retrieve class for a given year
function getClassForYear($year, $subject_results) {
    foreach ($subject_results as $subject => $years_data) {
        foreach ($years_data as $year_data => $result) {
            if ($year_data === $year) {
                return $result['class'];
            }
        }
    }
    return '';
}

// Calculate CGPA
if (!empty($subject_results)) {
    $total_gpa = 0;
    $total_subjects = 0;
    
    foreach ($subject_results as $subject => $years) {
        foreach ($years as $year => $result) {
            $total_gpa += $result['gpa'];
            $total_subjects++;
        }
    }
    
    $cgpa = $total_subjects > 0 ? $total_gpa / $total_subjects : 0;
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Transcript for <?php echo $fullname ? $fullname : 'Student'; ?></title>
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap" rel="stylesheet">
    <style>
        :root {
            --primary: #3498db;
            --secondary: #2c3e50;
            --accent: #e74c3c;
            --light: #ecf0f1;
            --dark: #2c3e50;
            --success: #2ecc71;
            --warning: #f39c12;
            --danger: #e74c3c;
        }
        
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        
        body {
            font-family: 'Roboto', sans-serif;
            line-height: 1.6;
            color: #333;
            background-color: #f5f7fa;
            padding: 20px;
        }
        
        .container {
            max-width: 1200px;
            margin: 0 auto;
            background: white;
            border-radius: 10px;
            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
            padding: 30px;
            position: relative;
        }
        
        .header {
            display: flex;
            justify-content: space-between;
            align-items: flex-start;
            margin-bottom: 30px;
            padding-bottom: 20px;
            border-bottom: 2px solid var(--light);
        }
        
        .student-info {
            flex: 1;
        }
        
        .transcript-logo {
            text-align: right;
        }
        
        .transcript-logo img {
            max-width: 150px;
            height: auto;
        }
        
        h1 {
            color: var(--secondary);
            margin-bottom: 10px;
            font-size: 28px;
        }
        
        h2 {
            color: var(--primary);
            margin-bottom: 15px;
            font-size: 22px;
        }
        
        .info-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
            gap: 15px;
            margin-top: 20px;
        }
        
        .info-item {
            margin-bottom: 8px;
        }
        
        .info-label {
            font-weight: 500;
            color: var(--dark);
        }
        
        .info-value {
            font-weight: 700;
            color: var(--secondary);
        }
        
        .transcript-table {
            margin-top: 30px;
            overflow-x: auto;
        }
        
        table {
            width: 100%;
            border-collapse: collapse;
            margin-bottom: 20px;
        }
        
        th, td {
            padding: 12px 15px;
            text-align: center;
            border: 1px solid #ddd;
        }
        
        th {
            background-color: var(--primary);
            color: white;
            font-weight: 500;
        }
        
        .subject-heading {
            text-align: left;
            background-color: var(--secondary);
        }
        
        .year-heading {
            background-color: var(--primary);
            color: white;
        }
        
        .class-heading {
            background-color: var(--light);
            color: var(--dark);
        }
        
        tr:nth-child(even) {
            background-color: #f8f9fa;
        }
        
        .gpa-row {
            background-color: var(--dark) !important;
            color: white;
            font-weight: bold;
        }
        
        .cgpa-row {
            background-color: var(--secondary) !important;
            color: white;
            font-weight: bold;
        }
        
        .print-button {
            background: linear-gradient(to right, var(--primary), var(--secondary));
            color: white;
            border: none;
            padding: 12px 25px;
            border-radius: 5px;
            cursor: pointer;
            font-size: 16px;
            font-weight: 500;
            transition: all 0.3s ease;
            margin-top: 20px;
            display: inline-block;
        }
        
        .print-button:hover {
            transform: translateY(-2px);
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
        }
        
        .error-message {
            background-color: #ffeaea;
            color: var(--danger);
            padding: 15px;
            border-radius: 5px;
            margin: 20px 0;
            text-align: center;
            font-weight: 500;
        }
        
        .summary-card {
            background: linear-gradient(to right, var(--light), #fff);
            border-radius: 8px;
            padding: 20px;
            margin-top: 20px;
            box-shadow: 0 3px 10px rgba(0, 0, 0, 0.08);
        }
        
        .summary-title {
            font-size: 18px;
            font-weight: 700;
            color: var(--secondary);
            margin-bottom: 15px;
        }
        
        .summary-content {
            display: flex;
            justify-content: space-between;
            flex-wrap: wrap;
        }
        
        .summary-item {
            flex: 1;
            min-width: 150px;
            text-align: center;
            padding: 10px;
        }
        
        .summary-value {
            font-size: 24px;
            font-weight: 700;
            color: var(--primary);
        }
        
        .summary-label {
            font-size: 14px;
            color: var(--dark);
            margin-top: 5px;
        }
        
        @media print {
            body {
                background: white;
                padding: 0;
            }
            
            .container {
                box-shadow: none;
                padding: 0;
            }
            
            .print-button {
                display: none;
            }
        }
        
        @media (max-width: 768px) {
            .header {
                flex-direction: column;
            }
            
            .transcript-logo {
                text-align: left;
                margin-top: 20px;
            }
            
            .info-grid {
                grid-template-columns: 1fr;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <?php if (isset($error_message)): ?>
            <div class="error-message">
                <?php echo $error_message; ?>
            </div>
        <?php else: ?>
            <div class="header">
                <div class="student-info">
                    <h1>Academic Transcript</h1>
                    <h2><?php echo htmlspecialchars($fullname); ?></h2>
                    
                    <div class="info-grid">
                        <div class="info-item">
                            <span class="info-label">Admission Number:</span>
                            <span class="info-value"><?php echo htmlspecialchars($registration_no); ?></span>
                        </div>
                        <div class="info-item">
                            <span class="info-label">Admission Date:</span>
                            <span class="info-value"><?php echo htmlspecialchars($registration_date); ?></span>
                        </div>
                        <div class="info-item">
                            <span class="info-label">Father's Name:</span>
                            <span class="info-value"><?php echo htmlspecialchars($father); ?></span>
                        </div>
                        <div class="info-item">
                            <span class="info-label">Mother's Name:</span>
                            <span class="info-value"><?php echo htmlspecialchars($mother); ?></span>
                        </div>
                        <div class="info-item">
                            <span class="info-label">Parents' Address:</span>
                            <span class="info-value"><?php echo htmlspecialchars($parents_address); ?></span>
                        </div>
                        <div class="info-item">
                            <span class="info-label">Age:</span>
                            <span class="info-value"><?php echo htmlspecialchars($student_age); ?> years</span>
                        </div>
                        <div class="info-item">
                            <span class="info-label">Date of Birth:</span>
                            <span class="info-value"><?php echo htmlspecialchars($date_of_birth_formatted); ?></span>
                        </div>
                    </div>
                </div>
                
                <div class="transcript-logo">
                    <img src="ehha_transcript_logo.png" alt="School Logo">
                </div>
            </div>
            
            <?php if (!empty($subject_results)): ?>
                <div class="summary-card">
                    <div class="summary-title">Academic Summary</div>
                    <div class="summary-content">
                        <div class="summary-item">
                            <div class="summary-value"><?php echo count($subject_results); ?></div>
                            <div class="summary-label">Subjects</div>
                        </div>
                        <div class="summary-item">
                            <div class="summary-value"><?php echo count($years); ?></div>
                            <div class="summary-label">Academic Years</div>
                        </div>
                        <div class="summary-item">
                            <div class="summary-value"><?php echo number_format($cgpa, 2); ?></div>
                            <div class="summary-label">CGPA</div>
                        </div>
                        <div class="summary-item">
                            <div class="summary-value"><?php echo calculateGradeForCGPA($cgpa); ?></div>
                            <div class="summary-label">Overall Grade</div>
                        </div>
                    </div>
                </div>
                
                <div class="transcript-table">
                    <table>
                        <tr>
                            <th class="subject-heading">SUBJECT</th>
                            <?php
                            // Display year columns
                            $years = array();
                            foreach ($subject_results as $subject => $years_data) {
                                foreach ($years_data as $year => $result) {
                                    $years[$year] = true;
                                }
                            }
                            ksort($years);
                            foreach ($years as $year => $_) {
                                echo "<th colspan='3' class='year-heading'>$year</th>";
                            }
                            ?>
                        </tr>
                        
                        <tr class="class-heading">
                            <td></td>
                            <?php
                            foreach ($years as $year => $_) {
                                $class = getClassForYear($year, $subject_results);
                                echo "<td colspan='3'><b>$class</b></td>";
                            }
                            ?>
                        </tr>
                        
                        <tr>
                            <th class="subject-heading"></th>
                            <?php
                            foreach ($years as $year => $_) {
                                echo "<th>% Score</th>";
                                echo "<th>Grade Point (G.P.)</th>";
                                echo "<th>Grade</th>";
                            }
                            ?>
                        </tr>
                        
                        <?php
                        // Display subject rows
                        foreach ($subject_results as $subject => $years_data) {
                            echo "<tr>";
                            echo "<td><b>$subject</b></td>";
                            foreach ($years as $year => $_) {
                                if (isset($years_data[$year])) {
                                    $result = $years_data[$year];
                                    echo "<td>" . number_format($result['total'] / $result['terms_count'], 2) . "</td>";
                                    echo "<td>" . number_format($result['gpa'], 2) . "</td>";
                                    echo "<td>{$result['grade']}</td>";
                                } else {
                                    echo "<td>-</td>";
                                    echo "<td>-</td>";
                                    echo "<td>-</td>";
                                }
                            }
                            echo "</tr>";
                        }
                        
                        // Display GPA row
                        echo "<tr class='gpa-row'>";
                        echo "<td><b>G.P.A.</b></td>";
                        foreach ($years as $year => $_) {
                            $total_total = 0;
                            $total_gpa = 0;
                            $total_subjects = 0;
                            foreach ($subject_results as $subject => $years_data) {
                                foreach ($years_data as $year_data => $result) {
                                    if ($year_data === $year) {
                                        $total_total += $result['total'] / $result['terms_count'];
                                        $total_gpa += $result['gpa'];
                                        $total_subjects++;
                                    }
                                }
                            }
                            $average_total = $total_subjects > 0 ? $total_total / $total_subjects : 0;
                            $average_gpa = $total_subjects > 0 ? $total_gpa / $total_subjects : 0;
                            echo "<td>" . number_format($average_total, 2) . "</td>";
                            echo "<td>" . number_format($average_gpa, 2) . "</td>";
                            echo "<td>" . calculateGradeForGPA($average_gpa) . "</td>";
                        }
                        echo "</tr>";
                        ?>
                        
                        <tr class="cgpa-row"> 
                            <td><b>C.G.P.A.</b></td>
                            <td colspan="<?php echo (count($years) * 3) - 2; ?>">
                                <?php echo number_format($cgpa, 2); ?>
                            </td>
                            <td>
                                <?php echo calculateGradeForCGPA($cgpa); ?>
                            </td>
                        </tr>
                    </table>
                </div>
                
                <div style="text-align: center; margin-top: 30px;">
                    <button class="print-button" onclick="window.print()">
                        Print Transcript
                    </button>
                </div>
            <?php else: ?>
                <div class="error-message">
                    No academic records found for this student.
                </div>
            <?php endif; ?>
        <?php endif; ?>
    </div>
</body>
</html>