import { Button, Dialog, FormContainer, FormItem, Input, Notification, Select, toast, } from '@/components/ui' import { getMenuGroups } from '@/services/menu.service' import { createTenantFromOrder } from '@/services/tenant.service' import { SelectBoxOption } from '@/types/shared' import { useLocalization } from '@/utils/hooks/useLocalization' import { Field, FieldProps, Form, Formik, FormikHelpers } from 'formik' import { useEffect, useState } from 'react' import * as Yup from 'yup' type CreateTenantFromOrderValues = { name: string menuGroup: string } type CreateTenantFromOrderDialogProps = { open: boolean onDialogClose: () => void orderId: string } const schema = Yup.object().shape({ name: Yup.string().trim().required(), menuGroup: Yup.string().trim().required(), }) const CreateTenantFromOrderDialog = ({ open, onDialogClose, orderId, }: CreateTenantFromOrderDialogProps) => { const { translate } = useLocalization() const [menuGroupOptions, setMenuGroupOptions] = useState([]) const [isMenuGroupsLoading, setIsMenuGroupsLoading] = useState(false) useEffect(() => { if (!open) { return } const fetchMenuGroups = async () => { setIsMenuGroupsLoading(true) try { const response = await getMenuGroups() const items = response?.data ?? [] setMenuGroupOptions( items.map((item: any) => ({ value: String(item.key ?? item.Key ?? ''), label: String(item.name ?? item.Name ?? ''), })), ) } catch { setMenuGroupOptions([]) } finally { setIsMenuGroupsLoading(false) } } fetchMenuGroups() }, [open]) const handleSubmit = async ( values: CreateTenantFromOrderValues, { setSubmitting }: FormikHelpers, ) => { setSubmitting(true) try { await createTenantFromOrder({ orderId, name: values.name.trim(), menuGroup: values.menuGroup.trim(), }) toast.push( {translate('::App.Platform.SaveSuccess') || 'Tenant kaydedildi'} , { placement: 'top-end' }, ) onDialogClose() } catch (error) { const message = (error as any)?.response?.data?.error?.message ?? (error as any)?.response?.data?.message ?? (error as any)?.message ?? 'Islem basarisiz' toast.push( {message} , { placement: 'top-end' }, ) } finally { setSubmitting(false) } } return (
{translate('::App.Tenant.Create')}
initialValues={{ name: '', menuGroup: 'Erp', }} validationSchema={schema} onSubmit={handleSubmit} > {({ errors, touched, isSubmitting }) => (
{({ field, form }: FieldProps) => (