This commit is contained in:
hamid zarghami
2026-01-08 11:41:07 +03:30
parent 7a7638ad9e
commit dad5c22533
4 changed files with 36 additions and 58 deletions
+2 -2
View File
@@ -1,4 +1,4 @@
VITE_TOKEN_NAME = 'dsc_token' VITE_TOKEN_NAME = 'dsc_token'
VITE_REFRESH_TOKEN_NAME = 'dsc_refresh_token' VITE_REFRESH_TOKEN_NAME = 'dsc_refresh_token'
VITE_BASE_URL = 'https://api.danakcorp.com' # VITE_BASE_URL = 'https://api.danakcorp.com'
# VITE_BASE_URL = 'http://192.168.1.119:4001' VITE_BASE_URL = 'http://192.168.99.235:3500'
+3 -3
View File
@@ -526,9 +526,9 @@
"actions": "عملیات" "actions": "عملیات"
}, },
"restaurant": { "restaurant": {
"manage": "مدیریت رستوران", "manage": "ساخت منوی رستوران",
"restaurant_info": "اطلاعات رستوران", "restaurant_info": "اسلاگ رستوران",
"enter_restaurant_info": "لطفا اطلاعات رستوران خود را وارد کنید", "enter_restaurant_info": "در این بخش نام کاربری رستوران خود که از طریق آن به منو دسترسی دارید را وارد نمایید.",
"name": "نام رستوران", "name": "نام رستوران",
"enter_name": "نام رستوران را وارد کنید", "enter_name": "نام رستوران را وارد کنید",
"slug": "اسلاگ", "slug": "اسلاگ",
+31 -50
View File
@@ -7,8 +7,8 @@ import { DmenuCreateRestaurantType } from './types/ServiecTypes'
import * as Yup from 'yup' import * as Yup from 'yup'
import { toast } from '../../components/Toast' import { toast } from '../../components/Toast'
import { ErrorType } from '../../helpers/types' import { ErrorType } from '../../helpers/types'
import Input from '../../components/Input'
import Button from '../../components/Button' import Button from '../../components/Button'
import Error from '../../components/Error'
import { TickCircle } from 'iconsax-react' import { TickCircle } from 'iconsax-react'
import { Helmet } from 'react-helmet-async' import { Helmet } from 'react-helmet-async'
@@ -42,29 +42,18 @@ export const ManageRestaurant: FC = () => {
const formik = useFormik<DmenuCreateRestaurantType>({ const formik = useFormik<DmenuCreateRestaurantType>({
initialValues: { initialValues: {
name: '',
slug: '', slug: '',
establishedYear: 0,
phone: '',
userSubscriptionId: subscriptionId || '' userSubscriptionId: subscriptionId || ''
}, },
enableReinitialize: true, enableReinitialize: true,
validationSchema: Yup.object({ validationSchema: Yup.object({
name: Yup.string().required(t('errors.required')), slug: Yup.string()
slug: Yup.string().required(t('errors.required')),
establishedYear: Yup.number()
.required(t('errors.required')) .required(t('errors.required'))
.min(1300, 'سال باید حداقل ۱۳۰۰ باشد') .matches(/^[a-zA-Z0-9-]+$/, 'اسلاگ باید فقط شامل حروف انگلیسی، اعداد و خط تیره باشد'),
.max(1500, 'سال باید حداکثر ۱۵۰۰ باشد'),
phone: Yup.string().required(t('errors.required')),
userSubscriptionId: Yup.string().required(t('errors.required')) userSubscriptionId: Yup.string().required(t('errors.required'))
}), }),
onSubmit: (values) => { onSubmit: (values) => {
const submitValues = { createDmenuRestaurant.mutate(values, {
...values,
establishedYear: Number(values.establishedYear)
}
createDmenuRestaurant.mutate(submitValues, {
onSuccess: () => { onSuccess: () => {
toast(t('success') || 'با موفقیت انجام شد', 'success') toast(t('success') || 'با موفقیت انجام شد', 'success')
formik.resetForm() formik.resetForm()
@@ -84,7 +73,7 @@ export const ManageRestaurant: FC = () => {
</Helmet> </Helmet>
<div className='mt-4'> <div className='mt-4'>
<div className='text-lg font-semibold mb-2'> <div className='text-lg font-semibold mb-2'>
{t('restaurant.manage') || 'مدیریت رستوران'} {t('restaurant.manage')}
</div> </div>
<div className='bg-white rounded-3xl xl:p-6 p-4 mt-8 text-sm'> <div className='bg-white rounded-3xl xl:p-6 p-4 mt-8 text-sm'>
@@ -98,40 +87,32 @@ export const ManageRestaurant: FC = () => {
</div> </div>
</div> </div>
<div className='flex flex-col gap-6'> <div className='flex lg:max-w-[500px] mx-auto flex-col gap-6'>
<div className='flex xl:flex-row flex-col xl:gap-6 gap-3'> <div className='w-full'>
<Input <label className='text-sm font-medium mb-2 block'>
label={t('restaurant.name') || 'نام رستوران'} {t('restaurant.slug') || 'اسلاگ'}
{...formik.getFieldProps('name')} </label>
error_text={formik.touched.name && formik.errors.name ? formik.errors.name : ''} <div className='w-full relative mt-1'>
placeholder={t('restaurant.enter_name') || 'نام رستوران را وارد کنید'} <div className='flex items-center border border-border rounded-xl overflow-hidden bg-white hover:border-gray-400 transition-colors focus-within:border-primary focus-within:ring-2 focus-within:ring-primary/20' dir='ltr'>
/> <div className='px-4 py-2.5 bg-gray-50 text-xs text-gray-600 border-r border-border whitespace-nowrap font-medium'>
dmenu.danakcorp.com/
<Input </div>
label={t('restaurant.slug') || 'اسلاگ'} <input
{...formik.getFieldProps('slug')} type='text'
error_text={formik.touched.slug && formik.errors.slug ? formik.errors.slug : ''} value={formik.values.slug}
placeholder={t('restaurant.enter_slug') || 'اسلاگ را وارد کنید'} onChange={(e) => {
/> formik.setFieldValue('slug', e.target.value)
</div> }}
onBlur={formik.handleBlur}
<div className='flex xl:flex-row flex-col xl:gap-6 gap-3'> placeholder={t('restaurant.enter_slug') || 'اسلاگ را وارد کنید'}
<Input className='flex-1 h-10 text-black block px-4 text-xs border-0 focus:outline-none focus:ring-0 bg-transparent'
label={t('restaurant.established_year') || 'سال تأسیس'} dir='ltr'
{...formik.getFieldProps('establishedYear')} />
error_text={formik.touched.establishedYear && formik.errors.establishedYear ? formik.errors.establishedYear : ''} </div>
placeholder={t('restaurant.enter_year') || 'سال تأسیس را وارد کنید'} {formik.touched.slug && formik.errors.slug && (
type='number' <Error errorText={formik.errors.slug} />
min={1300} )}
max={1500} </div>
/>
<Input
label={t('auth.phonen_number') || 'شماره تماس'}
{...formik.getFieldProps('phone')}
error_text={formik.touched.phone && formik.errors.phone ? formik.errors.phone : ''}
placeholder={t('auth.enter_phone_number') || 'شماره تماس را وارد کنید'}
/>
</div> </div>
<div className='mt-4 flex justify-end'> <div className='mt-4 flex justify-end'>
-3
View File
@@ -279,10 +279,7 @@ export type ExtentSubscriptionResponseType = {
}; };
export type DmenuCreateRestaurantType = { export type DmenuCreateRestaurantType = {
name: string;
slug: string; slug: string;
establishedYear: number;
phone: string;
userSubscriptionId: string; userSubscriptionId: string;
}; };