From f498624eff07b85ec6cc7568fd7ea4d82aa3ac1a Mon Sep 17 00:00:00 2001 From: NotII <46204250+NotII@users.noreply.github.com> Date: Tue, 25 Feb 2025 13:12:20 +0000 Subject: [PATCH] Cleanup --- app/dashboard/orders/[id]/page.tsx | 539 +++++++++++++++++------------ components/tables/order-table.tsx | 55 ++- 2 files changed, 357 insertions(+), 237 deletions(-) diff --git a/app/dashboard/orders/[id]/page.tsx b/app/dashboard/orders/[id]/page.tsx index 3a18e62..6d199e5 100644 --- a/app/dashboard/orders/[id]/page.tsx +++ b/app/dashboard/orders/[id]/page.tsx @@ -24,7 +24,7 @@ import { CardTitle, } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; -import { Clipboard, Truck, Package, ArrowRight } from "lucide-react"; +import { Clipboard, Truck, Package, ArrowRight, ChevronDown } from "lucide-react"; import { useRouter } from "next/navigation"; import { toast } from "sonner"; import { @@ -38,6 +38,12 @@ import { AlertDialogTitle, AlertDialogTrigger, } from "@/components/ui/alert-dialog"; +import Layout from "@/components/layout/layout"; +import { + Collapsible, + CollapsibleContent, + CollapsibleTrigger, +} from "@/components/ui/collapsible"; interface Order { orderId: string; @@ -58,16 +64,20 @@ interface Order { const getStatusVariant = (status: string) => { switch (status) { + case 'acknowledged': + return 'secondary'; case 'paid': - return 'paid'; + return 'default'; case 'shipped': - return 'shipped'; + return 'default'; case 'completed': - return 'completed'; + return 'default'; case 'cancelled': return 'destructive'; + case 'unpaid': + return 'secondary'; default: - return 'unpaid'; + return 'secondary'; } }; @@ -87,6 +97,7 @@ export default function OrderDetailsPage() { const [currentOrderNumber, setCurrentOrderNumber] = useState(0); const [totalPages, setTotalPages] = useState(1); const [currentPage, setCurrentPage] = useState(1); + const [isAcknowledging, setIsAcknowledging] = useState(false); const router = useRouter(); const params = useParams(); @@ -177,9 +188,9 @@ export default function OrderDetailsPage() { } }; - const handleDiscardOrder = async () => { + const handleMarkAsAcknowledged = async () => { try { - setIsDiscarding(true); + setIsAcknowledging(true); const authToken = document.cookie.split("Authorization=")[1]; const response = await fetchData( `${process.env.NEXT_PUBLIC_API_URL}/orders/${orderId}`, @@ -189,19 +200,47 @@ export default function OrderDetailsPage() { "Content-Type": "application/json", Authorization: `Bearer ${authToken}`, }, - body: JSON.stringify({ status: "cancelled" }), + body: JSON.stringify({ status: "acknowledged" }), } ); if (response && response.message === "Order status updated successfully") { - setOrder((prevOrder) => prevOrder ? { ...prevOrder, status: "cancelled" } : null); - toast.success("Order discarded successfully!"); + setOrder((prevOrder) => prevOrder ? { ...prevOrder, status: "acknowledged" } : null); + toast.success("Order marked as acknowledged!"); } else { - throw new Error(response.error || "Failed to discard order"); + throw new Error(response.error || "Failed to mark order as acknowledged"); } } catch (error: any) { - console.error("Failed to discard order:", error); - toast.error(error.message || "Failed to discard order"); + console.error("Failed to mark order as acknowledged:", error); + toast.error(error.message || "Failed to mark order as acknowledged"); + } finally { + setIsAcknowledging(false); + } + }; + + const handleDiscardOrder = async () => { + try { + setIsDiscarding(true); + const authToken = document.cookie.split("Authorization=")[1]; + const response = await fetchData( + `${process.env.NEXT_PUBLIC_API_URL}/orders/${orderId}`, + { + method: "DELETE", + headers: { + Authorization: `Bearer ${authToken}`, + }, + } + ); + + if (response && response.message === "Order deleted successfully") { + toast.success("Order deleted successfully!"); + router.push('/dashboard/orders'); + } else { + throw new Error(response.error || "Failed to delete order"); + } + } catch (error: any) { + console.error("Failed to delete order:", error); + toast.error(error.message || "Failed to delete order"); } finally { setIsDiscarding(false); } @@ -345,235 +384,281 @@ export default function OrderDetailsPage() { }; if (loading) - return
Loading order details...
; + return ( + +
Loading order details...
+
+ ); if (error) - return
Error: {error}
; + return ( + +
Error: {error}
+
+ ); return ( -
-
-
-
-

Order Details: {order?.orderId}

+ +
+
+
+
+

Order Details: {order?.orderId}

+
+
+ + {order?.status} + +
+
+ + {/* Order Navigation - Moved to top */} +
+
+ {nextOrderId && ( + + )} +
+
+ Navigate Orders +
+
+ {prevOrderId && ( + + )} +
+
+ +
+ + + PGP Encrypted Address + + Securely encrypted delivery address + + + +