Your IP : 216.73.216.93


Current Path : /home/users/unlimited/www/nigeria.codeskitter.site/student/
Upload File :
Current File : /home/users/unlimited/www/nigeria.codeskitter.site/student/progress.php

<?php
include '../includes/config.php';

if(!isset($_SESSION['user_id']) || $_SESSION['user_role'] != 'student') {
    header("Location: ../login.php");
    exit();
}

$user_id = $_SESSION['user_id'];

// Get overall progress statistics
$stats_sql = "SELECT 
    COUNT(DISTINCT e.course_id) as total_courses,
    COUNT(DISTINCT CASE WHEN e.progress = 100 THEN e.course_id END) as completed_courses,
    AVG(e.progress) as overall_progress,
    SUM(sp.time_spent) as total_study_time,
    COUNT(DISTINCT sp.module_id) as total_modules,
    COUNT(DISTINCT CASE WHEN sp.is_completed = 1 THEN sp.module_id END) as completed_modules
    FROM enrollments e 
    LEFT JOIN student_progress sp ON e.user_id = sp.user_id AND e.course_id = sp.course_id
    WHERE e.user_id = ?";

$stmt = $conn->prepare($stats_sql);
$stmt->bind_param("i", $user_id);
$stmt->execute();
$stats = $stmt->get_result()->fetch_assoc();

// Get course-wise progress
$course_progress_sql = "SELECT c.*, e.progress, e.enrolled_at,
                       COUNT(DISTINCT cm.id) as total_modules,
                       COUNT(DISTINCT CASE WHEN sp.is_completed = 1 THEN sp.module_id END) as completed_modules
                       FROM enrollments e 
                       JOIN courses c ON e.course_id = c.id 
                       LEFT JOIN course_modules cm ON c.id = cm.course_id
                       LEFT JOIN student_progress sp ON cm.id = sp.module_id AND sp.user_id = e.user_id
                       WHERE e.user_id = ? 
                       GROUP BY c.id 
                       ORDER BY e.progress DESC";
$stmt_courses = $conn->prepare($course_progress_sql);
$stmt_courses->bind_param("i", $user_id);
$stmt_courses->execute();
$course_progress = $stmt_courses->get_result();
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>My Progress - eLearning</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.7.2/font/bootstrap-icons.css">
    <link rel="stylesheet" href="../assets/css/style.css">
</head>
<body>
    <?php include 'navigation.php'; ?>

    <div class="container-fluid py-4">
        <div class="row">
            <div class="col-12">
                <h1 class="mb-4">My Learning Progress</h1>

                <!-- Progress Overview -->
                <div class="row mb-5">
                    <div class="col-md-3 mb-3">
                        <div class="card text-center">
                            <div class="card-body">
                                <i class="bi bi-book fs-1 text-primary mb-3"></i>
                                <h3><?php echo $stats['total_courses'] ?? 0; ?></h3>
                                <p class="text-muted mb-0">Total Courses</p>
                            </div>
                        </div>
                    </div>
                    <div class="col-md-3 mb-3">
                        <div class="card text-center">
                            <div class="card-body">
                                <i class="bi bi-check-circle fs-1 text-success mb-3"></i>
                                <h3><?php echo $stats['completed_courses'] ?? 0; ?></h3>
                                <p class="text-muted mb-0">Completed Courses</p>
                            </div>
                        </div>
                    </div>
                    <div class="col-md-3 mb-3">
                        <div class="card text-center">
                            <div class="card-body">
                                <i class="bi bi-graph-up fs-1 text-info mb-3"></i>
                                <h3><?php echo round($stats['overall_progress'] ?? 0); ?>%</h3>
                                <p class="text-muted mb-0">Overall Progress</p>
                            </div>
                        </div>
                    </div>
                    <div class="col-md-3 mb-3">
                        <div class="card text-center">
                            <div class="card-body">
                                <i class="bi bi-clock fs-1 text-warning mb-3"></i>
                                <h3><?php echo round(($stats['total_study_time'] ?? 0) / 60, 1); ?>h</h3>
                                <p class="text-muted mb-0">Study Time</p>
                            </div>
                        </div>
                    </div>
                </div>

                <!-- Course Progress -->
                <div class="card">
                    <div class="card-header">
                        <h5 class="mb-0">Course Progress</h5>
                    </div>
                    <div class="card-body">
                        <div class="table-responsive">
                            <table class="table table-striped">
                                <thead>
                                    <tr>
                                        <th>Course</th>
                                        <th>Enrollment Date</th>
                                        <th>Modules Completed</th>
                                        <th>Overall Progress</th>
                                        <th>Study Time</th>
                                        <th>Status</th>
                                        <th>Action</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php while($course = $course_progress->fetch_assoc()): 
                                        $completion_rate = $course['total_modules'] > 0 ? 
                                            round(($course['completed_modules'] / $course['total_modules']) * 100) : 0;
                                    ?>
                                    <tr>
                                        <td>
                                            <strong><?php echo $course['title']; ?></strong>
                                        </td>
                                        <td><?php echo date('M j, Y', strtotime($course['enrolled_at'])); ?></td>
                                        <td>
                                            <?php echo $course['completed_modules']; ?>/<?php echo $course['total_modules']; ?>
                                            <small class="text-muted">(<?php echo $completion_rate; ?>%)</small>
                                        </td>
                                        <td>
                                            <div class="progress" style="height: 8px;">
                                                <div class="progress-bar bg-success" style="width: <?php echo $course['progress']; ?>%"></div>
                                            </div>
                                            <small class="text-muted"><?php echo $course['progress']; ?>%</small>
                                        </td>
                                        <td>
                                            <?php
                                            $course_time_sql = "SELECT SUM(time_spent) as course_time 
                                                               FROM student_progress 
                                                               WHERE user_id = ? AND course_id = ?";
                                            $stmt_time = $conn->prepare($course_time_sql);
                                            $stmt_time->bind_param("ii", $user_id, $course['id']);
                                            $stmt_time->execute();
                                            $course_time = $stmt_time->get_result()->fetch_assoc();
                                            echo round(($course_time['course_time'] ?? 0) / 60, 1) . 'h';
                                            ?>
                                        </td>
                                        <td>
                                            <?php if($course['progress'] == 100): ?>
                                            <span class="badge bg-success">Completed</span>
                                            <?php elseif($course['progress'] > 0): ?>
                                            <span class="badge bg-warning">In Progress</span>
                                            <?php else: ?>
                                            <span class="badge bg-secondary">Not Started</span>
                                            <?php endif; ?>
                                        </td>
                                        <td>
                                            <a href="course-player.php?course_id=<?php echo $course['id']; ?>" class="btn btn-sm btn-primary">
                                                Continue
                                            </a>
                                        </td>
                                    </tr>
                                    <?php endwhile; ?>
                                </tbody>
                            </table>
                        </div>
                    </div>
                </div>

                <!-- Progress Chart Placeholder -->
                <div class="card mt-4">
                    <div class="card-header">
                        <h5 class="mb-0">Progress Over Time</h5>
                    </div>
                    <div class="card-body">
                        <div class="text-center py-5">
                            <i class="bi bi-bar-chart fs-1 text-muted"></i>
                            <p class="text-muted mt-2">Progress chart will be displayed here</p>
                            <small class="text-muted">(This would typically show a line chart of your progress over time)</small>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>