diff --git a/src/config/Pages.ts b/src/config/Pages.ts index c5c2c4c..987ea28 100644 --- a/src/config/Pages.ts +++ b/src/config/Pages.ts @@ -132,6 +132,7 @@ export const Pages = { }, restaurants: { list: "/dmenu/restaurants/list", + update: "/dmenu/restaurants/update/", smsCountList: "/dmenu/sms-count/list", }, }, diff --git a/src/langs/fa.json b/src/langs/fa.json index e47463c..88cc3ec 100644 --- a/src/langs/fa.json +++ b/src/langs/fa.json @@ -886,7 +886,12 @@ "admins": "مدیران", "add_admin": "افزودن مدیر", "sms_count": "تعداد پیامک", - "role": "نقش" + "role": "نقش", + "slug": "اسلاگ", + "established_year": "سال تاسیس", + "subscription_id": "شناسه اشتراک", + "subscription_start_date": "تاریخ شروع اشتراک", + "subscription_end_date": "تاریخ پایان اشتراک" }, "cancel": "لغو" } diff --git a/src/pages/dmenu/hooks/useIconData.ts b/src/pages/dmenu/hooks/useIconData.ts index e5468c0..6190f7b 100644 --- a/src/pages/dmenu/hooks/useIconData.ts +++ b/src/pages/dmenu/hooks/useIconData.ts @@ -5,6 +5,7 @@ import { ReportsResponse, SystemRolesResponse, RestaurantAdminsResponse, + UpdateRestaurantType, } from "../types/Types"; export const useGetIcons = () => { @@ -98,3 +99,23 @@ export const useGetSystemRoles = () => { queryFn: api.getSystemRoles, }); }; + +export const useUpdateRestaurant = () => { + return useMutation({ + mutationFn: ({ + id, + params, + }: { + id: string; + params: UpdateRestaurantType; + }) => api.updateRestaurant(id, params), + }); +}; + +export const useGetRestaurant = (id: string) => { + return useQuery({ + queryKey: ["restaurant", id], + queryFn: () => api.getRestaurant(id), + enabled: !!id, + }); +}; diff --git a/src/pages/dmenu/restaurant/List.tsx b/src/pages/dmenu/restaurant/List.tsx index b309a97..02ab7b8 100644 --- a/src/pages/dmenu/restaurant/List.tsx +++ b/src/pages/dmenu/restaurant/List.tsx @@ -5,11 +5,13 @@ import PageLoading from '../../../components/PageLoading' import Td from '../../../components/Td' import { RestaurantType, RestaurantsResponse } from '../types/Types' import moment from 'moment-jalaali' -import { Copy } from 'iconsax-react' +import { Copy, Edit } from 'iconsax-react' import { toast } from 'react-toastify' import Button from '../../../components/Button' import RestaurantAdminsModal from './components/RestaurantAdminsModal' import Pagination from '../../../components/Pagination' +import { Link } from 'react-router-dom' +import { Pages } from '../../../config/Pages' const RestaurantsList: FC = () => { @@ -106,7 +108,15 @@ const RestaurantsList: FC = () => { -
+
+ + + +
+
+ +
+
+
+
+ + + +
+ +
+ + + +
+ +
+ +
+ +
+ formik.setFieldValue('subscriptionStartDate', value)} + placeholder={t('select')} + defaulValue={formik.values.subscriptionStartDate} + error_text={formik.touched.subscriptionStartDate && formik.errors.subscriptionStartDate ? formik.errors.subscriptionStartDate : ''} + /> + + formik.setFieldValue('subscriptionEndDate', value)} + placeholder={t('select')} + defaulValue={formik.values.subscriptionEndDate} + error_text={formik.touched.subscriptionEndDate && formik.errors.subscriptionEndDate ? formik.errors.subscriptionEndDate : ''} + /> +
+ +
+ formik.setFieldValue('isActive', value)} + /> +
+
+
+
+ + ) +} + +export default UpdateRestaurant \ No newline at end of file diff --git a/src/pages/dmenu/service/IconService.ts b/src/pages/dmenu/service/IconService.ts index 2e8d8df..a18bc9c 100644 --- a/src/pages/dmenu/service/IconService.ts +++ b/src/pages/dmenu/service/IconService.ts @@ -6,10 +6,12 @@ import { IconsResponse, ReportsResponse, RestaurantsResponse, + RestaurantResponse, RestaurantSmsCountResponse, AddAdminRestaurantType, SystemRolesResponse, RestaurantAdminsResponse, + UpdateRestaurantType, } from "../types/Types"; export const getIcons = async (): Promise => { @@ -95,3 +97,18 @@ export const getSystemRoles = async (): Promise => { const { data } = await axios.get(`/admin/dmenu/system-roles`); return data; }; + +export const updateRestaurant = async ( + id: string, + params: UpdateRestaurantType +) => { + const { data } = await axios.patch(`/admin/dmenu/restaurants/${id}`, params); + return data; +}; + +export const getRestaurant = async ( + id: string +): Promise => { + const { data } = await axios.get(`/admin/dmenu/restaurants/${id}`); + return data; +}; diff --git a/src/pages/dmenu/types/Types.ts b/src/pages/dmenu/types/Types.ts index 7f880a0..71861ec 100644 --- a/src/pages/dmenu/types/Types.ts +++ b/src/pages/dmenu/types/Types.ts @@ -121,6 +121,10 @@ export interface RestaurantsResponse extends IResponse { statusCode: number; } +export interface RestaurantResponse extends IResponse { + statusCode: number; +} + export type RestaurantAdminRoleType = { id: string; createdAt: string; @@ -199,3 +203,15 @@ export type SystemRoleType = { export interface SystemRolesResponse extends IResponse { statusCode: number; } + +export type UpdateRestaurantType = { + name?: string; + slug?: string; + establishedYear?: number; + phone?: string; + plan?: string; + subscriptionId?: string; + subscriptionEndDate?: string; + subscriptionStartDate?: string; + isActive?: boolean; +}; diff --git a/src/router/Main.tsx b/src/router/Main.tsx index bc81848..fc9c5f8 100644 --- a/src/router/Main.tsx +++ b/src/router/Main.tsx @@ -82,6 +82,7 @@ import GroupIconList from '../pages/dmenu/icon/GroupList' import WarningsList from '../pages/dmenu/report/List.tsx' import RestaurantsList from '../pages/dmenu/restaurant/List.tsx' import SmsCountList from '../pages/dmenu/restaurant/SmsCountList.tsx' +import UpdateRestaurant from '../pages/dmenu/restaurant/Update.tsx' // import WarningsList from '../pages/dmenu/reports/List' // TODO: Create this component const MainRouter: FC = () => { @@ -177,6 +178,7 @@ const MainRouter: FC = () => { } /> } /> } /> + } />