import { type FC, useState } from 'react' import type { FormikProps } from 'formik' import { useTranslation } from 'react-i18next' import Input from '@/components/Input' import RadioGroup from '@/components/RadioGroup' import Textarea from '@/components/Textarea' import DefaulModal from '@/components/DefaulModal' import LocationInput from '@/pages/settings/components/LocationInput' import LocationPicker from '@/pages/settings/components/LocationPicker' import { formatPrice } from '@/helpers/func' import type { CreateOrderFormValues } from '../hooks/useCreateOrderForm' import type { RestaurantPaymentMethod, RestaurantShipmentMethod } from '../hooks/useCreateOrderForm' import type { UserSavedAddress } from '@/pages/customers/types/Types' import CreateOrderAddressSelector from './CreateOrderAddressSelector' interface CreateOrderDeliverySectionProps { formik: FormikProps deliveryMethods: RestaurantShipmentMethod[] cashPaymentMethod?: RestaurantPaymentMethod isCourierDelivery: boolean isCarDelivery: boolean isDineIn: boolean customerAddresses: UserSavedAddress[] selectedAddressId: string | null onSelectSavedAddress: (address: UserSavedAddress) => void onSelectManualAddress: () => void onAddressFieldChange: (e: React.ChangeEvent) => void onLocationSelect: (lat: number, lng: number) => void } const CreateOrderDeliverySection: FC = ({ formik, deliveryMethods, cashPaymentMethod, isCourierDelivery, isCarDelivery, isDineIn, customerAddresses, selectedAddressId, onSelectSavedAddress, onSelectManualAddress, onAddressFieldChange, onLocationSelect, }) => { const { t } = useTranslation('global') const [isLocationModalOpen, setIsLocationModalOpen] = useState(false) const getDeliveryLabel = (method: string) => { return t(`shipment.${method}`, { defaultValue: method, }) } const isAddressReadOnly = selectedAddressId !== null && customerAddresses.length > 0 const handleMapLocationSelect = (lat: number, lng: number) => { onLocationSelect(lat, lng) setIsLocationModalOpen(false) } const latitude = formik.values.userAddress.latitude const longitude = formik.values.userAddress.longitude return (
تحویل و پرداخت
روش تحویل
({ label: method.deliveryFee > 0 ? `${getDeliveryLabel(method.method)} (${formatPrice(method.deliveryFee)})` : getDeliveryLabel(method.method), value: method.id, }))} selected={formik.values.deliveryMethodId} onChange={(value) => { formik.setFieldValue('deliveryMethodId', value) formik.setFieldTouched('deliveryMethodId', true, false) }} /> {formik.touched.deliveryMethodId && formik.errors.deliveryMethodId && (
{formik.errors.deliveryMethodId}
)}
روش پرداخت
{cashPaymentMethod ? ( formik.setFieldValue('paymentMethodId', value)} /> ) : (
روش پرداخت نقدی فعال یافت نشد
)}
{isDineIn && (
)}
{isCourierDelivery && (
آدرس تحویل
setIsLocationModalOpen(true)} />