diff --git a/src/Pages/Users/Page.tsx b/src/Pages/Users/Page.tsx index 2d63c17..c4a8804 100644 --- a/src/Pages/Users/Page.tsx +++ b/src/Pages/Users/Page.tsx @@ -5,9 +5,7 @@ import DashHeader from '../../Layout/Dashboard/DashHeader' import LyTable from '../../Layout/Dashboard/LyTable' import useTableColumns from './useTableColumns' import { QueryStatusEnum } from '../../config/QueryStatus' -import { useTranslation } from 'react-i18next' -import { useNavigate } from 'react-router-dom' -import AddButton from '../../Layout/Dashboard/AddButton/AddButton' + import { useGetUsers } from '../../api/users' import SearchField from '../../Layout/Dashboard/SearchField' @@ -15,8 +13,7 @@ function Page() { const column =useTableColumns() const {data ,status } = useGetUsers() - const [t] = useTranslation() - const navigate = useNavigate() + const totalRows = data?.meta?.total; return ( diff --git a/src/Pages/Users/View/AddPage.tsx b/src/Pages/Users/View/AddPage.tsx deleted file mode 100644 index 723cd3d..0000000 --- a/src/Pages/Users/View/AddPage.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import React, { useEffect, useState } from 'react' -import { getInitialValuesForAdd as getInitialValues, getValidationSchema, getDataToSend } from '../formUtil' -import { Tab, TabList, TabPanel as TabBody, Tabs } from 'react-tabs' -import 'react-tabs/style/react-tabs.css'; -import { MdLanguage } from 'react-icons/md' -import ViewPage from '../../../Layout/Dashboard/ViewPage'; -import { useTranslation } from 'react-i18next'; -import useNavigateOnSuccess from '../../../Hooks/useNavigateOnSuccess'; -import { useAddUsers } from '../../../api/users'; -import Form from './AddForm'; - -const AddPage = () => { - - - const { mutate, isLoading:IsloadingButton, isSuccess } = useAddUsers() - const handleSubmit = (values: any) => { - - -mutate(values) - - }; - - const { t } = useTranslation(); - - useNavigateOnSuccess(isSuccess, '/users') - - - - const ViewProps = { getInitialValues, getValidationSchema, getDataToSend, handleSubmit,IsloadingButton }; - - - return ( -
- - - - -
{t("BasicInfo")}
- - - -
- -
-
- -
-
- - - -
- ) - -} - -export default AddPage \ No newline at end of file diff --git a/src/Pages/Users/View/AddForm.tsx b/src/Pages/Users/View/EditForm.tsx similarity index 63% rename from src/Pages/Users/View/AddForm.tsx rename to src/Pages/Users/View/EditForm.tsx index 6ca365c..ea8e61b 100644 --- a/src/Pages/Users/View/AddForm.tsx +++ b/src/Pages/Users/View/EditForm.tsx @@ -7,14 +7,12 @@ function Form() { return ( - - + - - + diff --git a/src/Pages/Users/View/EditPage.tsx b/src/Pages/Users/View/EditPage.tsx new file mode 100644 index 0000000..f02cad7 --- /dev/null +++ b/src/Pages/Users/View/EditPage.tsx @@ -0,0 +1,67 @@ +import React, { useEffect } from 'react' +import { getInitialValues, getDataToSend } from '../formUtil' +import { Tab, TabList, TabPanel as TabBody, Tabs } from 'react-tabs' +import 'react-tabs/style/react-tabs.css'; +import { MdLanguage } from 'react-icons/md' +import ViewPage from '../../../Layout/Dashboard/ViewPage'; +import { usePageState } from '../../../lib/state mangment/LayoutPagestate'; +import LoadingPage from '../../../Layout/app/LoadingPage'; +import { useTranslation } from 'react-i18next'; +import { useGetOneUser, useUpdateAdmin } from '../../../api/users'; +import useNavigateOnSuccess from '../../../Hooks/useNavigateOnSuccess'; +import Form from './EditForm'; + +const EditPage = () => { + const { setObjectToEdit, objectToEdit } = usePageState() + const {t} = useTranslation(); + const { data } = useGetOneUser() + const {mutate ,isSuccess,isLoading:IsloadingButton} = useUpdateAdmin("put") + const handleSubmit = (values:any)=>{ + + return mutate(values); + } + + useNavigateOnSuccess(isSuccess , '/users') + + + useEffect(() => { + console.log(data); + + setObjectToEdit(data?.data); + + }, [data]); + + + const getValidationSchema = () => { + return null + }; + + + const ViewProps = { getInitialValues, getValidationSchema, getDataToSend, handleSubmit,IsloadingButton }; + + + return ( +
+ {objectToEdit && data ? + + + +
{t("BasicInfo")}
+ +
+ +
+
+ + +
+
+ : } + + +
+ ) + +} + +export default EditPage \ No newline at end of file diff --git a/src/Pages/Users/formUtil.ts b/src/Pages/Users/formUtil.ts index 581c2f5..f622255 100644 --- a/src/Pages/Users/formUtil.ts +++ b/src/Pages/Users/formUtil.ts @@ -1,28 +1,22 @@ import * as Yup from "yup"; import { buildFormData } from "../../api/helper/buildFormData"; -import moment from 'moment'; -import * as dayjs from 'dayjs' export const getInitialValues = (objectToEdit: any | null = null): any => { //@ts-ignore return { id: objectToEdit?.id , - name: objectToEdit?.name , - email: objectToEdit?.email , - type: objectToEdit?.type , - avatar: objectToEdit?.avatar , + password: objectToEdit?.password , + }; }; export const getInitialValuesForAdd = (objectToEdit: any | null = null): any => { return { - name: null , - email: null , - type: null , - avatar: null , + password: null , + }; }; @@ -30,10 +24,7 @@ export const getInitialValuesForAdd = (objectToEdit: any | null = null): any => export const getValidationSchema = (editMode: boolean = false): Yup.Schema => { // Validate input return Yup.object().shape({ - name: Yup.string().required('Required'), - email: Yup.string().required('Required'), - type: Yup.string().required('Required'), - avatar: Yup.string().required('Required'), + }); }; diff --git a/src/Pages/Users/useTableColumns.tsx b/src/Pages/Users/useTableColumns.tsx index cfb8665..ded5edb 100644 --- a/src/Pages/Users/useTableColumns.tsx +++ b/src/Pages/Users/useTableColumns.tsx @@ -4,25 +4,31 @@ import { useTranslation } from "react-i18next"; import Actions from "../../Components/Ui/tables/Actions"; import ColumnsImage from "../../Components/Columns/ColumnsImage"; import { useNavigate } from "react-router-dom"; -import { useDeleteUsers, useUpdateUsers } from "../../api/users"; +import { useUpdateUsers } from "../../api/users"; import { Switch } from "antd"; import { MdEmail } from "react-icons/md"; -import { useModalState } from "../../zustand/Modal"; +import { toast } from "react-toastify"; const useTableColumns: any = () => { const [t] = useTranslation(); - const deleteMutation = useDeleteUsers() const navigate = useNavigate() const { mutate: update_status } = useUpdateUsers("put") const onChange = (checked: boolean, row: any) => { - console.log(`switch to ${checked}`); - update_status({ - id: row.id, - status: checked ? "active" : "suspended" + console.log(`switch to ${checked}`) + if(row.type === "user"){ + + update_status({ + id: row.id, + status: checked ? "active" : "suspended" + + }) + }else{ + toast.error("sorry_only_user_can_change_his_status") + } + - }) }; @@ -78,8 +84,8 @@ const useTableColumns: any = () => { cell: (row: any) => ( navigate(`/users/${row.id}`)} + showEdit={row.type === "user" ?false : true} + onEdit={() => navigate(`/admin/${row.id}`)} showView={false} // onDelete={() => deleteMutation.mutate({ id: row.id })} showDelete={false} @@ -91,7 +97,7 @@ const useTableColumns: any = () => { }, ], - [t] + [] ); }; diff --git a/src/Routes.tsx b/src/Routes.tsx index f57a427..b452a97 100644 --- a/src/Routes.tsx +++ b/src/Routes.tsx @@ -31,7 +31,7 @@ import AddSliderPage from "./Pages/Slider/View/AddPage"; import EditSlider from "./Pages/Slider/View/EditPage"; import UsersPage from "./Pages/Users/Page"; -import AddUsersPage from "./Pages/Users/View/AddPage"; +import EditUsersPage from "./Pages/Users/View/EditPage"; import AddUsersNotifactionPage from "./Pages/Users/SendNotifcation/View/AddPage"; @@ -160,8 +160,8 @@ export const RoutesLinks: RoutesLinksType[] = [ href: "/users", }, { - href: "/users/add", - element: , + href: "/admin/:id", + element: , hidden:true }, diff --git a/src/api/users.ts b/src/api/users.ts index b6bb803..c7a3dda 100644 --- a/src/api/users.ts +++ b/src/api/users.ts @@ -3,15 +3,18 @@ import useGetQueryPagination from "./helper/ueGetPagination"; import useAddMutation from "./helper/useAddMutation" import useDeleteMutation from "./helper/useDeleteMutation" import useGetOneQuery from "./helper/useGetOneQuery"; -import useGetQuery from "./helper/useGetQuery" import useUpdateMutation from "./helper/useUpdateMutation"; import useUpdateMutationById from "./helper/useUpdateMutationById"; const API = { ADD: `user`, - GET_ALL: `user?notOfType=admin`, + // GET_ALL: `user?notOfType=admin`, + GET_ALL: `user`, + DELETE: `user`, UPDATE: `user/updateStatus`, + UPDATE_ADMIN: `user`, + }; const KEY = "User" @@ -22,6 +25,7 @@ export const useGetOneUser = (params?:any) => useGetOneQuery(KEY, API.GET_ALL,pa export const useAddUsers = () => useAddMutation(KEY, API.ADD); export const useUpdateUsers = (method?:string) => useUpdateMutationById(KEY, API.UPDATE,true,method); +export const useUpdateAdmin = (method?:string) => useUpdateMutation(KEY, API.UPDATE_ADMIN,true,method); export const useDeleteUsers = () =>useDeleteMutation(KEY, API.DELETE); diff --git a/src/translate/text b/src/translate/text index dc47021..01f7005 100644 --- a/src/translate/text +++ b/src/translate/text @@ -1,10 +1 @@ -Product_Count_in_your_Application -productCount -user_in_your_Application -userCount -orderCount -order_count_in_your_Application -You_have -users -orders -month \ No newline at end of file +sorry_only_user_can_change_his_status \ No newline at end of file