diff --git a/admin.php b/admin.php index e7ae688..842a6cc 100644 --- a/admin.php +++ b/admin.php @@ -1,3 +1,71 @@ + 'N/A', + 'active_deals' => 'N/A', + 'volume_ton' => 'N/A', + 'pending_disputes' => 'N/A', +]; + +try { + $pdo = db(); + + // Total Users + $stmt = $pdo->query('SELECT COUNT(*) FROM users'); + $stats['total_users'] = $stmt->fetchColumn(); + + // Active Deals + $stmt = $pdo->query("SELECT COUNT(*) FROM orders WHERE status IN ('PENDING_CONFIRMATION', 'AWAITING_PAYMENT', 'AWAITING_SELLER_CONFIRMATION')"); + $stats['active_deals'] = $stmt->fetchColumn(); + + // Volume (TON) + $stmt = $pdo->query("SELECT SUM(amount_crypto) FROM orders WHERE currency = 'TON' AND status = 'COMPLETED'"); + $volume = $stmt->fetchColumn(); + $stats['volume_ton'] = $volume ? round($volume, 2) : 0; + + // Pending Disputes + $stmt = $pdo->query("SELECT COUNT(*) FROM disputes WHERE status = 'OPEN'"); + $stats['pending_disputes'] = $stmt->fetchColumn(); + + // Chart Data: Deals Over Time (Last 7 Days) + $deals_chart_data = $pdo->query( + "SELECT DATE(created_at) as date, COUNT(*) as count + FROM orders + WHERE created_at >= CURDATE() - INTERVAL 7 DAY + GROUP BY DATE(created_at) + ORDER BY date ASC" + )->fetchAll(PDO::FETCH_ASSOC); + + // Chart Data: Volume by Currency + $volume_chart_data = $pdo->query( + "SELECT ad.currency, SUM(o.amount_crypto) as total_volume + FROM orders o + JOIN ads ad ON o.ad_id = ad.id + WHERE o.status = 'COMPLETED' + GROUP BY ad.currency" + )->fetchAll(PDO::FETCH_ASSOC); + + + // Recent Activity + $stmt = $pdo->query( + "SELECT a.action, a.details, a.created_at, u.nickname + FROM audit_log a + LEFT JOIN users u ON a.user_id = u.id + ORDER BY a.created_at DESC + LIMIT 10" + ); + $recent_activity = $stmt->fetchAll(PDO::FETCH_ASSOC); + +} catch (Exception $e) { + error_log($e->getMessage()); + // Stats will show 'N/A' on error + $recent_activity = []; + $deals_chart_data = []; + $volume_chart_data = []; +} + +?> @@ -26,37 +94,37 @@