i need a shit

This commit is contained in:
NotII
2025-07-17 11:06:58 +01:00
parent 18e87721e2
commit 57e130a247
5 changed files with 242 additions and 60 deletions

View File

@@ -27,7 +27,8 @@ import {
ChevronRight,
ArrowUpDown,
Truck,
MessageCircle
MessageCircle,
AlertTriangle
} from "lucide-react";
import Link from "next/link";
import { clientFetch } from '@/lib/api';
@@ -53,6 +54,10 @@ interface Order {
orderDate: Date;
telegramUsername?: string;
telegramBuyerId?: string;
underpaid?: boolean;
underpaymentAmount?: number;
lastBalanceReceived?: number;
cryptoTotal?: number;
}
type SortableColumns = "orderId" | "totalPrice" | "status" | "orderDate";
@@ -281,6 +286,27 @@ export default function OrderTable() {
}
};
// Helper function to determine if order is underpaid
const isOrderUnderpaid = (order: Order) => {
return order.underpaid === true && order.underpaymentAmount && order.underpaymentAmount > 0;
};
// Helper function to get underpaid display info
const getUnderpaidInfo = (order: Order) => {
if (!isOrderUnderpaid(order)) return null;
const received = order.lastBalanceReceived || 0;
const required = order.cryptoTotal || 0;
const missing = order.underpaymentAmount || 0;
return {
received,
required,
missing,
percentage: required > 0 ? ((received / required) * 100).toFixed(1) : 0
};
};
return (
<div className="space-y-4">
<div className="border border-zinc-800 rounded-md bg-black/40 overflow-hidden">
@@ -368,6 +394,7 @@ export default function OrderTable() {
<TableBody>
{paginatedOrders.map((order) => {
const StatusIcon = statusConfig[order.status as keyof typeof statusConfig]?.icon || XCircle;
const underpaidInfo = getUnderpaidInfo(order);
return (
<TableRow key={order._id}>
@@ -379,15 +406,32 @@ export default function OrderTable() {
/>
</TableCell>
<TableCell>#{order.orderId}</TableCell>
<TableCell>£{order.totalPrice.toFixed(2)}</TableCell>
<TableCell>
<div className={`inline-flex items-center gap-2 px-3 py-1 rounded-full text-sm ${
statusConfig[order.status as OrderStatus]?.bgColor || "bg-gray-500"
} ${statusConfig[order.status as OrderStatus]?.color || "text-white"}`}>
{React.createElement(statusConfig[order.status as OrderStatus]?.icon || XCircle, {
className: `h-4 w-4 ${statusConfig[order.status as OrderStatus]?.animate || ""}`
})}
{order.status.charAt(0).toUpperCase() + order.status.slice(1)}
<div className="flex flex-col">
<span>£{order.totalPrice.toFixed(2)}</span>
{underpaidInfo && (
<span className="text-xs text-red-400">
Missing: £{(underpaidInfo.missing * 100).toFixed(2)}
</span>
)}
</div>
</TableCell>
<TableCell>
<div className="flex items-center gap-2">
<div className={`inline-flex items-center gap-2 px-3 py-1 rounded-full text-sm ${
statusConfig[order.status as OrderStatus]?.bgColor || "bg-gray-500"
} ${statusConfig[order.status as OrderStatus]?.color || "text-white"}`}>
{React.createElement(statusConfig[order.status as OrderStatus]?.icon || XCircle, {
className: `h-4 w-4 ${statusConfig[order.status as OrderStatus]?.animate || ""}`
})}
{order.status.charAt(0).toUpperCase() + order.status.slice(1)}
</div>
{isOrderUnderpaid(order) && (
<div className="flex items-center gap-1 px-2 py-0.5 rounded text-xs bg-red-600 text-white">
<AlertTriangle className="h-3 w-3" />
{underpaidInfo?.percentage}%
</div>
)}
</div>
</TableCell>
<TableCell>