<?php
// academic_stats.php - Functions for GPA/CGPA calculations (CORRECTED LOGIC - V2)

/**
 * Check if a grade is a failing grade (F, F*, F**)
 */
function isFailingGrade($grade) {
    $failingGrades = ['F', 'F*', 'F**'];
    return ($grade !== null && in_array(trim($grade), $failingGrades));
}

/**
 * Check if a grade should be excluded from GPA calculation (I, W, N only)
 */
function isExcludedFromGPA($grade) {
    $excludedGrades = ['I', 'W', 'N'];
    return ($grade !== null && in_array(trim($grade), $excludedGrades));
}

/**
 * Get student's program type (Bachelor or Diploma)
 */
function getStudentProgramType($connection, $student_id) {
    if (!$connection || !($connection instanceof mysqli)) {
        return 'bachelor';
    }
    
    $query = "
        SELECT p.id as program_id, p.name as program_name
        FROM students s
        LEFT JOIN programs p ON s.program_id = p.id AND p.deleted_at IS NULL
        WHERE s.student_id = ? AND s.deleted_at IS NULL
        LIMIT 1
    ";
    
    $stmt = $connection->prepare($query);
    if ($stmt) {
        $stmt->bind_param('s', $student_id);
        $stmt->execute();
        $result = $stmt->get_result();
        if ($row = $result->fetch_assoc()) {
            $program_id = $row['program_id'] ?? '';
            $program_name = strtolower($row['program_name'] ?? '');
            
            if ($program_id == 1 || strpos($program_name, 'بكالوريوس') !== false || strpos($program_name, 'bachelor') !== false) {
                return 'bachelor';
            }
            if ($program_id == 2 || strpos($program_name, 'دبلوم') !== false || strpos($program_name, 'diploma') !== false) {
                return 'diploma';
            }
        }
        $stmt->close();
    }
    
    return 'bachelor';
}

/**
 * Check if student failed the same subject twice (repeated F grade)
 */
function hasRepeatedFailure($connection, $student_id) {
    if (!$connection || !($connection instanceof mysqli)) {
        return false;
    }
    
    $query = "
        SELECT 
            subjectcode,
            COUNT(*) as attempt_count
        FROM studentsubjects
        WHERE student_id = ? 
        AND grade IN ('F', 'F*', 'F**')
        AND deleted_at IS NULL
        GROUP BY subjectcode
        HAVING COUNT(*) >= 2
    ";
    
    $stmt = $connection->prepare($query);
    if ($stmt) {
        $stmt->bind_param('s', $student_id);
        $stmt->execute();
        $result = $stmt->get_result();
        $count = $result->num_rows;
        $stmt->close();
        
        if ($count > 0) {
            return true;
        }
    }
    
    return false;
}

/**
 * Check if student failed three-quarters of subjects in any semester
 */
function hasThreeQuartersFailure($connection, $student_id) {
    if (!$connection || !($connection instanceof mysqli)) {
        return false;
    }
    
    $query = "
        SELECT 
            semester_id,
            COUNT(*) as total_subjects,
            SUM(CASE WHEN grade IN ('F', 'F*', 'F**') THEN 1 ELSE 0 END) as failed_subjects
        FROM studentsubjects
        WHERE student_id = ? 
        AND deleted_at IS NULL
        AND grade IS NOT NULL
        AND grade NOT IN ('I', 'W', 'N')
        GROUP BY semester_id
        HAVING failed_subjects >= (total_subjects * 0.75)
    ";
    
    $stmt = $connection->prepare($query);
    if ($stmt) {
        $stmt->bind_param('s', $student_id);
        $stmt->execute();
        $result = $stmt->get_result();
        
        if ($row = $result->fetch_assoc()) {
            $stmt->close();
            return [
                'semester_id' => $row['semester_id'],
                'total_subjects' => $row['total_subjects'],
                'failed_subjects' => $row['failed_subjects'],
                'percentage' => round(($row['failed_subjects'] / $row['total_subjects']) * 100, 1)
            ];
        }
        $stmt->close();
    }
    
    return false;
}

/**
 * Get all semester GPA and CGPA history for a student
 */
