'use client' import {zodResolver} from '@hookform/resolvers/zod' import {DeliveryOption} from '@prisma/client' import {useLocale} from 'next-intl' import React, {useEffect, useState} from 'react' import {useForm} from 'react-hook-form' import toast from 'react-hot-toast' import {z} from 'zod' import {onPlacingOrder} from '@/actions/admin/place-order' import NovaPost from '@/app/[locale]/(root)/(shop)/cart/nova-post' import SearchAddress from '@/components/pages/cart/search-address' import { DeliveryOptionTypeDescription, createOrderFormSchema } from '@/lib/schemas/admin/order' import {dump} from '@/lib/utils' import useCartStore from '@/store/cart-store' import {SessionUser} from '@/types/auth' import {Button} from '@/ui/button' import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@/ui/form' import {Input} from '@/ui/input' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ui/select' export default function RegisteredOrderForm({ styles, user, onSubmitHandler }: { styles: string user?: SessionUser | null onSubmitHandler: any }) { const [loading, setLoading] = useState(false) const [error, setError] = useState('') const [success, setSuccess] = useState('') const [deliveryOption, setDeliveryOption] = useState('') const locale = useLocale() const [warehouseRef, setWarehouseRef] = useState(JSON.stringify({})) const warehouseSubmit = (warehouse: any) => { setWarehouseRef( Object.keys(warehouse).length > 0 ? JSON.stringify(warehouse) : JSON.stringify({}) ) setValue( 'address', Object.keys(warehouse).length > 0 ? JSON.stringify(warehouse) : JSON.stringify({}) ) } const {cartItems, clearCart} = useCartStore() const form = useForm>({ resolver: zodResolver(createOrderFormSchema), mode: 'onBlur', defaultValues: { user_id: user ? user.id.toString() : '', is_quick: false, lang: locale, first_name: '', surname: '', delivery_option: '', phone: '', email: '', address: warehouseRef, notes: '', details: JSON.stringify(cartItems) } }) const {register, setValue} = form useEffect(() => { register('delivery_option') register('address') register('details') }, [register]) const deliveryOptionHandler = (value: string) => { setDeliveryOption(value) setValue('delivery_option', value) } const onSubmit = async (values: z.infer) => { setLoading(true) setValue('details', JSON.stringify(cartItems)) onPlacingOrder(values).then((res: any) => { if (res?.error) { setError(res?.error) setSuccess('') setLoading(false) toast.error(res?.error) } else { setSuccess(res?.success as string) setError('') setLoading(false) clearCart() toast.success(res?.success) } onSubmitHandler(res) }) } return (
{/*
{dump(user)}
*/}

1. {locale !== 'ru' ? 'Особисті дані' : 'Личные данные'}

( {locale !== 'ru' ? "Ім'я" : 'Имя'}* )} />
( {locale !== 'ru' ? 'Прізвище' : 'Фамилия'}* )} />
( Телефон* )} />
( E-mail* )} />

2.{' '} {locale !== 'ru' ? 'Інформація про доставку' : 'Информация о доставке'}

( {locale !== 'ru' ? 'Варіанти доставки' : 'Варианты доставки'}{' '} )} />
{deliveryOption === 'NP' && ( )} {deliveryOption === 'COURIER' && ( /**/ )} {deliveryOption === 'PICKUP' && (
Дані де і коли можна забрати
)}
( {locale !== 'ru' ? 'Додаткова інформація' : 'Дополнительная информация'}