File manager - Edit - /home/webapp69.cm.in.th/u69319090042/Shop/admin_dashboard.php
Back
<?php require_once 'config.php'; // Access Control if (!isAdmin()) { header('Location: login.php'); exit; } // 1. Calculate Stats // Total Sales $stmt_sales = $pdo->query("SELECT SUM(net_amount) as total_sales FROM orders"); $total_sales = $stmt_sales->fetch()['total_sales'] ?? 0; // Total Orders $stmt_orders = $pdo->query("SELECT COUNT(*) as total_orders FROM orders"); $total_orders = $stmt_orders->fetch()['total_orders'] ?? 0; // Total Customers $stmt_users = $pdo->query("SELECT COUNT(*) as total_customers FROM users WHERE role = 'customer'"); $total_customers = $stmt_users->fetch()['total_customers'] ?? 0; // Low Stock Alert (quantity < 5) $stmt_stock = $pdo->query("SELECT COUNT(*) as low_stock FROM products WHERE stock < 5"); $low_stock = $stmt_stock->fetch()['low_stock'] ?? 0; // 2. Fetch Low Stock Items $low_stock_items = $pdo->query("SELECT p.*, c.name as category_name FROM products p LEFT JOIN categories c ON p.category_id = c.id WHERE p.stock < 5 ORDER BY p.stock ASC LIMIT 5")->fetchAll(); // 3. Fetch Recent Orders $recent_orders = $pdo->query("SELECT o.*, u.full_name FROM orders o JOIN users u ON o.user_id = u.id ORDER BY o.id DESC LIMIT 5")->fetchAll(); ?> <?php include 'header.php'; ?> <div class="admin-container"> <!-- Admin Sidebar --> <aside class="sidebar"> <ul class="sidebar-menu"> <li> <a href="admin_dashboard.php" class="sidebar-link active">📊 Dashboard Overview</a> </li> <li> <a href="admin_products.php" class="sidebar-link">👗 Manage Clothes</a> </li> <li> <a href="admin_orders.php" class="sidebar-link">📦 Manage Orders</a> </li> <li> <a href="index.php" class="sidebar-link" style="margin-top: 30px; border-top: 1px solid var(--gray-border); padding-top: 20px;">🌐 Go to Shop</a> </li> </ul> </aside> <!-- Admin Content Area --> <main class="admin-main"> <div class="section-title"> <span>Admin Control Panel Overview</span> </div> <!-- Stats Grid --> <div class="stats-grid"> <div class="stat-card"> <h4>Total Revenue</h4> <div class="value" style="color: var(--success);">฿<?php echo number_format($total_sales, 2); ?></div> </div> <div class="stat-card"> <h4>Total Orders</h4> <div class="value"><?php echo $total_orders; ?></div> </div> <div class="stat-card"> <h4>Customers</h4> <div class="value"><?php echo $total_customers; ?></div> </div> <div class="stat-card" style="<?php echo $low_stock > 0 ? 'border-color: var(--danger); background: #fff0f0;' : ''; ?>"> <h4>Low Stock Items</h4> <div class="value" style="<?php echo $low_stock > 0 ? 'color: var(--danger);' : ''; ?>"><?php echo $low_stock; ?></div> </div> </div> <!-- Alerts --> <?php if ($low_stock > 0): ?> <div class="alert alert-danger" style="display: flex; justify-content: space-between; align-items: center;"> <span>⚠️ Attention: You have <strong><?php echo $low_stock; ?> items</strong> running low on stock!</span> <a href="admin_products.php" style="text-decoration: underline; font-weight: bold;">Restock Now</a> </div> <?php endif; ?> <!-- Low Stock Items Details --> <?php if (!empty($low_stock_items)): ?> <div class="table-container" style="margin-bottom: 40px;"> <h3 style="font-weight: 700; margin-bottom: 15px;">Low Stock Outfits Alert</h3> <table> <thead> <tr> <th>Image</th> <th>Outfit Name</th> <th>Category</th> <th>Price</th> <th>Stock Left</th> <th>Action</th> </tr> </thead> <tbody> <?php foreach ($low_stock_items as $item): ?> <tr> <td> <img src="<?php echo htmlspecialchars($item['image_url']); ?>" alt="" style="width: 40px; height: 50px; object-fit: cover; border-radius: var(--radius-sm);"> </td> <td><strong><?php echo htmlspecialchars($item['name']); ?></strong></td> <td><?php echo htmlspecialchars($item['category_name'] ?? 'General'); ?></td> <td>฿<?php echo number_format($item['price'], 2); ?></td> <td style="color: var(--danger); font-weight: bold;"><?php echo $item['stock']; ?></td> <td> <a href="admin_products.php?edit=<?php echo $item['id']; ?>" class="btn btn-outline" style="padding: 5px 12px; font-size: 12px;">Edit Stock</a> </td> </tr> <?php endforeach; ?> </tbody> </table> </div> <?php endif; ?> <!-- Recent Orders Details --> <div class="table-container"> <h3 style="font-weight: 700; margin-bottom: 15px;">Recent Orders</h3> <?php if (empty($recent_orders)): ?> <p style="color: var(--text-muted); text-align: center; padding: 20px;">No orders recorded yet.</p> <?php else: ?> <table> <thead> <tr> <th>Order ID</th> <th>Customer</th> <th>Net Total</th> <th>Status</th> <th>Order Date</th> <th>Action</th> </tr> </thead> <tbody> <?php foreach ($recent_orders as $order): ?> <tr> <td><strong>#ORD-<?php echo str_pad($order['id'], 6, '0', STR_PAD_LEFT); ?></strong></td> <td><?php echo htmlspecialchars($order['full_name']); ?></td> <td>฿<?php echo number_format($order['net_amount'], 2); ?></td> <td> <span class="badge badge-<?php echo $order['status']; ?>"> <?php echo ucfirst($order['status']); ?> </span> </td> <td><?php echo date('d M Y H:i', strtotime($order['created_at'])); ?></td> <td> <a href="admin_orders.php" class="btn btn-primary" style="padding: 5px 12px; font-size: 12px;">Manage</a> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif; ?> </div> </main> </div> <?php include 'footer.php'; ?>
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.25 |
proxy
|
phpinfo
|
Settings