function getSemesterHistory($connection, $student_id) {
    $history = [];
    
    if (!$connection || !($connection instanceof mysqli) || empty($student_id)) {
        return $history;
    }
    
    $query = "
        SELECT DISTINCT
            ss.semester_id,
            s.name as semester_name,
            s.order_num
        FROM studentsubjects ss
        INNER JOIN semesters s ON ss.semester_id = s.id AND s.deleted_at IS NULL
        WHERE ss.student_id = ? AND ss.deleted_at IS NULL
        ORDER BY s.order_num ASC
    ";
    
    $stmt = $connection->prepare($query);
    if ($stmt) {
        $stmt->bind_param('s', $student_id);
        $stmt->execute();
        $result = $stmt->get_result();
        
        while ($row = $result->fetch_assoc()) {
            $semester_id = (int)$row['semester_id'];
            $stats = calculateStudentStats($connection, $student_id, $semester_id);
            
            $history[] = [
                'semester_id' => $semester_id,
                'semester_name' => $row['semester_name'],
                'semester_order' => (int)$row['order_num'],
                'gpa' => $stats['gpa'],
                'cgpa' => $stats['cgpa']
            ];
        }
        $stmt->close();
    }
    
    return $history;
}

/**
 * Calculate GPA and related statistics for a specific student and semester
 */
function calculateStudentStats($connection, $student_id, $semester_id = null) {
    $stats = [
        'total_hours' => 0,
        'total_points' => 0,
        'gpa' => 0,
        'cgpa' => 0,
        'semester_hours' => 0,
        'semester_points' => 0,
        'subjects_count' => 0,
        'passed_count' => 0,
        'failed_count' => 0,
        'excluded_count' => 0,
        'pending_count' => 0,
        'semesters_count' => 0,
    ];

    if (empty($student_id) || $semester_id === null || $semester_id <= 0) {
        return $stats;
    }
    
    if (!$connection || !($connection instanceof mysqli)) {
        return $stats;
    }

    $query = "
        SELECT 
            ss.subjectcode,
            ss.semester_id,
            ss.weight,
            ss.degree,
            ss.grade,
            ss.grade_id,
            ss.credit_hours,
            ss.subjecttype_id
        FROM studentsubjects ss
        WHERE ss.student_id = ? 
        AND ss.deleted_at IS NULL
        ORDER BY ss.semester_id ASC, ss.subjectcode ASC
    ";
    
    $stmt = $connection->prepare($query);
    if (!$stmt) {
        error_log("Query preparation failed: " . $connection->error);
        return $stats;
    }
    
    $stmt->bind_param('s', $student_id);
    $stmt->execute();
    $result = $stmt->get_result();
    
    $all_subjects = [];
    while ($row = $result->fetch_assoc()) {
        $all_subjects[] = [
            'credit_hours' => (float)($row['credit_hours'] ?? 0),
            'weight' => $row['weight'] !== null ? (float)$row['weight'] : null,
            'semester_id' => (int)$row['semester_id'],
            'grade_id' => $row['grade_id'] ? (int)$row['grade_id'] : null,
            'grade' => $row['grade'],
            'subjecttype_id' => (int)($row['subjecttype_id'] ?? 0)
        ];
    }
    $stmt->close();
    
    if (empty($all_subjects)) {
        return $stats;
    }
    
    $target_semester = (int)$semester_id;
    $processed_semesters = [];
    
    foreach ($all_subjects as $subject) {
        $credit_hours = $subject['credit_hours'];
        $weight = $subject['weight'];
        $subject_semester = $subject['semester_id'];
        $grade = $subject['grade'];
        $has_grade = ($weight !== null && $subject['grade_id'] !== null);
        
        $is_current_semester = ($subject_semester == $target_semester);
        $is_previous_semester = ($subject_semester < $target_semester);
        $is_future_semester = ($subject_semester > $target_semester);
        
        if ($is_future_semester) {
            continue;
        }
        
        $stats['subjects_count']++;
        
        if ($has_grade) {
            $excluded = isExcludedFromGPA($grade);
            $is_failing = isFailingGrade($grade);
            
            if ($excluded) {
                $stats['excluded_count']++;
            } else {
                if ($is_failing) {
                    $stats['failed_count']++;
                } elseif ($weight > 0) {
                    $stats['passed_count']++;
                }
                
                $points = $credit_hours * $weight;
                
                if ($is_current_semester || $is_previous_semester) {
                    $stats['total_hours'] += $credit_hours;
                    $stats['total_points'] += $points;
                }
                
                if ($is_current_semester) {
                    $stats['semester_hours'] += $credit_hours;
                    $stats['semester_points'] += $points;
                }
                
                if (!isset($processed_semesters[$subject_semester])) {
                    $processed_semesters[$subject_semester] = true;
                    $stats['semesters_count']++;
                }
            }
        } else {
            $stats['pending_count']++;
            
            if ($is_current_semester || $is_previous_semester) {
                $stats['total_hours'] += $credit_hours;
            }
            
            if ($is_current_semester) {
                $stats['semester_hours'] += $credit_hours;
            }
        }
    }
    
    if ($stats['semester_hours'] > 0) {
        $stats['gpa'] = round($stats['semester_points'] / $stats['semester_hours'], 2);
    }
    
    if ($stats['total_hours'] > 0) {
        $stats['cgpa'] = round($stats['total_points'] / $stats['total_hours'], 2);
    }
    
    return $stats;
}

/**
 * Get student's academic status based on CGPA only
 * 
 * المنطق الصحيح حسب اللائحة:
 * - ن1: أول مرة يكون فيها المعدل التراكمي (CGPA) أقل من 2.00
 * - ن2: إذا كان الطالب في ن1 ولم يصل المعدل التراكمي إلى 2.00 في الفصل التالي
 * - رفع الإنذار: إذا وصل المعدل التراكمي إلى 2.00 فأكثر
 * - الفصل: إذا كان الطالب في ن2 ولم يصل المعدل التراكمي إلى 2.00 في الفصل التالي
 */
function getAcademicStatusDetails($connection, $student_id, $current_semester_id, $current_cgpa, $semester_history = []) {
    
    // Default status for CGPA >= 2.00
    if ($current_cgpa >= 2.00) {
        // Check if there was a previous warning that is now resolved
        $had_warning = false;
        foreach ($semester_history as $sem) {
            if ($sem['cgpa'] < 2.00 && $sem['cgpa'] > 0) {
                $had_warning = true;
                break;
            }
        }
        
        if ($had_warning) {
            return [
                'status' => 'جيد (تم رفع الإنذار)',
                'status_code' => 'good_resolved',
                'message' => 'تم رفع الإنذار الأكاديمي - المعدل التراكمي 2.00 فأكثر',
                'color' => '#10b981',
                'icon' => 'fas fa-check-circle',
                'warning_level' => 0,
                'low_cgpa_count' => 0
            ];
        }
        
        return [
            'status' => 'جيد',
            'status_code' => 'good',
            'message' => 'الطالب في حالة جيدة - المعدل التراكمي 2.00 فأكثر',
            'color' => '#10b981',
            'icon' => 'fas fa-check-circle',
            'warning_level' => 0,
            'low_cgpa_count' => 0
        ];
    }
    
    if (!$connection || !($connection instanceof mysqli)) {
        return [
            'status' => 'تحذير',
            'status_code' => 'warning',
            'message' => 'المعدل التراكمي أقل من 2.00',
            'color' => '#f59e0b',
            'icon' => 'fas fa-exclamation-triangle',
            'warning_level' => 1
        ];
    }
    
    // Sort history by semester order
    usort($semester_history, function($a, $b) {
        return $a['semester_order'] - $b['semester_order'];
    });
    
    // ============================================================
    // المفتاح: حساب عدد مرات انخفاض CGPA بشكل صحيح
    // ============================================================
    
    // إضافة الفصل الحالي إلى التاريخ للحساب
    $all_semesters = $semester_history;
    
    // إضافة الفصل الحالي إذا لم يكن موجوداً بالفعل
    $current_exists = false;
    foreach ($all_semesters as $sem) {
        if ($sem['semester_id'] == $current_semester_id) {
            $current_exists = true;
            break;
        }
    }
    
    if (!$current_exists && $current_cgpa > 0) {
        // Get current semester name
        $semName = '';
        $nameQuery = $connection->prepare("SELECT name, order_num FROM semesters WHERE id = ? AND deleted_at IS NULL");
        if ($nameQuery) {
            $nameQuery->bind_param('i', $current_semester_id);
            $nameQuery->execute();
            $nameResult = $nameQuery->get_result();
            if ($nameRow = $nameResult->fetch_assoc()) {
                $semName = $nameRow['name'];
                $orderNum = (int)$nameRow['order_num'];
            }
            $nameQuery->close();
        }
        
        $all_semesters[] = [
            'semester_id' => $current_semester_id,
            'semester_name' => $semName,
            'semester_order' => $orderNum ?? $current_semester_id,
            'cgpa' => $current_cgpa,
            'gpa' => 0 // We don't have current GPA here
        ];
        
        // Re-sort after adding current semester
        usort($all_semesters, function($a, $b) {
            return $a['semester_order'] - $b['semester_order'];
        });
    }
    
    // حساب عدد المرات المتتالية التي يكون فيها CGPA أقل من 2.00
    // دون وجود تحسن إلى 2.00 أو أكثر بينها
    $low_cgpa_sequence = 0;
    $max_low_sequence = 0;
    $reset_sequence = false;
    
    foreach ($all_semesters as $sem) {
        if ($sem['cgpa'] < 2.00 && $sem['cgpa'] > 0) {
            if (!$reset_sequence) {
                $low_cgpa_sequence++;
            } else {
                $low_cgpa_sequence = 1;
                $reset_sequence = false;
            }
        } elseif ($sem['cgpa'] >= 2.00) {
            // Reset sequence when CGPA reaches 2.00 or above
            $reset_sequence = true;
            $low_cgpa_sequence = 0;
        }
    }
    
    // استخدام أقصى قيمة تم تسجيلها
    $low_cgpa_count = max($low_cgpa_sequence, 1); // على الأقل 1 إذا كان CGPA الحالي < 2.00
    
    // تصحيح: إذا كان CGPA الحالي < 2.00 ولا يوجد تاريخ سابق، فهذه أول مرة
    if (empty($semester_history) && $current_cgpa < 2.00 && $current_cgpa > 0) {
        $low_cgpa_count = 1;
    }
    
    // تصحيح: إذا كان هناك فصل سابق واحد فقط وكان CGPA < 2.00، فهذه المرة الثانية
    if (count($semester_history) == 1 && $semester_history[0]['cgpa'] < 2.00 && $current_cgpa < 2.00 && $current_cgpa > 0) {
        $low_cgpa_count = 2;
    }
    
    // تصحيح: إذا كان هناك فصلان سابقان وكلاهما CGPA < 2.00، فهذه المرة الثالثة
    if (count($semester_history) >= 2) {
        $all_low = true;
        foreach ($semester_history as $sem) {
            if ($sem['cgpa'] >= 2.00) {
                $all_low = false;
                break;
            }
        }
        if ($all_low && $current_cgpa < 2.00 && $current_cgpa > 0) {
            $low_cgpa_count = count($semester_history) + 1;
        }
    }
    
    $program_type = getStudentProgramType($connection, $student_id);
    
    // Debug logging (يمكنك إزالة هذا في الإنتاج)
    error_log("=== Academic Status Debug ===");
    error_log("Student ID: " . $student_id);
    error_log("Current CGPA: " . $current_cgpa);
    error_log("Low CGPA Count: " . $low_cgpa_count);
    error_log("Semester History Count: " . count($semester_history));
    foreach ($semester_history as $index => $sem) {
        error_log("Semester " . ($index+1) . ": Order=" . $sem['semester_order'] . ", CGPA=" . $sem['cgpa']);
    }
    error_log("=============================");
    
    if ($program_type == 'bachelor') {
        if ($low_cgpa_count == 1) {
            return [
                'status' => 'إنذار (ن1)',
                'status_code' => 'warning_1',
                'message' => 'المرة الأولى التي يقل فيها المعدل التراكمي (CGPA) عن 2.00',
                'color' => '#f59e0b',
                'icon' => 'fas fa-exclamation-triangle',
                'warning_level' => 1,
                'low_cgpa_count' => $low_cgpa_count,
                'current_cgpa' => $current_cgpa
            ];
        } elseif ($low_cgpa_count == 2) {
            return [
                'status' => 'إنذار (ن2)',
                'status_code' => 'warning_2',
                'message' => 'المرة الثانية التي يقل فيها المعدل التراكمي (CGPA) عن 2.00 - لم يستطع الطالب رفع المعدل بعد الإنذار الأول',
                'color' => '#ef4444',
                'icon' => 'fas fa-exclamation-circle',
                'warning_level' => 2,
                'low_cgpa_count' => $low_cgpa_count,
                'current_cgpa' => $current_cgpa
            ];
        } else {
            return [
                'status' => 'فصل',
                'status_code' => 'dismissed',
                'message' => 'المرة الثالثة التي يقل فيها المعدل التراكمي (CGPA) عن 2.00 - فشل الطالب في رفع المعدل بعد الإنذار الثاني - تم الفصل',
                'color' => '#7f1d1d',
                'icon' => 'fas fa-user-graduate',
                'warning_level' => 3,
                'low_cgpa_count' => $low_cgpa_count,
                'current_cgpa' => $current_cgpa
            ];
        }
    } else {
        // Diploma program
        if ($low_cgpa_count == 1) {
            return [
                'status' => 'إنذار (ن)',
                'status_code' => 'warning',
                'message' => 'المرة الأولى التي يقل فيها المعدل التراكمي (CGPA) عن 2.00',
                'color' => '#f59e0b',
                'icon' => 'fas fa-exclamation-triangle',
                'warning_level' => 1,
                'low_cgpa_count' => $low_cgpa_count,
                'current_cgpa' => $current_cgpa
            ];
        } else {
            return [
                'status' => 'فصل',
                'status_code' => 'dismissed',
                'message' => 'المرة الثانية التي يقل فيها المعدل التراكمي (CGPA) عن 2.00 - فشل الطالب في رفع المعدل بعد الإنذار - تم الفصل',
                'color' => '#7f1d1d',
                'icon' => 'fas fa-user-graduate',
                'warning_level' => 2,
                'low_cgpa_count' => $low_cgpa_count,
                'current_cgpa' => $current_cgpa
            ];
        }
    }
}
/**
 * Format academic status based on CGPA
 */
