import React from "react"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Package, AlertTriangle } from "lucide-react"; import { fetchServer } from "@/lib/api"; import OrdersTable from "@/components/admin/OrdersTable"; export const dynamic = 'force-dynamic'; interface Order { orderId: string | number; userId: string; total: number; createdAt: string; status: string; items: Array<{ name: string; quantity: number; }>; vendorUsername?: string; } interface SystemStats { vendors: number; orders: number; products: number; chats: number; } export default async function AdminOrdersPage() { let orders: Order[] = []; let systemStats: SystemStats | null = null; let error: string | null = null; try { const [ordersData, statsData] = await Promise.all([ fetchServer("/admin/recent-orders"), fetchServer("/admin/stats") ]); orders = ordersData; systemStats = statsData; } catch (err) { console.error("Failed to fetch data:", err); error = "Failed to load data"; } if (error) { return (

Recent Orders

Monitor and manage platform orders

{error}

); } const acknowledgedOrders = orders.filter(o => o.status === 'acknowledged'); const paidOrders = orders.filter(o => o.status === 'paid'); const completedOrders = orders.filter(o => o.status === 'completed'); const cancelledOrders = orders.filter(o => o.status === 'cancelled'); return (

Recent Orders

Monitor and manage platform orders

{/* Stats Cards */}
Total Orders
{systemStats?.orders || 0}

All platform orders

Acknowledged
{acknowledgedOrders.length}

Vendor accepted

Paid
{paidOrders.length}

Payment received

Completed
{completedOrders.length}

Successfully delivered

{/* Orders Table with Pagination */} {/* Order Analytics */}
Order Status Distribution Breakdown of recent orders by status
Acknowledged
{orders.length > 0 ? Math.round((acknowledgedOrders.length / orders.length) * 100) : 0}%
Paid
{orders.length > 0 ? Math.round((paidOrders.length / orders.length) * 100) : 0}%
Completed
{orders.length > 0 ? Math.round((completedOrders.length / orders.length) * 100) : 0}%
Cancelled
{orders.length > 0 ? Math.round((cancelledOrders.length / orders.length) * 100) : 0}%
Order Summary Recent order activity breakdown
Total Recent Orders {orders.length}
Acknowledged {acknowledgedOrders.length}
Paid {paidOrders.length}
Completed {completedOrders.length}
Cancelled {cancelledOrders.length}
); }