<?php
require_once '../config/database.php';
require_once '../includes/auth.php';
requireAdmin();
$database = new Database();
$db = $database->getConnection();
$search = isset($_GET['search']) ? $_GET['search'] : '';
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$limit = 10;
$offset = ($page - 1) * $limit;
// Build query
$query = "SELECT * FROM users WHERE role = 'user'";
$count_query = "SELECT COUNT(*) as total FROM users WHERE role = 'user'";
$params = [];
if ($search) {
$query .= " AND (name LIKE ? OR email LIKE ? OR phone LIKE ?)";
$count_query .= " AND (name LIKE ? OR email LIKE ? OR phone LIKE ?)";
$search_term = "%$search%";
$params = [$search_term, $search_term, $search_term];
}
$query .= " ORDER BY created_at DESC LIMIT $limit OFFSET $offset";
// Get total count
$stmt = $db->prepare($count_query);
$stmt->execute($params);
$total_records = $stmt->fetch(PDO::FETCH_ASSOC)['total'];
$total_pages = ceil($total_records / $limit);
// Get users
$stmt = $db->prepare($query);
$stmt->execute($params);
$users = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Manage Users - Opti-Vision Eye Clinic</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
<link href="../assets/css/style.css" rel="stylesheet">
</head>
<body class="bg-light">
<!-- Navigation -->
<nav class="navbar navbar-expand-lg navbar-dark bg-primary shadow-sm">
<div class="container-fluid">
<a class="navbar-brand fw-bold" href="../index.php">
<i class="fas fa-eye me-2"></i>Opti-Vision Admin
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item">
<a class="nav-link" href="dashboard.php">Dashboard</a>
</li>
<li class="nav-item">
<a class="nav-link" href="appointments.php">Appointments</a>
</li>
<li class="nav-item">
<a class="nav-link active" href="users.php">Users</a>
</li>
<li class="nav-item">
<a class="nav-link" href="services.php">Services</a>
</li>
<li class="nav-item">
<a class="nav-link" href="doctors.php">Doctors</a>
</li>
<li class="nav-item">
<a class="nav-link" href="messages.php">Messages</a>
</li>
<li class="nav-item">
<a class="nav-link" href="../logout.php">Logout</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container-fluid py-4">
<div class="row">
<div class="col-12">
<div class="d-flex justify-content-between align-items-center mb-4">
<h2 class="fw-bold">Manage Users</h2>
<div class="d-flex gap-2">
<a href="dashboard.php" class="btn btn-outline-secondary">
<i class="fas fa-arrow-left me-2"></i>Back to Dashboard
</a>
</div>
</div>
<!-- Search -->
<div class="card dashboard-card mb-4">
<div class="card-body">
<form method="GET" class="row g-3">
<div class="col-md-8">
<input type="text" class="form-control" name="search"
placeholder="Search by name, email, or phone..."
value="<?php echo htmlspecialchars($search); ?>">
</div>
<div class="col-md-4">
<button type="submit" class="btn btn-primary">
<i class="fas fa-search me-2"></i>Search
</button>
</div>
</form>
</div>
</div>
<!-- Users Table -->
<div class="card dashboard-card">
<div class="card-body">
<?php if (empty($users)): ?>
<div class="text-center py-5">
<i class="fas fa-users fa-3x text-muted mb-3"></i>
<h5 class="text-muted">No users found</h5>
<p class="text-muted">Try adjusting your search criteria.</p>
</div>
<?php else: ?>
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
<th>Phone</th>
<th>Registered</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<?php foreach($users as $user): ?>
<tr>
<td>#<?php echo $user['id']; ?></td>
<td>
<strong><?php echo htmlspecialchars($user['name']); ?></strong>
</td>
<td><?php echo htmlspecialchars($user['email']); ?></td>
<td><?php echo htmlspecialchars($user['phone']); ?></td>
<td><?php echo date('M d, Y', strtotime($user['created_at'])); ?></td>
<td>
<div class="btn-group btn-group-sm">
<button class="btn btn-outline-primary"
onclick="viewUser(<?php echo $user['id']; ?>)"
title="View Details">
<i class="fas fa-eye"></i>
</button>
<button class="btn btn-outline-info"
onclick="viewAppointments(<?php echo $user['id']; ?>)"
title="View Appointments">
<i class="fas fa-calendar"></i>
</button>
</div>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<!-- Pagination -->
<?php if ($total_pages > 1): ?>
<nav aria-label="Users pagination" class="mt-4">
<ul class="pagination justify-content-center">
<?php if ($page > 1): ?>
<li class="page-item">
<a class="page-link" href="?page=<?php echo $page - 1; ?>&search=<?php echo urlencode($search); ?>">Previous</a>
</li>
<?php endif; ?>
<?php for ($i = 1; $i <= $total_pages; $i++): ?>
<li class="page-item <?php echo $i == $page ? 'active' : ''; ?>">
<a class="page-link" href="?page=<?php echo $i; ?>&search=<?php echo urlencode($search); ?>"><?php echo $i; ?></a>
</li>
<?php endfor; ?>
<?php if ($page < $total_pages): ?>
<li class="page-item">
<a class="page-link" href="?page=<?php echo $page + 1; ?>&search=<?php echo urlencode($search); ?>">Next</a>
</li>
<?php endif; ?>
</ul>
</nav>
<?php endif; ?>
<?php endif; ?>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
<script>
function viewUser(id) {
alert('View user details feature will be implemented soon.');
}
function viewAppointments(id) {
window.location.href = 'appointments.php?user_id=' + id;
}
</script>
</body>
</html>