function getAcademicStatusLabel($cgpa) {
    if ($cgpa >= 3.5) {
        return ['label' => 'ممتاز', 'icon' => 'fas fa-star', 'color' => '#10b981'];
    } elseif ($cgpa >= 3.0) {
        return ['label' => 'جيد جداً', 'icon' => 'fas fa-smile', 'color' => '#3b82f6'];
    } elseif ($cgpa >= 2.0) {
        return ['label' => 'جيد', 'icon' => 'fas fa-thumbs-up', 'color' => '#f59e0b'];
    } elseif ($cgpa > 0) {
        return ['label' => 'ضعيف', 'icon' => 'fas fa-frown', 'color' => '#ef4444'];
    } else {
        return ['label' => 'بدون تقدير', 'icon' => 'fas fa-hourglass-half', 'color' => '#6b7280'];
    }
}

/**
 * Generate the complete academic statistics card with status
 */
function renderAcademicStatsCard($connection, $student_id, $stats, $semesterName = '', $current_semester_id = null) {
    if (!$connection || !($connection instanceof mysqli)) {
        return '<div class="alert alert-danger">خطأ في الاتصال بقاعدة البيانات</div>';
    }
    
    $gpa = $stats['gpa'] ?? 0;
    $cgpa = $stats['cgpa'] ?? 0;
    
    $semester_history = getSemesterHistory($connection, $student_id);
    $status_details = getAcademicStatusDetails($connection, $student_id, $current_semester_id, $cgpa, $semester_history);
    
    $repeated_failure = hasRepeatedFailure($connection, $student_id);
    $three_quarters_failure = hasThreeQuartersFailure($connection, $student_id);
    
    $program_type = getStudentProgramType($connection, $student_id);
    $program_label = ($program_type == 'bachelor') ? 'بكالوريوس' : 'دبلوم';
    
    $total_failed = ($stats['failed_count'] ?? 0);
    
    $final_status = $status_details;
    if ($repeated_failure) {
        $final_status = [
            'status' => 'فصل (رسوب مكرر)',
            'status_code' => 'dismissed_repeated',
            'message' => 'تم فصل الطالب بسبب الرسوب المكرر في نفس المقرر مرتين',
            'color' => '#7f1d1d',
            'icon' => 'fas fa-times-circle',
            'warning_level' => 3
        ];
    } elseif ($three_quarters_failure) {
        $final_status = [
            'status' => 'فصل (ثلاثة أرباع المقررات)',
            'status_code' => 'dismissed_percentage',
            'message' => 'تم فصل الطالب بسبب الرسوب في ثلاثة أرباع المقررات',
            'color' => '#7f1d1d',
            'icon' => 'fas fa-chart-line',
            'warning_level' => 3,
            'details' => $three_quarters_failure
        ];
    }
    
    $cardHtml = '
    <div class="academic-stats-card" style="background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%); border-radius: 25px; padding: 20px; margin-bottom: 25px; box-shadow: 0 15px 35px rgba(0,0,0,0.2);">
        <div class="row g-4">
            <div class="col-12">
                <div class="d-flex justify-content-between align-items-center flex-wrap gap-3">
                    <div>
                        <h4 style="color: white; margin: 0;">
                            <i class="fas fa-chart-line ms-2" style="color: #f5576c;"></i>
                            الملخص الأكاديمي - الفصل ' . htmlspecialchars($semesterName) . '
                        </h4>
                        <small style="color: #94a3b8;">
                            <i class="fas fa-graduation-cap ms-1"></i>
                            ' . $program_label . ' | آخر تحديث: ' . date('Y-m-d') . '
                        </small>
                    </div>
                    <div style="display: flex; gap: 15px; align-items: center;">
                        <div style="background: #3b82f620; border-radius: 60px; padding: 8px 20px; text-align: center; border: 2px solid #3b82f6;">
                            <div style="font-size: 1.6rem; font-weight: 800; color: #3b82f6;">' . number_format($gpa, 2) . '</div>
                            <div style="font-size: 0.7rem; color: #cbd5e1;">المعدل الفصلي (GPA)</div>
                        </div>
                        <div style="background: #f5576c20; border-radius: 60px; padding: 8px 20px; text-align: center; border: 2px solid #f5576c;">
                            <div style="font-size: 1.6rem; font-weight: 800; color: #f5576c;">' . number_format($cgpa, 2) . '</div>
                            <div style="font-size: 0.7rem; color: #cbd5e1;">المعدل التراكمي (CGPA)</div>
                        </div>
                    </div>
                </div>
            </div>
            
            <div class="col-12">
                <div style="background: ' . $final_status['color'] . '20; border-radius: 20px; padding: 15px; border-right: 5px solid ' . $final_status['color'] . ';">
                    <div class="d-flex justify-content-between align-items-center flex-wrap gap-3">
                        <div>
                            <div style="display: flex; align-items: center; gap: 10px;">
                                <i class="' . $final_status['icon'] . '" style="font-size: 2rem; color: ' . $final_status['color'] . ';"></i>
                                <div>
                                    <div style="font-size: 0.85rem; color: #94a3b8;">حالة الطالب الأكاديمية</div>
                                    <div style="font-size: 1.5rem; font-weight: 700; color: ' . $final_status['color'] . ';">' . $final_status['status'] . '</div>
                                </div>
                            </div>
                        </div>
                        <div>
                            <div style="font-size: 0.85rem; color: #94a3b8;">المعدل التراكمي الحالي (CGPA)</div>
                            <div style="font-size: 1.3rem; font-weight: 700; ' . ($cgpa < 2.00 ? 'color: #ef4444;' : 'color: #10b981;') . '">' . number_format($cgpa, 2) . '</div>
                            <div style="font-size: 0.75rem; color: #64748b;">' . ($cgpa < 2.00 ? 'أقل من 2.00' : '2.00 فأكثر') . '</div>
                        </div>
                        ' . (isset($final_status['low_cgpa_count']) && $final_status['low_cgpa_count'] > 0 ? '
                        <div>
                            <div style="font-size: 0.85rem; color: #94a3b8;">مرات انخفاض CGPA عن 2.00</div>
                            <div style="font-size: 1.8rem; font-weight: 700; color: #f59e0b;">' . $final_status['low_cgpa_count'] . '</div>
                        </div>
                        ' : '') . '
                    </div>
                    <div class="mt-2">
                        <small style="color: #94a3b8;">
                            <i class="fas fa-info-circle ms-1"></i>
                            ' . $final_status['message'] . '
                        </small>
                    </div>
                </div>
            </div>
            
            <div class="col-md-3 col-sm-6">
                <div style="background: rgba(255,255,255,0.05); border-radius: 20px; padding: 15px; text-align: center;">
                    <div style="font-size: 2rem; color: #60a5fa;"><i class="fas fa-database"></i></div>
                    <div style="font-size: 1.8rem; font-weight: 700; color: white;">' . number_format($stats['total_hours'] ?? 0, 1) . '</div>
                    <div style="color: #94a3b8; font-size: 0.85rem;">الساعات التراكمية (CH)</div>
                </div>
            </div>
            
            <div class="col-md-3 col-sm-6">
                <div style="background: rgba(255,255,255,0.05); border-radius: 20px; padding: 15px; text-align: center;">
                    <div style="font-size: 2rem; color: #f472b6;"><i class="fas fa-chart-line"></i></div>
                    <div style="font-size: 1.8rem; font-weight: 700; color: white;">' . number_format($stats['total_points'] ?? 0, 2) . '</div>
                    <div style="color: #94a3b8; font-size: 0.85rem;">النقاط التراكمية (CP)</div>
                </div>
            </div>
            
            <div class="col-md-3 col-sm-6">
                <div style="background: rgba(255,255,255,0.05); border-radius: 20px; padding: 15px; text-align: center;">
                    <div style="font-size: 2rem; color: #34d399;"><i class="fas fa-hourglass-half"></i></div>
                    <div style="font-size: 1.8rem; font-weight: 700; color: white;">' . number_format($stats['semester_hours'] ?? 0, 1) . '</div>
                    <div style="color: #94a3b8; font-size: 0.85rem;">الساعات الفصلية (SH)</div>
                </div>
            </div>
            
            <div class="col-md-3 col-sm-6">
                <div style="background: rgba(255,255,255,0.05); border-radius: 20px; padding: 15px; text-align: center;">
                    <div style="font-size: 2rem; color: #fbbf24;"><i class="fas fa-chart-simple"></i></div>
                    <div style="font-size: 1.8rem; font-weight: 700; color: white;">' . number_format($stats['semester_points'] ?? 0, 2) . '</div>
                    <div style="color: #94a3b8; font-size: 0.85rem;">النقاط الفصلية (SP)</div>
                </div>
            </div>
        </div>
        
        <div class="row g-3 mt-3">
            <div class="col-md-3 col-sm-6">
                <div style="background: rgba(16, 185, 129, 0.1); border-radius: 15px; padding: 12px 15px;">
                    <div class="d-flex justify-content-between align-items-center">
                        <span style="color: #10b981;"><i class="fas fa-check-circle ms-2"></i> ناجح</span>
                        <span style="color: white; font-weight: 700; font-size: 1.5rem;">' . ($stats['passed_count'] ?? 0) . '</span>
                    </div>
                    <div class="mt-1"><small style="color: #64748b;">مواد معتمدة</small></div>
                </div>
            </div>
            
            <div class="col-md-3 col-sm-6">
                <div style="background: rgba(239, 68, 68, 0.1); border-radius: 15px; padding: 12px 15px;">
                    <div class="d-flex justify-content-between align-items-center">
                        <span style="color: #ef4444;"><i class="fas fa-times-circle ms-2"></i> راسب</span>
                        <span style="color: white; font-weight: 700; font-size: 1.5rem;">' . $total_failed . '</span>
                    </div>
                    <div class="mt-1">
                        <small style="color: #fca5a5;">F, F*, F**</small>
                    </div>
                </div>
            </div>
            
            <div class="col-md-3 col-sm-6">
                <div style="background: rgba(245, 158, 11, 0.1); border-radius: 15px; padding: 12px 15px;">
                    <div class="d-flex justify-content-between align-items-center">
                        <span style="color: #f59e0b;"><i class="fas fa-ban ms-2"></i> مستبعد</span>
                        <span style="color: white; font-weight: 700; font-size: 1.5rem;">' . ($stats['excluded_count'] ?? 0) . '</span>
                    </div>
                    <div class="mt-1">
                        <small style="color: #fcd34d;">I, W, N</small>
                    </div>
                </div>
            </div>
            
            <div class="col-md-3 col-sm-6">
                <div style="background: rgba(100, 116, 139, 0.1); border-radius: 15px; padding: 12px 15px;">
                    <div class="d-flex justify-content-between align-items-center">
                        <span style="color: #94a3b8;"><i class="fas fa-hourglass-half ms-2"></i> بدون تقدير</span>
                        <span style="color: white; font-weight: 700; font-size: 1.5rem;">' . ($stats['pending_count'] ?? 0) . '</span>
                    </div>
                    <div class="mt-1"><small style="color: #64748b;">لم تُقيّم بعد</small></div>
                </div>
            </div>
        </div>
        
        <div class="row mt-3">
            <div class="col-12">
                <div style="background: rgba(255,255,255,0.03); border-radius: 15px; padding: 10px;">
                    <details>
                        <summary style="color: #94a3b8; cursor: pointer; font-size: 0.85rem;">
                            <i class="fas fa-gavel ms-1"></i>
                            ' . ($program_type == 'bachelor' ? 'لائحة الإنذار الأكاديمي (البكالوريوس)' : 'لائحة الإنذار الأكاديمي (الدبلوم)') . '
                        </summary>
                        <div style="margin-top: 10px; padding-right: 15px;">';
    
    if ($program_type == 'bachelor') {
        $cardHtml .= '
                            <small style="color: #64748b; display: block;">
                                <i class="fas fa-circle ms-2" style="font-size: 0.5rem; color: #f59e0b;"></i>
                                <strong>إنذار (ن1):</strong> أول مرة يكون فيها المعدل التراكمي (CGPA) أقل من 2.00
                            </small>
                            <small style="color: #64748b; display: block; margin-top: 8px;">
                                <i class="fas fa-circle ms-2" style="font-size: 0.5rem; color: #10b981;"></i>
                                <strong>رفع الإنذار:</strong> يُرفع الإنذار إذا استطاع الطالب رفع المعدل التراكمي إلى 2.00 فأكثر
                            </small>
                            <small style="color: #64748b; display: block; margin-top: 8px;">
                                <i class="fas fa-circle ms-2" style="font-size: 0.5rem; color: #ef4444;"></i>
                                <strong>إنذار (ن2):</strong> إذا لم يستطع الطالب رفع المعدل التراكمي إلى 2.00 بعد الإنذار الأول
                            </small>
                            <small style="color: #64748b; display: block; margin-top: 8px;">
                                <i class="fas fa-circle ms-2" style="font-size: 0.5rem; color: #7f1d1d;"></i>
                                <strong>فصل:</strong> إذا لم يستطع الطالب رفع المعدل التراكمي إلى 2.00 بعد الإنذار الثاني
                            </small>
                            <small style="color: #64748b; display: block; margin-top: 8px;">
                                <i class="fas fa-info-circle ms-2" style="font-size: 0.5rem; color: #3b82f6;"></i>
                                <strong>ملاحظة:</strong> المعيار الوحيد للحالات هو المعدل التراكمي (CGPA)، وليس المعدل الفصلي (GPA)
                            </small>';
    } else {
        $cardHtml .= '
                            <small style="color: #64748b; display: block;">
                                <i class="fas fa-circle ms-2" style="font-size: 0.5rem; color: #f59e0b;"></i>
                                <strong>إنذار (ن):</strong> أول مرة يكون فيها المعدل التراكمي (CGPA) أقل من 2.00
                            </small>
                            <small style="color: #64748b; display: block; margin-top: 8px;">
                                <i class="fas fa-circle ms-2" style="font-size: 0.5rem; color: #10b981;"></i>
                                <strong>رفع الإنذار:</strong> يُرفع الإنذار إذا استطاع الطالب رفع المعدل التراكمي إلى 2.00 فأكثر
                            </small>
                            <small style="color: #64748b; display: block; margin-top: 8px;">
                                <i class="fas fa-circle ms-2" style="font-size: 0.5rem; color: #7f1d1d;"></i>
                                <strong>فصل:</strong> إذا لم يستطع الطالب رفع المعدل التراكمي إلى 2.00 بعد الإنذار
                            </small>';
    }
    
    $cardHtml .= '
                            <hr style="border-color: #334155; margin: 10px 0;">
                            <small style="color: #64748b; display: block;">
                                <i class="fas fa-circle ms-2" style="font-size: 0.5rem; color: #7f1d1d;"></i>
                                <strong>فصل (رسوب مكرر):</strong> الرسوب في نفس المقرر مرتين (F, F*, F**)
                            </small>
                            <small style="color: #64748b; display: block; margin-top: 8px;">
                                <i class="fas fa-circle ms-2" style="font-size: 0.5rem; color: #7f1d1d;"></i>
                                <strong>فصل (ثلاثة أرباع المقررات):</strong> الرسوب في ثلاثة أرباع المقررات في أي فصل دراسي
                            </small>
                        </div>
                    </details>
                </div>
            </div>
        </div>
        
        <div class="mt-2 text-center">
            <small style="color: #64748b;">
                <i class="fas fa-info-circle ms-1"></i>
                ملاحظة: التقديرات (I, W, N) فقط هي التي لا تدخل في حساب المعدل. التقديرات (F, F*, F**) تدخل في الحساب.
            </small>
        </div>
    </div>';
    
    return $cardHtml;
}
?>