Files
QrCode-Attendance-System/src-backup/admin/view_activity.php
2026-01-07 14:09:59 +08:00

249 lines
11 KiB
PHP

<?php
require_once '../includes/config.php';
// Check if user is logged in and is admin
if (!isset($_SESSION['logged_in']) || $_SESSION['logged_in'] !== true || $_SESSION['role'] !== 'admin') {
header('Location: ../auth/login.php');
exit();
}
$title = "View Activity";
// Get activity ID
$activity_id = $_GET['id'] ?? 0;
if ($activity_id <= 0) {
$_SESSION['message'] = 'Invalid activity ID!';
$_SESSION['message_type'] = 'danger';
header('Location: manage_activities.php');
exit();
}
// Get activity data with related information
$sql = "SELECT a.*, u.full_name as created_by_name,
c.code as course_code, c.name as course_name,
d.code as department_code, d.name as department_name
FROM activities a
LEFT JOIN users u ON a.created_by = u.id
LEFT JOIN courses c ON a.course_id = c.id
LEFT JOIN departments d ON a.department_id = d.id
WHERE a.id = $activity_id";
$result = query($conn, $sql);
if (!$result || mysqli_num_rows($result) == 0) {
$_SESSION['message'] = 'Activity not found!';
$_SESSION['message_type'] = 'danger';
header('Location: manage_activities.php');
exit();
}
$activity = mysqli_fetch_assoc($result);
// Get attendance stats
$attendance_sql = "SELECT
COUNT(*) as total,
SUM(CASE WHEN status = 'present' THEN 1 ELSE 0 END) as present,
SUM(CASE WHEN status = 'late' THEN 1 ELSE 0 END) as late,
SUM(CASE WHEN status = 'absent' THEN 1 ELSE 0 END) as absent
FROM attendance
WHERE activity_id = " . $activity['id'];
$attendance_result = query($conn, $attendance_sql);
$stats = mysqli_fetch_assoc($attendance_result);
$today = date('Y-m-d');
$current_time = date('H:i:s');
include '../includes/header.php';
?>
<!-- Page Header -->
<div class="d-flex justify-content-between align-items-center mb-4">
<div>
<h1 class="h3 mb-2">Activity Details</h1>
<p class="text-muted">View detailed information about the activity.</p>
</div>
<div>
<a href="manage_activities.php" class="btn btn-secondary">
<i class="bi bi-arrow-left me-2"></i> Back to Activities
</a>
</div>
</div>
<!-- Activity Details -->
<div class="row">
<div class="col-lg-8">
<div class="card shadow mb-4">
<div class="card-header">
<h5 class="mb-0"><?php echo htmlspecialchars($activity['name']); ?></h5>
</div>
<div class="card-body">
<div class="mb-4">
<h6>Description</h6>
<p><?php echo nl2br(htmlspecialchars($activity['description'] ?: 'No description provided')); ?></p>
</div>
<div class="row">
<div class="col-md-6 mb-3">
<h6><i class="bi bi-calendar me-2"></i> Date</h6>
<p><?php echo date('l, F j, Y', strtotime($activity['date'])); ?></p>
</div>
<div class="col-md-6 mb-3">
<h6><i class="bi bi-clock me-2"></i> Time</h6>
<p>
<?php echo date('h:i A', strtotime($activity['time_in'])); ?> -
<?php echo date('h:i A', strtotime($activity['time_out'])); ?>
</p>
</div>
<div class="col-md-6 mb-3">
<h6><i class="bi bi-geo-alt me-2"></i> Location</h6>
<p><?php echo htmlspecialchars($activity['location']); ?></p>
</div>
<div class="col-md-6 mb-3">
<h6><i class="bi bi-people me-2"></i> Participants</h6>
<p>
<?php
switch($activity['required_students']) {
case 'all':
echo '<span class="badge bg-info">All Students</span>';
break;
case 'specific_course':
echo '<span class="badge bg-warning">' . ($activity['course_name'] ?? 'Specific Course') . '</span>';
break;
case 'specific_department':
echo '<span class="badge bg-primary">' . ($activity['department_name'] ?? 'Specific Department') . '</span>';
break;
}
?>
</p>
</div>
</div>
<div class="row">
<div class="col-md-6 mb-3">
<h6>Status</h6>
<p>
<?php if ($activity['status'] == 1): ?>
<span class="badge bg-success">Active</span>
<?php else: ?>
<span class="badge bg-danger">Inactive</span>
<?php endif; ?>
<?php
$activity_date = $activity['date'];
$activity_start = $activity['time_in'];
$activity_end = $activity['time_out'];
if ($activity_date > $today) {
echo '<span class="badge bg-primary ms-2">Upcoming</span>';
} elseif ($activity_date == $today && $current_time >= $activity_start && $current_time <= $activity_end) {
echo '<span class="badge bg-success ms-2">Ongoing</span>';
} else {
echo '<span class="badge bg-secondary ms-2">Past</span>';
}
?>
</p>
</div>
<div class="col-md-6 mb-3">
<h6>Created By</h6>
<p><?php echo htmlspecialchars($activity['created_by_name']); ?></p>
<small class="text-muted">
Created: <?php echo date('F j, Y', strtotime($activity['created_at'])); ?><br>
<?php if ($activity['updated_at'] != $activity['created_at']): ?>
Updated: <?php echo date('F j, Y', strtotime($activity['updated_at'])); ?>
<?php endif; ?>
</small>
</div>
</div>
</div>
<div class="card-footer">
<div class="btn-group">
<a href="edit_activity.php?id=<?php echo $activity['id']; ?>" class="btn btn-warning">
<i class="bi bi-pencil me-1"></i> Edit
</a>
<a href="reports.php?activity_id=<?php echo $activity['id']; ?>" class="btn btn-primary">
<i class="bi bi-file-earmark-text me-1"></i> View Report
</a>
<?php if ($activity['date'] == $today && $current_time >= $activity['time_in'] && $current_time <= $activity['time_out']): ?>
<a href="../admin/attendance.php" class="btn btn-success">
<i class="bi bi-qr-code-scan me-1"></i> Take Attendance
</a>
<?php endif; ?>
</div>
</div>
</div>
</div>
<div class="col-lg-4">
<!-- Attendance Stats Card -->
<div class="card shadow mb-4">
<div class="card-header">
<h6 class="mb-0">Attendance Statistics</h6>
</div>
<div class="card-body">
<div class="mb-3">
<div class="d-flex justify-content-between mb-1">
<span>Attendance Rate</span>
<strong><?php echo $stats['total'] > 0 ? round(($stats['present'] / $stats['total']) * 100, 1) : 0; ?>%</strong>
</div>
<div class="progress" style="height: 8px;">
<div class="progress-bar" role="progressbar"
style="width: <?php echo $stats['total'] > 0 ? ($stats['present'] / $stats['total'] * 100) : 0; ?>%">
</div>
</div>
</div>
<div class="mb-2">
<small class="d-flex justify-content-between">
<span>Present:</span>
<strong><?php echo $stats['present'] ?: 0; ?></strong>
</small>
</div>
<div class="mb-2">
<small class="d-flex justify-content-between">
<span>Late:</span>
<strong><?php echo $stats['late'] ?: 0; ?></strong>
</small>
</div>
<div class="mb-2">
<small class="d-flex justify-content-between">
<span>Absent:</span>
<strong><?php echo $stats['absent'] ?: 0; ?></strong>
</small>
</div>
<div class="mt-3 pt-3 border-top">
<small class="d-flex justify-content-between">
<span>Total:</span>
<strong><?php echo $stats['total'] ?: 0; ?></strong>
</small>
</div>
</div>
</div>
<!-- Quick Actions -->
<div class="card shadow">
<div class="card-header">
<h6 class="mb-0">Quick Actions</h6>
</div>
<div class="card-body">
<div class="d-grid gap-2">
<a href="reports.php?activity_id=<?php echo $activity['id']; ?>"
class="btn btn-primary">
<i class="bi bi-file-earmark-text me-1"></i> View Full Report
</a>
<a href="../admin/attendance.php" class="btn btn-success">
<i class="bi bi-qr-code-scan me-1"></i> Take Attendance
</a>
<a href="edit_activity.php?id=<?php echo $activity['id']; ?>" class="btn btn-warning">
<i class="bi bi-pencil me-1"></i> Edit Activity
</a>
<a href="manage_activities.php" class="btn btn-secondary">
<i class="bi bi-list-ul me-1"></i> Back to List
</a>
</div>
</div>
</div>
</div>
</div>
<?php include '../includes/footer.php'; ?>