import React from "react"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"; import { Search, Ban, UserCheck, UserX, Package, DollarSign } from "lucide-react"; import { fetchServer } from "@/lib/api"; interface TelegramUser { telegramUserId: string; telegramUsername: string; totalOrders: number; totalSpent: number; paidOrders: number; completedOrders: number; firstOrderDate: string | null; lastOrderDate: string | null; isBlocked: boolean; blockedReason: string | null; createdAt?: string; } function formatCurrency(amount: number): string { return new Intl.NumberFormat('en-GB', { style: 'currency', currency: 'GBP', }).format(amount); } export default async function AdminUsersPage() { let users: TelegramUser[] = []; let error: string | null = null; try { users = await fetchServer("/admin/users"); } catch (err) { console.error("Failed to fetch users:", err); error = "Failed to load users"; } if (error) { return (

Telegram Users

Manage Telegram user accounts

{error}

); } const usersWithOrders = users.filter(u => u.totalOrders > 0); const blockedUsers = users.filter(u => u.isBlocked); const totalSpent = users.reduce((sum, u) => sum + u.totalSpent, 0); const totalOrders = users.reduce((sum, u) => sum + u.totalOrders, 0); return (

Telegram Users

Manage Telegram user accounts and view statistics

{/* Stats Cards */}
Total Users
{users.length}

Registered users

Users with Orders
{usersWithOrders.length}

{users.length > 0 ? Math.round((usersWithOrders.length / users.length) * 100) : 0}% conversion rate

Total Revenue
{formatCurrency(totalSpent)}

{totalOrders} total orders

Blocked Users
{blockedUsers.length}

{users.length > 0 ? Math.round((blockedUsers.length / users.length) * 100) : 0}% blocked rate

{/* Search and Filters */}
User Management View and manage all Telegram user accounts
User ID Username Orders Total Spent Status First Order Last Order Actions {users.map((user) => (
{user.telegramUserId}
{user.telegramUsername !== "Unknown" ? `@${user.telegramUsername}` : "Unknown"}
{user.totalOrders} {user.completedOrders > 0 && ( {user.completedOrders} completed )}
{formatCurrency(user.totalSpent)}
{user.isBlocked ? ( Blocked ) : user.totalOrders > 0 ? ( Active ) : ( No Orders )} {user.blockedReason && ( {user.blockedReason} )}
{user.firstOrderDate ? new Date(user.firstOrderDate).toLocaleDateString() : 'N/A'} {user.lastOrderDate ? new Date(user.lastOrderDate).toLocaleDateString() : 'N/A'}
{!user.isBlocked ? ( ) : ( )}
))}
); }