File manager - Edit - /home/webapp69.cm.in.th/u69319090041/Shop41/public/admin/index.php
Back
<?php require_once __DIR__ . '/../../config/config.php'; require_once __DIR__ . '/../../includes/auth.php'; requireAdmin(); $db = getDBConnection(); // Metrics calculations $todayRevenue = $db->query("SELECT SUM(total_amount) FROM orders WHERE DATE(created_at) = CURDATE() AND payment_status = 'paid'")->fetchColumn() ?: 0.00; $monthRevenue = $db->query("SELECT SUM(total_amount) FROM orders WHERE MONTH(created_at) = MONTH(CURDATE()) AND YEAR(created_at) = YEAR(CURDATE()) AND payment_status = 'paid'")->fetchColumn() ?: 0.00; $totalOrders = $db->query("SELECT COUNT(*) FROM orders")->fetchColumn(); $pendingOrders = $db->query("SELECT COUNT(*) FROM orders WHERE order_status = 'pending'")->fetchColumn(); // Vendor metrics $totalVendors = $db->query("SELECT COUNT(*) FROM vendors WHERE status='approved'")->fetchColumn(); $pendingVendorApps= $db->query("SELECT COUNT(*) FROM vendor_applications WHERE status='pending'")->fetchColumn(); // Latest orders $latestOrders = $db->query("SELECT o.*, u.fullname FROM orders o JOIN users u ON o.user_id = u.id ORDER BY o.created_at DESC LIMIT 5")->fetchAll(); // Best selling items $bestSelling = $db->query("SELECT product_name, SUM(quantity) as total_qty, SUM(subtotal) as total_sales FROM order_items GROUP BY product_name ORDER BY total_qty DESC LIMIT 5")->fetchAll(); require_once __DIR__ . '/../../includes/admin_header.php'; ?> <div class="row g-3 mb-4"> <div class="col-md-2"> <div class="card card-custom p-3 border-start border-4 border-primary"> <div class="text-muted small">ð° āļĒāļāļāļāļēāļĒāļ§āļąāļāļāļĩāđ</div> <h4 class="fw-bold text-primary mb-0">āļŋ<?php echo number_format($todayRevenue, 0); ?></h4> </div> </div> <div class="col-md-2"> <div class="card card-custom p-3 border-start border-4 border-success"> <div class="text-muted small">ð āļĒāļāļāļāļēāļĒāđāļāļ·āļāļāļāļĩāđ</div> <h4 class="fw-bold text-success mb-0">āļŋ<?php echo number_format($monthRevenue, 0); ?></h4> </div> </div> <div class="col-md-2"> <div class="card card-custom p-3 border-start border-4 border-info"> <div class="text-muted small">ðĶ āļāļāđāļāļāļĢāđāļāļąāđāļāļŦāļĄāļ</div> <h4 class="fw-bold text-info mb-0"><?php echo number_format($totalOrders); ?></h4> </div> </div> <div class="col-md-2"> <div class="card card-custom p-3 border-start border-4 border-warning"> <div class="text-muted small">âģ āļĢāļāļāļēāļĢāļāļĢāļ§āļāļŠāļāļ</div> <h4 class="fw-bold text-warning mb-0"><?php echo number_format($pendingOrders); ?></h4> </div> </div> <div class="col-md-2"> <div class="card card-custom p-3 border-start border-4 border-purple" style="border-color:#7c3aed!important"> <div class="text-muted small">ðŠ āļĢāđāļēāļāļāđāļēāđāļāļĢāļ°āļāļ</div> <h4 class="fw-bold mb-0" style="color:#7c3aed"><?php echo number_format($totalVendors); ?></h4> </div> </div> <div class="col-md-2"> <div class="card card-custom p-3 border-start border-4 border-danger"> <div class="text-muted small">ð āļĢāļāļāļāļļāļĄāļąāļāļīāļĢāđāļēāļāļāđāļē</div> <h4 class="fw-bold text-danger mb-0"> <?php echo number_format($pendingVendorApps); ?> <?php if ($pendingVendorApps > 0): ?> <a href="vendors.php?tab=applications" class="btn btn-danger btn-sm rounded-pill ms-1" style="font-size:10px">āļāļđ</a> <?php endif; ?> </h4> </div> </div> </div> <!-- Chart.js Sales Graph --> <div class="card card-custom p-4 mb-4"> <h5 class="fw-bold mb-3">ð āļāļĢāļēāļāļŠāļĢāļļāļāļĒāļāļāļāļēāļĒ 7 āļ§āļąāļāļĨāđāļēāļŠāļļāļ</h5> <canvas id="salesChart" style="max-height: 300px;"></canvas> </div> <div class="row g-4"> <!-- Latest Orders --> <div class="col-md-7"> <div class="card card-custom p-4 h-100"> <div class="d-flex justify-content-between align-items-center mb-3"> <h5 class="fw-bold mb-0">ð āļāļāđāļāļāļĢāđāļĨāđāļēāļŠāļļāļ</h5> <a href="orders.php" class="btn btn-sm btn-outline-primary rounded-pill">āļāļđāļāļąāđāļāļŦāļĄāļ</a> </div> <table class="table table-hover align-middle"> <thead> <tr> <th>Order No</th> <th>āļĨāļđāļāļāđāļē</th> <th>āļĒāļāļāļĢāļ§āļĄ</th> <th>āļŠāļāļēāļāļ°</th> </tr> </thead> <tbody> <?php foreach ($latestOrders as $o): ?> <tr> <td class="fw-bold">#<?php echo sanitize($o['order_no']); ?></td> <td><?php echo sanitize($o['fullname']); ?></td> <td>āļŋ<?php echo number_format($o['total_amount'], 2); ?></td> <td><span class="badge bg-warning text-dark"><?php echo strtoupper($o['order_status']); ?></span></td> </tr> <?php endforeach; ?> </tbody> </table> </div> </div> <!-- Best Sellers --> <div class="col-md-5"> <div class="card card-custom p-4 h-100"> <h5 class="fw-bold mb-3">ðĨ āļŠāļīāļāļāđāļēāļāļēāļĒāļāļĩ</h5> <ul class="list-group list-group-flush"> <?php foreach ($bestSelling as $bs): ?> <li class="list-group-item bg-transparent d-flex justify-content-between align-items-center px-0"> <div> <h6 class="mb-0 fw-bold"><?php echo sanitize($bs['product_name']); ?></h6> <small class="text-muted">āļāļēāļĒāđāļĨāđāļ§: <?php echo $bs['total_qty']; ?> āļāļīāđāļ</small> </div> <span class="fw-bold text-primary">āļŋ<?php echo number_format($bs['total_sales'], 2); ?></span> </li> <?php endforeach; ?> </ul> </div> </div> </div> <script> document.addEventListener('DOMContentLoaded', () => { const ctx = document.getElementById('salesChart').getContext('2d'); new Chart(ctx, { type: 'line', data: { labels: ['Day 1', 'Day 2', 'Day 3', 'Day 4', 'Day 5', 'Day 6', 'Today'], datasets: [{ label: 'āļĒāļāļāļāļēāļĒ (āļāļēāļ)', data: [1200, 1900, 3000, 2500, 4200, 3800, <?php echo $todayRevenue; ?>], borderColor: '#4f46e5', backgroundColor: 'rgba(79, 70, 229, 0.1)', fill: true, tension: 0.4 }] }, options: { responsive: true, maintainAspectRatio: false } }); }); </script> <?php require_once __DIR__ . '/../../includes/admin_footer.php'; ?>
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.24 |
proxy
|
phpinfo
|
Settings