Path : /home/vishqocm/pcib.in/faculty/
File Upload :
Current File : //home/vishqocm/pcib.in/faculty/index.php

<?php
session_start();
require_once 'database/db_config.php';

// Check if user has faculty privileges
require_faculty_privileges('../login.php');

// Get dashboard statistics with error handling
try {
    // Get faculty-specific statistics
    $user_id = $_SESSION['user_id'];
    
    // Get faculty information
    $faculty_query = "SELECT * FROM users WHERE id = ?";
    $stmt = $conn->prepare($faculty_query);
    $stmt->bind_param("i", $user_id);
    $stmt->execute();
    $faculty_result = $stmt->get_result();
    $faculty = $faculty_result->fetch_assoc();
    
    // Get courses count
    $courses_query = "SELECT COUNT(*) as count FROM courses";
    $stmt = $conn->prepare($courses_query);
    $stmt->execute();
    $courses_count = $stmt->get_result()->fetch_assoc()['count'];
    
    // Get students count
    $students_query = "SELECT COUNT(DISTINCT user_id) as count FROM enrollments 
                       WHERE course_id IN (SELECT id FROM courses)";
    $stmt = $conn->prepare($students_query);
    $stmt->execute();
    $students_count = $stmt->get_result()->fetch_assoc()['count'];
    
    // Get attendance statistics
    $attendance_query = "
        SELECT 
            COUNT(DISTINCT date) as attendance_days,
            COUNT(*) as total_records,
            SUM(CASE WHEN status = 'present' THEN 1 ELSE 0 END) as present_count,
            SUM(CASE WHEN status = 'absent' THEN 1 ELSE 0 END) as absent_count
        FROM attendance 
        WHERE marked_by = ?
    ";
    $stmt = $conn->prepare($attendance_query);
    $stmt->bind_param("i", $user_id);
    $stmt->execute();
    $attendance_stats = $stmt->get_result()->fetch_assoc();
    
    // Calculate attendance rate
    $attendance_rate = 0;
    if (!empty($attendance_stats['total_records'])) {
        $attendance_rate = round(($attendance_stats['present_count'] / $attendance_stats['total_records']) * 100);
    }
    
    // Get latest courses
    $latest_courses_query = "SELECT * FROM courses 
                            ORDER BY created_at DESC LIMIT 5";
    $stmt = $conn->prepare($latest_courses_query);
    $stmt->execute();
    $latest_courses_result = $stmt->get_result();
    
    // Get recent attendance records
    $recent_attendance_query = "
        SELECT a.date, a.status, u.first_name, u.last_name, c.title as course_title
        FROM attendance a
        INNER JOIN users u ON a.student_id = u.id
        INNER JOIN courses c ON a.course_id = c.id
        WHERE a.marked_by = ?
        ORDER BY a.date DESC, a.id DESC
        LIMIT 10
    ";
    $stmt = $conn->prepare($recent_attendance_query);
    $stmt->bind_param("i", $user_id);
    $stmt->execute();
    $recent_attendance_result = $stmt->get_result();
    
} catch (Exception $e) {
    // Log the error and show a user-friendly message
    error_log("Dashboard statistics error: " . $e->getMessage());
    
    // Initialize empty values if there's an error
    $courses_count = 0;
    $students_count = 0;
    $attendance_stats = [
        'attendance_days' => 0,
        'total_records' => 0,
        'present_count' => 0,
        'absent_count' => 0
    ];
    $attendance_rate = 0;
    $latest_courses_result = false;
    $recent_attendance_result = false;
}

// Include header
include_once 'includes/header.php';
?>

