Sindbad~EG File Manager

Current Path : /home/copmadinaarea/thecopmadinaarea.org/portal/members/
Upload File :
Current File : /home/copmadinaarea/thecopmadinaarea.org/portal/members/event-checkin.php

<?php
require_once '../config/config.php';
require_once '../classes/EventManager.php';

// Check member authentication
if (!isset($_SESSION['member_id'])) {
    redirect('../login.php');
}

$pageTitle = "Event Check-in - " . APP_NAME;
$db = Database::getInstance()->getConnection();
$eventManager = new EventManager();
$success = '';
$error = '';

$memberId = $_SESSION['member_id'];
$selectedEventId = $_GET['event_id'] ?? null;
$autoCheckin = $_GET['auto_checkin'] ?? 0;

// Get member info
$memberStmt = $db->prepare("SELECT * FROM members WHERE id = :id");
$memberStmt->execute(['id' => $memberId]);
$member = $memberStmt->fetch();

// Handle check-in
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['checkin'])) {
    try {
        $eventId = $_POST['event_id'];
        
        // Check if already checked in
        $checkStmt = $db->prepare("SELECT id FROM event_attendance WHERE event_id = :event_id AND member_id = :member_id");
        $checkStmt->execute(['event_id' => $eventId, 'member_id' => $memberId]);
        
        if ($checkStmt->fetch()) {
            $error = "You are already checked in to this event";
        } else {
            // Record attendance
            $attendStmt = $db->prepare("
                INSERT INTO event_attendance (
                    event_id, member_id, first_name, last_name, attendance_type, check_in_time
                ) VALUES (
                    :event_id, :member_id, :first_name, :last_name, 'walk_in', NOW()
                )
            ");
            
            $attendStmt->execute([
                'event_id' => $eventId,
                'member_id' => $memberId,
                'first_name' => $member['first_name'],
                'last_name' => $member['last_name']
            ]);
            
            $success = "Successfully checked in!";
            $selectedEventId = $eventId;
        }
    } catch (Exception $e) {
        $error = "Error: " . $e->getMessage();
    }
}

// Handle check-out
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['checkout'])) {
    try {
        $eventId = $_POST['event_id'];
        
        // Update attendance record with check-out time
        $checkoutStmt = $db->prepare("
            UPDATE event_attendance 
            SET check_out_time = NOW() 
            WHERE event_id = :event_id 
            AND member_id = :member_id 
            AND check_out_time IS NULL
        ");
        
        $checkoutStmt->execute([
            'event_id' => $eventId,
            'member_id' => $memberId
        ]);
        
        if ($checkoutStmt->rowCount() > 0) {
            $success = "Successfully checked out!";
            $selectedEventId = $eventId;
        } else {
            $error = "Unable to check out. You may not be checked in or already checked out.";
        }
    } catch (Exception $e) {
        $error = "Error: " . $e->getMessage();
    }
}

// Get active events
$events = $eventManager->getEvents(['active' => true]);
$selectedEvent = null;
$isCheckedIn = false;
$isCheckedOut = false;
$checkinRecord = null;

if ($selectedEventId) {
    $selectedEvent = $eventManager->getEventById($selectedEventId);
    
    // Check if member is already checked in
    $checkStmt = $db->prepare("SELECT * FROM event_attendance WHERE event_id = :event_id AND member_id = :member_id");
    $checkStmt->execute(['event_id' => $selectedEventId, 'member_id' => $memberId]);
    $checkinRecord = $checkStmt->fetch();
    
    if ($checkinRecord) {
        $isCheckedIn = true;
        $isCheckedOut = !empty($checkinRecord['check_out_time']);
    }
    
    // Handle automatic check-in from public page
    if ($autoCheckin == 1 && !$isCheckedIn && $selectedEvent) {
        try {
            // Automatically record attendance
            $autoAttendStmt = $db->prepare("
                INSERT INTO event_attendance (
                    event_id, member_id, first_name, last_name, attendance_type, check_in_time
                ) VALUES (
                    :event_id, :member_id, :first_name, :last_name, 'walk_in', NOW()
                )
            ");
            
            $autoAttendStmt->execute([
                'event_id' => $selectedEventId,
                'member_id' => $memberId,
                'first_name' => $member['first_name'],
                'last_name' => $member['last_name']
            ]);
            
            $success = "Welcome! You have been automatically checked in to " . htmlspecialchars($selectedEvent['name']);
            
            // Refresh check-in status
            $checkStmt->execute(['event_id' => $selectedEventId, 'member_id' => $memberId]);
            $checkinRecord = $checkStmt->fetch();
            $isCheckedIn = true;
            $isCheckedOut = false;
            
            // Redirect to remove auto_checkin parameter
            header("Location: event-checkin.php?event_id=" . $selectedEventId);
            exit;
        } catch (Exception $e) {
            $error = "Auto check-in failed: " . $e->getMessage();
        }
    }
}

// Get settings for theme colors
$stmt = $db->query("SELECT * FROM general_settings ORDER BY id DESC LIMIT 1");
$settings = $stmt->fetch();
$settings = array_merge([
    'site_title' => APP_NAME,
    'theme_primary_color' => '#3B82F6',
    'theme_secondary_color' => '#10B981'
], $settings ?: []);
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?php echo $pageTitle; ?></title>
    <script src="https://cdn.tailwindcss.com"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
    <style>
        .gradient-bg { background: linear-gradient(135deg, #1E40AF 0%, #9333EA 50%, #F97316 100%); }
        .card-hover { transition: all 0.3s ease; }
        .card-hover:hover { transform: translateY(-2px); box-shadow: 0 12px 20px -5px rgba(0,0,0,0.1); }
    </style>
</head>
<body class="bg-gray-50">
    <!-- Member Portal Header -->
    <header class="bg-white shadow-lg sticky top-0 z-50">
        <div class="container mx-auto px-4">
            <div class="flex items-center justify-between h-16">
                <div class="flex items-center space-x-3">
                    <div class="w-10 h-10 rounded-xl flex items-center justify-center gradient-bg">
                        <i class="fas fa-church text-white"></i>
                    </div>
                    <div>
                        <h1 class="text-lg font-bold text-gray-800"><?php echo htmlspecialchars($settings['site_title']); ?></h1>
                        <p class="text-xs text-gray-500">Member Portal</p>
                    </div>
                </div>
                
                <nav class="hidden md:flex items-center space-x-6">
                    <a href="dashboard.php" class="text-gray-700 hover:text-blue-600 transition">
                        <i class="fas fa-home mr-1"></i>Dashboard
                    </a>
                    <a href="profile.php" class="text-gray-700 hover:text-blue-600 transition">
                        <i class="fas fa-user mr-1"></i>Profile
                    </a>
                    <a href="messages.php" class="text-gray-700 hover:text-blue-600 transition">
                        <i class="fas fa-comments mr-1"></i>Messages
                    </a>
                    <a href="event-checkin.php" class="text-green-600 font-medium border-b-2 border-green-600 pb-1">
                        <i class="fas fa-qrcode mr-1"></i>Event Check-in
                    </a>
                    <a href="transfer_request.php" class="text-gray-700 hover:text-blue-600 transition">
                        <i class="fas fa-exchange-alt mr-1"></i>Transfer
                    </a>
                </nav>
                
                <div class="flex items-center space-x-3">
                    <span class="text-sm text-gray-600 hidden md:block">Welcome, <?php echo htmlspecialchars($member['first_name'] ?? 'Member'); ?></span>
                    <a href="../logout.php?member=1" class="text-gray-600 hover:text-red-600 transition">
                        <i class="fas fa-sign-out-alt mr-1"></i>Logout
                    </a>
                </div>
            </div>
        </div>
    </header>

    <!-- Main Content -->
    <div class="container mx-auto px-4 py-8">
        <div class="max-w-4xl mx-auto">
            <!-- Header -->
            <div class="mb-6">
                <h1 class="text-3xl font-bold" style="background: linear-gradient(135deg, #1E40AF 0%, #9333EA 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent;">
                    <i class="fas fa-qrcode mr-2"></i>Event Check-in
                </h1>
                <p class="text-gray-600 mt-2">Check in to events and view your QR code</p>
            </div>
            
            <?php if ($success): ?>
                <div class="bg-green-100 border border-green-400 text-green-700 px-4 py-3 rounded-lg mb-6 flex items-center">
                    <i class="fas fa-check-circle mr-2"></i><?php echo $success; ?>
                </div>
            <?php endif; ?>
            
            <?php if ($error): ?>
                <div class="bg-red-100 border border-red-400 text-red-700 px-4 py-3 rounded-lg mb-6 flex items-center">
                    <i class="fas fa-exclamation-circle mr-2"></i><?php echo $error; ?>
                </div>
            <?php endif; ?>
            
            <!-- Event Selection -->
            <div class="bg-white rounded-xl shadow-lg p-6 mb-6">
                <h3 class="text-lg font-semibold mb-4">Select Event</h3>
                <form method="GET" class="space-y-4">
                    <select name="event_id" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500" onchange="this.form.submit()">
                        <option value="">Choose an event...</option>
                        <?php foreach ($events as $event): ?>
                            <option value="<?php echo $event['id']; ?>" <?php echo $selectedEventId == $event['id'] ? 'selected' : ''; ?>>
                                <?php echo htmlspecialchars($event['name']) . ' - ' . date('M j, Y', strtotime($event['start_date'])); ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </form>
            </div>
            
            <?php if ($selectedEvent): ?>
                <!-- Event Details -->
                <div class="bg-white rounded-xl shadow-lg p-6 mb-6">
                    <div class="flex items-start justify-between mb-4">
                        <div>
                            <h3 class="text-xl font-bold text-gray-800"><?php echo htmlspecialchars($selectedEvent['name']); ?></h3>
                            <p class="text-gray-600 mt-2"><?php echo htmlspecialchars($selectedEvent['description']); ?></p>
                        </div>
                        <?php if ($isCheckedIn): ?>
                            <?php if ($isCheckedOut): ?>
                                <span class="px-4 py-2 bg-blue-100 text-blue-800 rounded-full text-sm font-medium">
                                    <i class="fas fa-sign-out-alt mr-1"></i>Checked Out
                                </span>
                            <?php else: ?>
                                <span class="px-4 py-2 bg-green-100 text-green-800 rounded-full text-sm font-medium">
                                    <i class="fas fa-check-circle mr-1"></i>Checked In
                                </span>
                            <?php endif; ?>
                        <?php endif; ?>
                    </div>
                    <div class="flex flex-wrap gap-4 text-sm text-gray-600">
                        <span><i class="fas fa-calendar mr-1"></i><?php echo date('F j, Y', strtotime($selectedEvent['start_date'])); ?></span>
                        <span><i class="fas fa-clock mr-1"></i><?php echo date('g:i A', strtotime($selectedEvent['start_date'])); ?></span>
                        <span><i class="fas fa-map-marker-alt mr-1"></i><?php echo ucfirst($selectedEvent['location_type']); ?></span>
                    </div>
                </div>
                
                <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
                    <!-- QR Code Section -->
                    <div class="bg-white rounded-xl shadow-lg p-6">
                        <h4 class="text-lg font-semibold mb-4 text-center">Your Check-in QR Code</h4>
                        <div class="flex flex-col items-center space-y-4">
                            <div id="memberQRCode" class="bg-gray-50 p-6 rounded-lg">
                                <!-- QR Code will be generated here -->
                            </div>
                            <div class="text-center">
                                <p class="text-sm text-gray-600">Scan this QR code at the event</p>
                                <p class="text-xs text-gray-500 mt-1">Or use code: <span class="font-mono font-bold"><?php echo $member['membershipcard_id']; ?></span></p>
                            </div>
                        </div>
                    </div>
                    
                    <!-- Check-in/Check-out Action -->
                    <div class="bg-white rounded-xl shadow-lg p-6">
                        <h4 class="text-lg font-semibold mb-4">Event Status</h4>
                        
                        <?php if ($isCheckedIn): ?>
                            <?php if ($isCheckedOut): ?>
                                <!-- Already Checked Out -->
                                <div class="bg-blue-50 border border-blue-200 rounded-lg p-6 text-center">
                                    <i class="fas fa-sign-out-alt text-5xl text-blue-500 mb-4"></i>
                                    <h5 class="text-lg font-semibold text-gray-800 mb-2">Checked Out</h5>
                                    <div class="space-y-1 text-sm text-gray-600">
                                        <p>
                                            <i class="fas fa-sign-in-alt mr-1"></i>
                                            Check-in: <?php echo date('M j, Y g:i A', strtotime($checkinRecord['check_in_time'])); ?>
                                        </p>
                                        <p>
                                            <i class="fas fa-sign-out-alt mr-1"></i>
                                            Check-out: <?php echo date('M j, Y g:i A', strtotime($checkinRecord['check_out_time'])); ?>
                                        </p>
                                    </div>
                                </div>
                            <?php else: ?>
                                <!-- Checked In - Can Check Out -->
                                <div class="bg-green-50 border border-green-200 rounded-lg p-6 text-center">
                                    <i class="fas fa-check-circle text-5xl text-green-500 mb-4"></i>
                                    <h5 class="text-lg font-semibold text-gray-800 mb-2">Checked In</h5>
                                    <p class="text-sm text-gray-600 mb-4">
                                        <i class="fas fa-clock mr-1"></i>
                                        Checked in at: <?php echo date('M j, Y g:i A', strtotime($checkinRecord['check_in_time'])); ?>
                                    </p>
                                    
                                    <form method="POST" onsubmit="return confirm('Are you sure you want to check out?');">
                                        <input type="hidden" name="event_id" value="<?php echo $selectedEventId; ?>">
                                        <button type="submit" name="checkout" class="w-full px-6 py-4 rounded-lg text-white font-semibold text-lg shadow-lg hover:shadow-xl transition" style="background: linear-gradient(135deg, #DC2626 0%, #F97316 100%);">
                                            <i class="fas fa-sign-out-alt mr-2"></i>Check Out Now
                                        </button>
                                    </form>
                                </div>
                            <?php endif; ?>
                        <?php else: ?>
                            <!-- Not Checked In -->
                            <div class="space-y-4">
                                <p class="text-gray-600">Click the button below to check in to this event now.</p>
                                
                                <form method="POST">
                                    <input type="hidden" name="event_id" value="<?php echo $selectedEventId; ?>">
                                    <button type="submit" name="checkin" class="w-full px-6 py-4 rounded-lg text-white font-semibold text-lg shadow-lg hover:shadow-xl transition" style="background: linear-gradient(135deg, #1E40AF 0%, #F97316 100%);">
                                        <i class="fas fa-check-circle mr-2"></i>Check In Now
                                    </button>
                                </form>
                                
                                <div class="text-center text-sm text-gray-500">
                                    <p>Member: <?php echo htmlspecialchars($member['first_name'] . ' ' . $member['last_name']); ?></p>
                                    <p>Card ID: <?php echo htmlspecialchars($member['membershipcard_id']); ?></p>
                                </div>
                            </div>
                        <?php endif; ?>
                    </div>
                </div>
            <?php endif; ?>
        </div>
    </div>

    <!-- Footer -->
    <footer class="bg-gray-800 text-white py-6 mt-12">
        <div class="container mx-auto px-4 text-center">
            <p class="text-sm text-gray-400">
                © <?php echo date('Y'); ?> <?php echo htmlspecialchars($settings['site_title']); ?>. All rights reserved.
            </p>
        </div>
    </footer>

<script>
function generateMemberQRCode() {
    const memberId = '<?php echo $member['membershipcard_id']; ?>';
    const eventId = <?php echo $selectedEventId ?? 'null'; ?>;
    
    if (!eventId) return;
    
    // Generate QR code with member tracking code for scanning
    const qrData = `CHECKIN:${eventId}:MEMBER:${memberId}`;
    const qrUrl = `https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(qrData)}`;
    
    document.getElementById('memberQRCode').innerHTML = `<img src="${qrUrl}" alt="Member QR Code" class="w-48 h-48">`;
}

// Generate QR code on page load if event is selected
<?php if ($selectedEventId): ?>
    generateMemberQRCode();
<?php endif; ?>
</script>

<?php 
// Include Chat Hub Widget (Admin Chat + AI Chatbot)
if (file_exists(__DIR__ . '/../includes/chat-hub-widget.php')) {
    include '../includes/chat-hub-widget.php';
}
?>
</body>
</html>

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists