'use client'; import { UserProduct } from '@/types/user'; import { formatDate, formatPrice, getProductTypeLabel } from '@/lib/utils'; import { CheckCircleIcon, XCircleIcon, PlusCircleIcon } from '@heroicons/react/24/outline'; import { useState } from 'react'; interface UserProductsProps { products: UserProduct[]; onSubscribe: (productId: number) => void; onUnsubscribe: (productId: number) => void; isLoading: boolean; availableProducts: { id: number; title: string | null; packageName?: string }[]; selectedPackage?: string | null; } export default function UserProducts({ products, onSubscribe, onUnsubscribe, isLoading, availableProducts, selectedPackage }: UserProductsProps) { const [selectedProductId, setSelectedProductId] = useState(null); const getSubscriptionStatus = (product: UserProduct) => { if (!product.pivot?.expire_at) { return { isActive: false, text: 'نامشخص', color: 'bg-gray-100 dark:bg-gray-800 text-gray-600 dark:text-gray-400', dotColor: 'bg-gray-400', }; } const expireDate = new Date(product.pivot.expire_at); const now = new Date(); const isActive = expireDate > now; return { isActive, text: isActive ? 'فعال' : 'منقضی شده', color: isActive ? 'bg-green-50 dark:bg-green-500/10 text-green-700 dark:text-green-400' : 'bg-red-50 dark:bg-red-500/10 text-red-700 dark:text-red-400', dotColor: isActive ? 'bg-green-500' : 'bg-red-500', }; }; const getSubscriptionCount = (productId: number): number => { return products.filter(p => p.id === productId).length; }; const productsByPackage = products.reduce((acc, product) => { const packageName = product.package_name?.name || 'نامشخص'; if (!acc[packageName]) { acc[packageName] = []; } acc[packageName].push(product); return acc; }, {} as Record); const handleSubscribeClick = (productId: number) => { setSelectedProductId(productId); onSubscribe(productId); }; return (

اشتراک‌های کاربر

{/* Current Subscriptions */}
{Object.keys(productsByPackage).length > 0 ? ( Object.entries(productsByPackage).map(([packageName, packageProducts]) => (
پکیج: {packageName}
    {packageProducts.map((product) => { const status = getSubscriptionStatus(product); const subscriptionCount = getSubscriptionCount(product.id); return (
  • {product.title || 'محصول'}

    {subscriptionCount > 1 && ( ×{subscriptionCount} )} {status.text}
    قیمت: {formatPrice(product.price)} تومان نوع: {getProductTypeLabel(product.type)} {product.pivot?.expire_at && ( انقضا: {formatDate(product.pivot.expire_at)} )}
  • ); })}
)) ) : (

کاربر هیچ اشتراکی ندارد

)}
{/* Available Products for Subscription */} {availableProducts && availableProducts.length > 0 && selectedPackage && (

افزودن اشتراک جدید

{availableProducts.map((product) => { const subscriptionCount = getSubscriptionCount(product.id); return ( ); })}
)}
); }