"use client";
import React from "react";
import { motion, AnimatePresence } from "motion/react";
import {
X,
Printer,
Download,
Package,
ShoppingBag,
MapPin,
Calendar,
Clock,
CreditCard,
CheckCircle2,
AlertCircle,
Truck,
Sparkles,
Heart
} from "lucide-react";
import { toPersian, cn } from "../lib/utils";
import SafeImage from "./SafeImage";
interface OrderDetailsModalProps {
isOpen: boolean;
onClose: () => void;
order: any;
}
export default function OrderDetailsModal({ isOpen, onClose, order }: OrderDetailsModalProps) {
if (!order) return null;
const getProductName = (p: any) => p?.nameFa || p?.name || p?.nameEn || 'محصول کانینا';
const getProductImage = (p: any) => p?.imageUrl || p?.image || '/products/product-placeholder.png';
const displayTrackingCode = order.trackingNumber || order.id?.substring(0, 8) || 'CN-0000';
const orderDate = new Date(order.date || order.createdAt);
const formattedDate = orderDate.toLocaleDateString("fa-IR");
const formattedTime = orderDate.toLocaleTimeString("fa-IR", { hour: '2-digit', minute: '2-digit' });
const items = order.items || order.orderItems || [];
const itemsSubtotal = items.reduce((sum: number, item: any) => {
const price = Number(item.product?.priceValue || item.priceValue || 0);
return sum + price * (item.quantity || 1);
}, 0);
const charityAmount = Number(order.charityDonation || 0);
const totalAmount = Number(order.total || order.totalAmount || itemsSubtotal + charityAmount);
const isRefill = Boolean(order.isRefill);
const refillDiscount = isRefill ? Math.round(itemsSubtotal * 0.05) : 0;
const paymentMethodText = order.paymentMethod === 'wallet' ? 'پرداخت از کیف پول الکترونیک' : 'پرداخت آنلاین از درگاه شتاب';
const handlePrint = () => {
const printWindow = window.open('', '_blank');
if (!printWindow) return;
const itemsHtml = items.map((item: any) => {
const pName = getProductName(item.product);
const pImg = getProductImage(item.product);
const pPrice = Number(item.product?.priceValue || item.priceValue || 0);
const rowTotal = pPrice * (item.quantity || 1);
return `
${pName}
|
${toPersian(item.quantity)} |
${toPersian(pPrice.toLocaleString())} تومان |
${toPersian(rowTotal.toLocaleString())} تومان |
`;
}).join('');
printWindow.document.write(`
فاکتور رسمی کانینا - ${displayTrackingCode}
| شرح محصول |
تعداد |
قیمت واحد |
مجموع |
${itemsHtml}
مجموع اولیه اقلام:
${toPersian(itemsSubtotal.toLocaleString())} تومان
${isRefill ? `
تخفیف تمدید خودکار (۵٪):
${toPersian(refillDiscount.toLocaleString())}- تومان
` : ''}
${charityAmount > 0 ? `
کمک اهدایی (ردپای مهربانی):
${toPersian(charityAmount.toLocaleString())}+ تومان
` : ''}
هزینه ارسال:
رایگان
مبلغ نهایی پرداخت شده:
${toPersian(totalAmount.toLocaleString())} تومان
`);
printWindow.document.close();
};
const getStatusIcon = (status: string) => {
switch (status) {
case 'delivered': return ;
case 'shipped': return ;
default: return ;
}
};
const getStatusLabel = (status: string) => {
switch (status) {
case 'delivered': return 'تحویل شده';
case 'shipped': return 'ارسال شده';
default: return 'در حال پردازش';
}
};
return (
{isOpen && (
{/* Header */}
سفارش {toPersian(displayTrackingCode)}
ثبت شده در {toPersian(formattedDate)} - ساعت {toPersian(formattedTime)}
{/* Content Scrollable */}
{/* Summary Stats */}
وضعیت تحویل
{getStatusIcon(order.status)}
{getStatusLabel(order.status)}
کد پیگیری
{toPersian(displayTrackingCode)}
زمان دقیق
{toPersian(formattedTime)}
{/* Items List */}
سبد محصولات خریده شده
{items.map((item: any, idx: number) => {
const pName = getProductName(item.product);
const pImg = getProductImage(item.product);
const pPrice = Number(item.product?.priceValue || item.priceValue || 0);
const itemQty = item.quantity || 1;
return (
{pName}
{toPersian(itemQty)} عدد × {toPersian(pPrice.toLocaleString())} تومان
{toPersian((pPrice * itemQty).toLocaleString())} تومان
);
})}
{/* Shipping & Payment */}
اطلاعات ارسال
{order.shippingAddress || "آدرس ثبتی کاربر در حساب کاربری"}
جزئیات مالی و روش پرداخت
روش پرداخت:
{paymentMethodText}
مجموع اولیه اقلام:
{toPersian(itemsSubtotal.toLocaleString())} تومان
{isRefill && (
رزرو هوشمند تمدید (۵٪ پاداش خرید بعدی):
فعال ({toPersian(Math.round(itemsSubtotal * 0.05).toLocaleString())} تومان)
)}
{charityAmount > 0 && (
کمک اهدایی (ردپای مهربانی):
{toPersian(charityAmount.toLocaleString())}+ تومان
)}
هزینه ارسال:
رایگان
مبلغ نهایی پرداخت شده:
{toPersian(totalAmount.toLocaleString())} تومان
{/* Footer Actions */}
)}
);
}