<!-- Begin Page Content -->
<div class="container-fluid mt-4 pt-4">
    <!-- Page Heading -->
    <div class="d-sm-flex align-items-center justify-content-between mb-4">
        <h1 class="h3 mb-0 text-gray-800">Faculty Dashboard</h1>
        <div>
            <a href="attendance.php" class="d-none d-sm-inline-block btn btn-primary shadow-sm me-2">
                <i class="fas fa-clipboard-list fa-sm text-white-50"></i> Take Attendance
            </a>
            <a href="profile.php" class="d-none d-sm-inline-block btn btn-info shadow-sm">
                <i class="fas fa-user fa-sm text-white-50"></i> View Profile
            </a>
        </div>
    </div>

    <!-- Statistics Cards -->
    <div class="row">
        <!-- Courses Card -->
        <div class="col-xl-3 col-md-6 mb-4">
            <div class="card border-left-primary shadow h-100 py-2">
                <div class="card-body">
                    <div class="row no-gutters align-items-center">
                        <div class="col mr-2">
                            <div class="text-xs font-weight-bold text-primary text-uppercase mb-1">
                                Courses</div>
                            <div class="h5 mb-0 font-weight-bold text-gray-800"><?php echo number_format($courses_count); ?></div>
                        </div>
                        <div class="col-auto">
                            <i class="fas fa-book fa-2x text-gray-300"></i>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <!-- Students Card -->
        <div class="col-xl-3 col-md-6 mb-4">
            <div class="card border-left-success shadow h-100 py-2">
                <div class="card-body">
                    <div class="row no-gutters align-items-center">
                        <div class="col mr-2">
                            <div class="text-xs font-weight-bold text-success text-uppercase mb-1">
                                Students</div>
                            <div class="h5 mb-0 font-weight-bold text-gray-800"><?php echo number_format($students_count); ?></div>
                        </div>
                        <div class="col-auto">
                            <i class="fas fa-user-graduate fa-2x text-gray-300"></i>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <!-- Attendance Card -->
        <div class="col-xl-3 col-md-6 mb-4">
            <div class="card border-left-info shadow h-100 py-2">
                <div class="card-body">
                    <div class="row no-gutters align-items-center">
                        <div class="col mr-2">
                            <div class="text-xs font-weight-bold text-info text-uppercase mb-1">Attendance Rate
                            </div>
                            <div class="row no-gutters align-items-center">
                                <div class="col-auto">
                                    <div class="h5 mb-0 mr-3 font-weight-bold text-gray-800"><?php echo $attendance_rate; ?>%</div>
                                </div>
                                <div class="col">
                                    <div class="progress progress-sm mr-2">
                                        <div class="progress-bar bg-info" role="progressbar"
                                            style="width: <?php echo $attendance_rate; ?>%" aria-valuenow="<?php echo $attendance_rate; ?>" aria-valuemin="0"
                                            aria-valuemax="100"></div>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <div class="col-auto">
                            <i class="fas fa-clipboard-list fa-2x text-gray-300"></i>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <!-- Days Card -->
        <div class="col-xl-3 col-md-6 mb-4">
            <div class="card border-left-warning shadow h-100 py-2">
                <div class="card-body">
                    <div class="row no-gutters align-items-center">
                        <div class="col mr-2">
                            <div class="text-xs font-weight-bold text-warning text-uppercase mb-1">
                                Total Attendance Days</div>
                            <div class="h5 mb-0 font-weight-bold text-gray-800"><?php echo number_format($attendance_stats['attendance_days']); ?></div>
                        </div>
                        <div class="col-auto">
                            <i class="fas fa-calendar fa-2x text-gray-300"></i>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <!-- Content Row -->
    <div class="row">
        <!-- My Courses Column -->
        <div class="col-lg-6 mb-4">
            <!-- Courses Card -->
            <div class="card shadow mb-4">
                <div class="card-header py-3 d-flex flex-row align-items-center justify-content-between">
                    <h6 class="m-0 font-weight-bold text-primary">Courses</h6>
                    <a href="courses.php" class="btn btn-sm btn-primary shadow-sm">View All</a>
                </div>
                <div class="card-body">
                    <?php if ($latest_courses_result && $latest_courses_result->num_rows > 0): ?>
                        <div class="table-responsive">
                            <table class="table table-hover">
                                <thead>
                                    <tr>
                                        <th>Course</th>
                                        <th>Students</th>
                                        <th>Status</th>
                                        <th>Action</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php while ($course = $latest_courses_result->fetch_assoc()): ?>
                                        <tr>
                                            <td><?php echo htmlspecialchars($course['title']); ?></td>
                                            <td class="text-center">
                                                <?php 
                                                // Get enrollment count for this course
                                                $enrollment_count_query = "SELECT COUNT(*) as count FROM enrollments WHERE course_id = ?";
                                                $stmt = $conn->prepare($enrollment_count_query);
                                                $stmt->bind_param("i", $course['id']);
                                                $stmt->execute();
                                                $enrollment_count = $stmt->get_result()->fetch_assoc()['count'];
                                                echo number_format($enrollment_count);
                                                ?>
                                            </td>
                                            <td>
                                                <span class="badge bg-<?php echo ($course['status'] == 'active') ? 'success' : (($course['status'] == 'draft') ? 'warning' : 'danger'); ?>">
                                                    <?php echo ucfirst($course['status']); ?>
                                                </span>
                                            </td>
                                            <td>
                                                <a href="../course-details.php?id=<?php echo $course['id']; ?>" class="btn btn-sm btn-info">
                                                    <i class="fas fa-eye"></i> View
                                                </a>
                                            </td>
                                        </tr>
                                    <?php endwhile; ?>
                                </tbody>
                            </table>
                        </div>
                    <?php else: ?>
                        <div class="alert alert-info">
                            <p class="mb-0">No Course Found</p>
                        </div>
                    <?php endif; ?>
                </div>
            </div>
        </div>

        <!-- Recent Attendance Column -->
        <div class="col-lg-6 mb-4">
            <!-- Recent Attendance Card -->
            <div class="card shadow mb-4">
                <div class="card-header py-3 d-flex flex-row align-items-center justify-content-between">
                    <h6 class="m-0 font-weight-bold text-primary">Recent Attendance Records</h6>
                    <a href="attendance_report.php" class="btn btn-sm btn-primary shadow-sm">View Reports</a>
                </div>
                <div class="card-body">
                    <?php if ($recent_attendance_result && $recent_attendance_result->num_rows > 0): ?>
                        <div class="table-responsive">
                            <table class="table table-hover">
                                <thead>
                                    <tr>
                                        <th>Date</th>
                                        <th>Student</th>
                                        <th>Course</th>
                                        <th>Status</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php while ($record = $recent_attendance_result->fetch_assoc()): ?>
                                        <tr>
                                            <td><?php echo date('d M Y', strtotime($record['date'])); ?></td>
                                            <td><?php echo htmlspecialchars($record['first_name'] . ' ' . $record['last_name']); ?></td>
                                            <td><?php echo htmlspecialchars($record['course_title']); ?></td>
                                            <td>
                                                <span class="badge bg-<?php 
                                                    echo $record['status'] === 'present' ? 'success' : 
                                                        ($record['status'] === 'absent' ? 'danger' : 
                                                            ($record['status'] === 'late' ? 'warning' : 'info')); 
                                                    ?> <?php echo $record['status'] === 'late' ? 'text-dark' : ''; ?>">
                                                    <?php echo ucfirst($record['status']); ?>
                                                </span>
                                            </td>
                                        </tr>
                                    <?php endwhile; ?>
                                </tbody>
                            </table>
                        </div>
                    <?php else: ?>
                        <div class="alert alert-info">
                            <p class="mb-0">No attendance records found. <a href="attendance.php">Start taking attendance</a>.</p>
                        </div>
                    <?php endif; ?>
                </div>
            </div>
        </div>
    </div>

    <!-- Quick Access Cards -->
    <div class="row">
        <div class="col-md-4 mb-4">
            <div class="card shadow">
                <div class="card-body text-center py-5">
                    <div class="mb-3">
                        <i class="fas fa-clipboard-list fa-4x text-primary"></i>
                    </div>
                    <h4 class="card-title">Attendance Management</h4>
                    <p class="card-text">Take attendance for all enrolled students in one place.</p>
                    <a href="attendance.php" class="btn btn-primary">Take Attendance</a>
                </div>
            </div>
        </div>
        
        <div class="col-md-4 mb-4">
            <div class="card shadow">
                <div class="card-body text-center py-5">
                    <div class="mb-3">
                        <i class="fas fa-file-download fa-4x text-success"></i>
                    </div>
                    <h4 class="card-title">Attendance Reports</h4>
                    <p class="card-text">Generate and download attendance reports in CSV format.</p>
                    <a href="attendance_report.php" class="btn btn-success">Generate Reports</a>
                </div>
            </div>
        </div>
        
        <div class="col-md-4 mb-4">
            <div class="card shadow">
                <div class="card-body text-center py-5">
                    <div class="mb-3">
                        <i class="fas fa-user fa-4x text-info"></i>
                    </div>
                    <h4 class="card-title">My Profile</h4>
                    <p class="card-text">View and update your profile information.</p>
                    <a href="profile.php" class="btn btn-info">View Profile</a>
                </div>
            </div>
        </div>
    </div>
</div>

<?php
// Include footer
include_once 'includes/footer.php';
?>