import { type FC, useState } from 'react' import { Link } from 'react-router-dom' import { Call, Edit2, Location, Paperclip2, Profile2User, Receipt21, User } from 'iconsax-react' import { clx } from '@/helpers/utils' import { getFileNameAndExtensionFromUrl } from '@/config/func' import { getPresignedUrl } from '@/pages/uploader/service/UploaderService' import { Paths } from '@/config/Paths' import { getAttachmentUrl, formatJalaliDateTime, getCreatorDisplayName, getUserDisplayName, } from '../utils/orderDetailUtils' import { getOrderStatusBadgeClass, getOrderStatusLabel, } from '../constants/orderStatus' import { OrderStatusEnum } from '../enum/OrderEnum' import type { OrderDetailDataType } from '../types/Types' import OrderStatusModal from './OrderStatusModal' type Props = { order?: OrderDetailDataType onUpdateStatus?: (status: OrderStatusEnum) => void isUpdatingStatus?: boolean } type InfoRowProps = { label: string value?: string | number | null mono?: boolean } const InfoRow: FC = ({ label, value, mono }) => (
{label}
{value ?? '—'}
) const PersonCard: FC<{ title: string name: string subtitle?: string phone?: string icon?: 'user' | 'designer' }> = ({ title, name, subtitle, phone, icon = 'user' }) => (

{title}

{icon === 'designer' ? ( ) : ( )}

{name}

{subtitle &&

{subtitle}

} {phone && (

{phone}

)}
) const OrderDetailSidebar: FC = ({ order, onUpdateStatus, isUpdatingStatus, }) => { const attachments = (order?.attachments ?? []) .map(getAttachmentUrl) .filter((url): url is string => Boolean(url)) const [isStatusModalOpen, setIsStatusModalOpen] = useState(false) const [selectedStatus, setSelectedStatus] = useState( (order?.status as OrderStatusEnum) ?? OrderStatusEnum.CREATED, ) const handleOpenStatusModal = () => { if (!order?.status) return setSelectedStatus(order.status as OrderStatusEnum) setIsStatusModalOpen(true) } return (

شماره سفارش

#{order?.orderNumber ?? '—'}

{order?.id && ( )} {order?.status && ( <> {getOrderStatusLabel(order.status)} )}
{order?.user && (

مشتری

{order.user.addresse && (

{order.user.addresse}

)}
)} {(order?.creator || order?.designer) && (

تیم

{order.creator && ( )} {order.designer && ( )}
)} {attachments.length > 0 && (

پیوست‌ها

{attachments.map((key, idx) => { const { fileName } = getFileNameAndExtensionFromUrl(key) return ( ) })}
)} setIsStatusModalOpen(false)} initialStatus={selectedStatus} inputName={`order-detail-status-${order?.id ?? 'unknown'}`} isLoading={isUpdatingStatus} onSubmit={(status) => { setSelectedStatus(status) onUpdateStatus?.(status) }} />
) } export default OrderDetailSidebar