From 6f906c8a2a07dab8f037f53b4e18911fe0abdd28 Mon Sep 17 00:00:00 2001 From: AminGhasempoor Date: Sat, 20 Jan 2024 13:58:14 +0330 Subject: [PATCH 1/4] admin setting with fake data create update --- public/locales/fa/app.json | 20 +++++ .../Form/CreateForm/CreateContent.jsx | 88 ++++++++++++++++++ .../admin-setting/Form/CreateForm/index.jsx | 35 ++++++++ .../Form/UpdateForm/UpdateContent.jsx | 90 +++++++++++++++++++ .../admin-setting/Form/UpdateForm/index.jsx | 30 +++++++ .../admin-setting/TableRowActions.jsx | 15 ++++ .../dashboard/admin-setting/TableToolbar.jsx | 11 +++ .../dashboard/admin-setting/index.jsx | 88 ++++++++++++++++++ src/core/data/sidebarMenu.jsx | 11 +++ src/pages/dashboard/admin-setting/index.jsx | 21 +++++ 10 files changed, 409 insertions(+) create mode 100644 src/components/dashboard/admin-setting/Form/CreateForm/CreateContent.jsx create mode 100644 src/components/dashboard/admin-setting/Form/CreateForm/index.jsx create mode 100644 src/components/dashboard/admin-setting/Form/UpdateForm/UpdateContent.jsx create mode 100644 src/components/dashboard/admin-setting/Form/UpdateForm/index.jsx create mode 100644 src/components/dashboard/admin-setting/TableRowActions.jsx create mode 100644 src/components/dashboard/admin-setting/TableToolbar.jsx create mode 100644 src/components/dashboard/admin-setting/index.jsx create mode 100644 src/pages/dashboard/admin-setting/index.jsx diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json index 0b4d635..f0f1d96 100644 --- a/public/locales/fa/app.json +++ b/public/locales/fa/app.json @@ -44,6 +44,7 @@ "dashboard": "داشبورد", "reports": "گزارشات", "passenger-office-chief": "اداره مسافر", + "admin-setting": "تنظیمات ", "machinery-expert": "کارتابل کارشناسی", "passenger-boss": "کارتابل کارگروه", "transportation-assistant": "بررسی وام های تبصره 18", @@ -121,6 +122,7 @@ "edit_profile": "ویرایش پروفایل", "expert_management": "مدیریت کارشناسان", "user_management_page": "مدیریت کاربر", + "admin_setting": "تنظیمات", "loan_history": "کارتابل نظارت", "total_number_loan_offers": "تعداد کل وام های پیشنهادی", "total_amount_proposed_loan": "مبلغ کل وام های پیشنهادی", @@ -147,6 +149,12 @@ "button_while_submit": "در حال ثبت", "button_submit": "ثبت" }, + "AdminSetting": { + "id": "کد یکتا", + "edit": "ویرایش", + "name": "نام", + "value": "مقدار" + }, "UpdateProfile": { "error_invalid_email": "ایمیل نامعتبر است", "typography_edit_profile": "پروفایل", @@ -481,8 +489,14 @@ "button-cancel": "بستن", "refahi": "رفاهی", "navgan": "ناوگان", + "setting_name": "نام", + "value": "مقدار", "phone_number": "شماره تلفن", "national_id": "کد ملی", + "name_string": "نام می بایست متن باشد", + "setting_name_error": "وارد کردن نام الزامیست", + "value_error": "وارد کردن مقدار الزامیست", + "value_string": "مقدار می بایست متن باشد", "name": "نام انگلیسی", "name_error": "وارد کردن نام انگلیسی الزامیست", "name_fa": "نام فارسی", @@ -576,6 +590,8 @@ }, "AddDialog": { "add": "افزودن", + "setting_name": "نام", + "value": "مقدار", "name": "نام انگلیسی", "name_error": "وارد کردن نام انگلیسی الزامیست", "name_fa": "نام فارسی", @@ -594,6 +610,10 @@ "national_id_error": "وارد کردن کد ملی الزامیست", "type_id_error": "وارد کردن نوع کاربر الزامیست", "navgan_id_error": "وارد کردن کد ناوگان الزامیست", + "name_string": "نام می بایست متن باشد", + "setting_name_error": "وارد کردن نام الزامیست", + "value_error": "وارد کردن مقدار الزامیست", + "value_string": "مقدار می بایست متن باشد", "refahi": "رفاهی", "navgan": "ناوگان", "type_id": "نوع کاربر", diff --git a/src/components/dashboard/admin-setting/Form/CreateForm/CreateContent.jsx b/src/components/dashboard/admin-setting/Form/CreateForm/CreateContent.jsx new file mode 100644 index 0000000..a4b9cf1 --- /dev/null +++ b/src/components/dashboard/admin-setting/Form/CreateForm/CreateContent.jsx @@ -0,0 +1,88 @@ +import {Button, DialogActions, DialogContent, Stack, TextField} from "@mui/material"; +import {useTranslations} from "next-intl"; +import useRequest from "@/lib/app/hooks/useRequest"; +import * as Yup from "yup"; +import {useFormik} from "formik"; +import {ADD_USER_MANAGEMENT} from "@/core/data/apiRoutes"; + +const CreateContent = ({mutate, setOpenConfirmDialog}) => { + const t = useTranslations(); + const requestServer = useRequest({auth: true}) + const validationSchema = Yup.object().shape({ + name: Yup.string("AddDialog.name_string") + .required(t("AddDialog.setting_name_error")), + value: Yup.string("AddDialog.value_string") + .required(t("AddDialog.value_error")), + }); + + const formik = useFormik({ + initialValues: { + name: "", + value: "", + }, validationSchema, onSubmit: (values, {setSubmitting}) => { + const formData = new FormData(); + formData.append("name", values.name); + formData.append("value", values.value); + + requestServer(ADD_USER_MANAGEMENT, 'post', { + data: formData, + }).then((response) => { + setOpenConfirmDialog(false) + mutate() + update_notification() + }).catch(() => { + }).finally(() => { + setSubmitting(false); + }); + }, + }); + + return ( + <> + + + + + + + + + + + + + + + + ) +} +export default CreateContent \ No newline at end of file diff --git a/src/components/dashboard/admin-setting/Form/CreateForm/index.jsx b/src/components/dashboard/admin-setting/Form/CreateForm/index.jsx new file mode 100644 index 0000000..9d531d2 --- /dev/null +++ b/src/components/dashboard/admin-setting/Form/CreateForm/index.jsx @@ -0,0 +1,35 @@ +import {Button, Dialog, DialogTitle, Stack, Tooltip} from "@mui/material"; +import DataSaverOnIcon from "@mui/icons-material/DataSaverOn"; +import {useTranslations} from "next-intl"; +import {useState} from "react"; +import CreateContent from "@/components/dashboard/admin-setting/Form/CreateForm/CreateContent"; + +const CreateForm = ({mutate}) => { + const t = useTranslations(); + const [openConfirmDialog, setOpenConfirmDialog] = useState(false); + + return ( + + + + + + {t("AddDialog.add")} + + + + ) +} +export default CreateForm \ No newline at end of file diff --git a/src/components/dashboard/admin-setting/Form/UpdateForm/UpdateContent.jsx b/src/components/dashboard/admin-setting/Form/UpdateForm/UpdateContent.jsx new file mode 100644 index 0000000..b38b6f6 --- /dev/null +++ b/src/components/dashboard/admin-setting/Form/UpdateForm/UpdateContent.jsx @@ -0,0 +1,90 @@ +import {UPDATE_USER_MANAGEMENT} from "@/core/data/apiRoutes"; +import useNotification from "@/lib/app/hooks/useNotification"; +import useRequest from "@/lib/app/hooks/useRequest"; +import {Button, DialogActions, DialogContent, Stack, TextField} from "@mui/material" +import {useFormik} from "formik"; +import {useTranslations} from "next-intl"; +import * as Yup from "yup"; + +const UpdateContent = ({row, mutate, setOpenConfirmDialog}) => { + const t = useTranslations(); + const requestServer = useRequest({auth: true}) + const {update_notification} = useNotification() + + const validationSchema = Yup.object().shape({ + name: Yup.string("AddDialog.name_string") + .required(t("AddDialog.setting_name_error")), + value: Yup.string("AddDialog.value_string") + .required(t("AddDialog.value_error")), + }); + + const formik = useFormik({ + initialValues: { + name: row.getValue("name"), + value: row.getValue("value"), + }, validationSchema, onSubmit: (values, {setSubmitting}) => { + const formData = new FormData(); + formData.append("name", values.name); + formData.append("value", values.value); + requestServer(`${UPDATE_USER_MANAGEMENT}/${row.getValue("id")}`, 'post', { + data: formData, + }).then((response) => { + setOpenConfirmDialog(false) + mutate() + update_notification() + }).catch(() => { + }).finally(() => { + setSubmitting(false); + }); + }, + }); + return ( + <> + + + + + + + + + + + + + + + + ) +} +export default UpdateContent \ No newline at end of file diff --git a/src/components/dashboard/admin-setting/Form/UpdateForm/index.jsx b/src/components/dashboard/admin-setting/Form/UpdateForm/index.jsx new file mode 100644 index 0000000..a00cd74 --- /dev/null +++ b/src/components/dashboard/admin-setting/Form/UpdateForm/index.jsx @@ -0,0 +1,30 @@ +import {Dialog, DialogTitle, IconButton, Tooltip} from "@mui/material" +import EditIcon from '@mui/icons-material/Edit'; +import {useTranslations} from "next-intl"; +import {useState} from "react"; +import UpdateContent from "./UpdateContent"; + +const Update = ({row, mutate}) => { + const t = useTranslations(); + const [openConfirmDialog, setOpenConfirmDialog] = useState(false); + return ( + <> + + { + setOpenConfirmDialog(true) + }} + > + + + + + {t("UpdateDialog.update")} + + + + ) +} +export default Update \ No newline at end of file diff --git a/src/components/dashboard/admin-setting/TableRowActions.jsx b/src/components/dashboard/admin-setting/TableRowActions.jsx new file mode 100644 index 0000000..64fb696 --- /dev/null +++ b/src/components/dashboard/admin-setting/TableRowActions.jsx @@ -0,0 +1,15 @@ +import {Box} from "@mui/material"; +import Update from "src/components/dashboard/admin-setting/Form/UpdateForm"; + +const TableRow = ({row, mutate}) => { + return ( + + + + ); +}; + +export default TableRow; diff --git a/src/components/dashboard/admin-setting/TableToolbar.jsx b/src/components/dashboard/admin-setting/TableToolbar.jsx new file mode 100644 index 0000000..007eb2f --- /dev/null +++ b/src/components/dashboard/admin-setting/TableToolbar.jsx @@ -0,0 +1,11 @@ +import {useTranslations} from "next-intl"; +import CreateForm from "@/components/dashboard/admin-setting/Form/CreateForm"; + +function TableToolbar({mutate}) { + const t = useTranslations(); + + return + +} + +export default TableToolbar; diff --git a/src/components/dashboard/admin-setting/index.jsx b/src/components/dashboard/admin-setting/index.jsx new file mode 100644 index 0000000..14b19cf --- /dev/null +++ b/src/components/dashboard/admin-setting/index.jsx @@ -0,0 +1,88 @@ +import {Box, Typography} from "@mui/material"; +import {useMemo} from "react"; +import {GET_MACHINARY_OFFICE} from "@/core/data/apiRoutes"; +import {useTranslations} from "next-intl"; +import DataTable from "@/core/components/DataTable"; +import TableRowActions from "@/components/dashboard/admin-setting/TableRowActions"; +import TableToolbar from "@/components/dashboard/admin-setting/TableToolbar"; + +function DashboardAdminSettingComponent() { + const t = useTranslations(); + const columns = useMemo( + () => [ + { + accessorFn: (row) => row.id, + id: "id", + header: t("AdminSetting.id"), + enableColumnFilter: true, + datatype: "text", + filterFn: "contains", + columnFilterModeOptions: ["contains", "equals", "notEquals"], + Cell: ({renderedCellValue}) => ( + {renderedCellValue} + ), + }, + { + accessorFn: (row) => row.name, + id: "name", + header: t("AdminSetting.name"), + enableColumnFilter: true, + datatype: "text", + filterFn: "contains", + columnFilterModeOptions: ["contains", "equals", "notEquals"], + Cell: ({renderedCellValue}) => ( + {renderedCellValue} + ), + }, + { + accessorFn: (row) => row.value, + id: "value", + header: t("AdminSetting.value"), + enableColumnFilter: true, + datatype: "text", + filterFn: "equals", + columnFilterModeOptions: [ + "equals", + "contains", + ], + Cell: ({renderedCellValue}) => ( + {renderedCellValue} + ), + }, + ], + [] + ); + const data = [{ + id: 1, + name: "amin", + value: "hi" + }] + return ( + + + + ); +} + +export default DashboardAdminSettingComponent; diff --git a/src/core/data/sidebarMenu.jsx b/src/core/data/sidebarMenu.jsx index be48975..0701245 100644 --- a/src/core/data/sidebarMenu.jsx +++ b/src/core/data/sidebarMenu.jsx @@ -15,6 +15,7 @@ import PersonIcon from '@mui/icons-material/Person'; import AccessibilityIcon from '@mui/icons-material/Accessibility'; import AssessmentIcon from '@mui/icons-material/Assessment'; import SecurityIcon from '@mui/icons-material/Security'; +import SettingsIcon from '@mui/icons-material/Settings'; const sidebarMenu = [ [ @@ -197,6 +198,16 @@ const sidebarMenu = [ icon: , selected: false, permissions: ["manage_roles"], + }, + { + key: "sidebar.admin-setting", + secondary: "secondary.admin-management", + name: "admin_setting", + type: "page", + route: "/dashboard/admin-setting", + icon: , + selected: false, + permissions: ["manage_roles"], } ], ]; diff --git a/src/pages/dashboard/admin-setting/index.jsx b/src/pages/dashboard/admin-setting/index.jsx new file mode 100644 index 0000000..042e599 --- /dev/null +++ b/src/pages/dashboard/admin-setting/index.jsx @@ -0,0 +1,21 @@ +import {parse} from "next-useragent"; +import DashboardAdminSettingComponent from "@/components/dashboard/admin-setting"; + +export default function AdminSetting() { + return ( + + ); +} + +export async function getServerSideProps({req, locale}) { + const {isBot} = parse(req.headers["user-agent"]); + return { + props: { + messages: (await import(`&/locales/${locale}/app.json`)).default, + title: "Dashboard.admin_setting", + isBot, + locale, + layout: {name: 'DashboardLayout'} + }, + }; +} From 84fc274e287ed50591e9dcae6b8d3f356bb37e97 Mon Sep 17 00:00:00 2001 From: AminGhasempoor Date: Sat, 20 Jan 2024 14:08:36 +0330 Subject: [PATCH 2/4] add API routes --- .../admin-setting/Form/CreateForm/CreateContent.jsx | 4 ++-- .../admin-setting/Form/UpdateForm/UpdateContent.jsx | 4 ++-- src/components/dashboard/admin-setting/index.jsx | 8 ++++++-- src/core/data/apiRoutes.js | 5 +++++ 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/components/dashboard/admin-setting/Form/CreateForm/CreateContent.jsx b/src/components/dashboard/admin-setting/Form/CreateForm/CreateContent.jsx index a4b9cf1..dc19c2e 100644 --- a/src/components/dashboard/admin-setting/Form/CreateForm/CreateContent.jsx +++ b/src/components/dashboard/admin-setting/Form/CreateForm/CreateContent.jsx @@ -3,7 +3,7 @@ import {useTranslations} from "next-intl"; import useRequest from "@/lib/app/hooks/useRequest"; import * as Yup from "yup"; import {useFormik} from "formik"; -import {ADD_USER_MANAGEMENT} from "@/core/data/apiRoutes"; +import {ADD_ADMIN_SETTING} from "@/core/data/apiRoutes"; const CreateContent = ({mutate, setOpenConfirmDialog}) => { const t = useTranslations(); @@ -24,7 +24,7 @@ const CreateContent = ({mutate, setOpenConfirmDialog}) => { formData.append("name", values.name); formData.append("value", values.value); - requestServer(ADD_USER_MANAGEMENT, 'post', { + requestServer(ADD_ADMIN_SETTING, 'post', { data: formData, }).then((response) => { setOpenConfirmDialog(false) diff --git a/src/components/dashboard/admin-setting/Form/UpdateForm/UpdateContent.jsx b/src/components/dashboard/admin-setting/Form/UpdateForm/UpdateContent.jsx index b38b6f6..ae28fb6 100644 --- a/src/components/dashboard/admin-setting/Form/UpdateForm/UpdateContent.jsx +++ b/src/components/dashboard/admin-setting/Form/UpdateForm/UpdateContent.jsx @@ -1,4 +1,4 @@ -import {UPDATE_USER_MANAGEMENT} from "@/core/data/apiRoutes"; +import {UPDATE_ADMIN_SETTING} from "@/core/data/apiRoutes"; import useNotification from "@/lib/app/hooks/useNotification"; import useRequest from "@/lib/app/hooks/useRequest"; import {Button, DialogActions, DialogContent, Stack, TextField} from "@mui/material" @@ -26,7 +26,7 @@ const UpdateContent = ({row, mutate, setOpenConfirmDialog}) => { const formData = new FormData(); formData.append("name", values.name); formData.append("value", values.value); - requestServer(`${UPDATE_USER_MANAGEMENT}/${row.getValue("id")}`, 'post', { + requestServer(`${UPDATE_ADMIN_SETTING}/${row.getValue("id")}`, 'post', { data: formData, }).then((response) => { setOpenConfirmDialog(false) diff --git a/src/components/dashboard/admin-setting/index.jsx b/src/components/dashboard/admin-setting/index.jsx index 14b19cf..0a3833e 100644 --- a/src/components/dashboard/admin-setting/index.jsx +++ b/src/components/dashboard/admin-setting/index.jsx @@ -1,6 +1,6 @@ import {Box, Typography} from "@mui/material"; import {useMemo} from "react"; -import {GET_MACHINARY_OFFICE} from "@/core/data/apiRoutes"; +import {GET_ADMIN_SETTING} from "@/core/data/apiRoutes"; import {useTranslations} from "next-intl"; import DataTable from "@/core/components/DataTable"; import TableRowActions from "@/components/dashboard/admin-setting/TableRowActions"; @@ -56,12 +56,16 @@ function DashboardAdminSettingComponent() { id: 1, name: "amin", value: "hi" + }, { + id: 1, + name: "amin", + value: "hi" }] return ( Date: Mon, 22 Jan 2024 13:32:23 +0330 Subject: [PATCH 3/4] delete form , waiting for API --- .../admin-setting/Form/DeleteForm.jsx | 67 +++++++++++++++++++ .../admin-setting/TableRowActions.jsx | 5 ++ .../dashboard/admin-setting/index.jsx | 16 +---- src/core/data/apiRoutes.js | 7 +- src/core/data/sidebarMenu.jsx | 2 +- src/pages/dashboard/admin-setting/index.jsx | 2 +- 6 files changed, 81 insertions(+), 18 deletions(-) create mode 100644 src/components/dashboard/admin-setting/Form/DeleteForm.jsx diff --git a/src/components/dashboard/admin-setting/Form/DeleteForm.jsx b/src/components/dashboard/admin-setting/Form/DeleteForm.jsx new file mode 100644 index 0000000..b2fdead --- /dev/null +++ b/src/components/dashboard/admin-setting/Form/DeleteForm.jsx @@ -0,0 +1,67 @@ +import {useTranslations} from "next-intl"; +import {useState} from "react"; +import { + Button, + Dialog, + DialogActions, + DialogContent, + DialogTitle, + IconButton, + Tooltip, + Typography +} from "@mui/material"; +import DeleteIcon from '@mui/icons-material/Delete'; +import {DELETE_ADMIN_SETTING} from "@/core/data/apiRoutes"; +import useRequest from "@/lib/app/hooks/useRequest"; +import useNotification from "@/lib/app/hooks/useNotification"; + +const Delete = ({rowId, mutate}) => { + const t = useTranslations(); + const [openConfirmDialog, setOpenConfirmDialog] = useState(false); + const [isSubmitting, setIsSubmitting] = useState(false) + const requestServer = useRequest({auth: true}) + const {update_notification} = useNotification() + const handleSubmit = () => { + setIsSubmitting(true) + requestServer(`${DELETE_ADMIN_SETTING}/${rowId}`, 'delete').then((response) => { + mutate() + update_notification() + }).catch(() => { + }).finally(() => { + setIsSubmitting(false) + }); + } + + return ( + <> + + { + setOpenConfirmDialog(true) + }} + > + + + + + {t("DeleteDialog.delete")} + + {t("DeleteDialog.typography")} + + + + + + + + ); +}; +export default Delete; \ No newline at end of file diff --git a/src/components/dashboard/admin-setting/TableRowActions.jsx b/src/components/dashboard/admin-setting/TableRowActions.jsx index 64fb696..6bdd0fe 100644 --- a/src/components/dashboard/admin-setting/TableRowActions.jsx +++ b/src/components/dashboard/admin-setting/TableRowActions.jsx @@ -1,5 +1,6 @@ import {Box} from "@mui/material"; import Update from "src/components/dashboard/admin-setting/Form/UpdateForm"; +import Delete from "@/components/dashboard/admin-setting/Form/DeleteForm"; const TableRow = ({row, mutate}) => { return ( @@ -8,6 +9,10 @@ const TableRow = ({row, mutate}) => { row={row} mutate={mutate} /> + ); }; diff --git a/src/components/dashboard/admin-setting/index.jsx b/src/components/dashboard/admin-setting/index.jsx index 0a3833e..6490595 100644 --- a/src/components/dashboard/admin-setting/index.jsx +++ b/src/components/dashboard/admin-setting/index.jsx @@ -15,8 +15,8 @@ function DashboardAdminSettingComponent() { id: "id", header: t("AdminSetting.id"), enableColumnFilter: true, - datatype: "text", - filterFn: "contains", + datatype: "number", + filterFn: "equals", columnFilterModeOptions: ["contains", "equals", "notEquals"], Cell: ({renderedCellValue}) => ( {renderedCellValue} @@ -29,7 +29,7 @@ function DashboardAdminSettingComponent() { enableColumnFilter: true, datatype: "text", filterFn: "contains", - columnFilterModeOptions: ["contains", "equals", "notEquals"], + columnFilterModeOptions: ["contains", "equals"], Cell: ({renderedCellValue}) => ( {renderedCellValue} ), @@ -52,19 +52,9 @@ function DashboardAdminSettingComponent() { ], [] ); - const data = [{ - id: 1, - name: "amin", - value: "hi" - }, { - id: 1, - name: "amin", - value: "hi" - }] return ( , selected: false, - permissions: ["manage_roles"], + permissions: ["view_settings"], } ], ]; diff --git a/src/pages/dashboard/admin-setting/index.jsx b/src/pages/dashboard/admin-setting/index.jsx index 042e599..70dc722 100644 --- a/src/pages/dashboard/admin-setting/index.jsx +++ b/src/pages/dashboard/admin-setting/index.jsx @@ -15,7 +15,7 @@ export async function getServerSideProps({req, locale}) { title: "Dashboard.admin_setting", isBot, locale, - layout: {name: 'DashboardLayout'} + layout: {name: 'DashboardLayout', props: {permissions: ["view_settings"]}} }, }; } From eb3975768b7e89de5e9f16b7a85eb61777f182d1 Mon Sep 17 00:00:00 2001 From: AminGhasempoor Date: Mon, 22 Jan 2024 14:57:05 +0330 Subject: [PATCH 4/4] recive API --- public/locales/fa/app.json | 15 +++++++---- .../Form/CreateForm/CreateContent.jsx | 19 +++++++++++++ .../Form/UpdateForm/UpdateContent.jsx | 27 ++++++++++++++++--- .../dashboard/admin-setting/index.jsx | 16 +++++++++-- 4 files changed, 66 insertions(+), 11 deletions(-) diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json index f0f1d96..5394820 100644 --- a/public/locales/fa/app.json +++ b/public/locales/fa/app.json @@ -152,7 +152,8 @@ "AdminSetting": { "id": "کد یکتا", "edit": "ویرایش", - "name": "نام", + "name": "نام انگلیسی", + "name_fa": "نام فارسی", "value": "مقدار" }, "UpdateProfile": { @@ -489,12 +490,14 @@ "button-cancel": "بستن", "refahi": "رفاهی", "navgan": "ناوگان", - "setting_name": "نام", + "setting_name": "نام انگلیسی", + "setting_name_fa": "نام فارسی", "value": "مقدار", "phone_number": "شماره تلفن", "national_id": "کد ملی", "name_string": "نام می بایست متن باشد", - "setting_name_error": "وارد کردن نام الزامیست", + "setting_name_error": "وارد کردن نام انگلیسی الزامیست", + "setting_name_fa_error": "وارد کردن نام فارسی الزامیست", "value_error": "وارد کردن مقدار الزامیست", "value_string": "مقدار می بایست متن باشد", "name": "نام انگلیسی", @@ -590,7 +593,8 @@ }, "AddDialog": { "add": "افزودن", - "setting_name": "نام", + "setting_name": "نام انگلیسی", + "setting_name_fa": "نام فارسی", "value": "مقدار", "name": "نام انگلیسی", "name_error": "وارد کردن نام انگلیسی الزامیست", @@ -611,7 +615,8 @@ "type_id_error": "وارد کردن نوع کاربر الزامیست", "navgan_id_error": "وارد کردن کد ناوگان الزامیست", "name_string": "نام می بایست متن باشد", - "setting_name_error": "وارد کردن نام الزامیست", + "setting_name_error": "وارد کردن نام انگلیسی الزامیست", + "setting_name_fa_error": "وارد کردن نام فارسی الزامیست", "value_error": "وارد کردن مقدار الزامیست", "value_string": "مقدار می بایست متن باشد", "refahi": "رفاهی", diff --git a/src/components/dashboard/admin-setting/Form/CreateForm/CreateContent.jsx b/src/components/dashboard/admin-setting/Form/CreateForm/CreateContent.jsx index dc19c2e..f10a97b 100644 --- a/src/components/dashboard/admin-setting/Form/CreateForm/CreateContent.jsx +++ b/src/components/dashboard/admin-setting/Form/CreateForm/CreateContent.jsx @@ -11,6 +11,8 @@ const CreateContent = ({mutate, setOpenConfirmDialog}) => { const validationSchema = Yup.object().shape({ name: Yup.string("AddDialog.name_string") .required(t("AddDialog.setting_name_error")), + name_fa: Yup.string("AddDialog.name_fa_string") + .required(t("AddDialog.setting_name_fa_error")), value: Yup.string("AddDialog.value_string") .required(t("AddDialog.value_error")), }); @@ -18,10 +20,12 @@ const CreateContent = ({mutate, setOpenConfirmDialog}) => { const formik = useFormik({ initialValues: { name: "", + name_fa: "", value: "", }, validationSchema, onSubmit: (values, {setSubmitting}) => { const formData = new FormData(); formData.append("name", values.name); + formData.append("name_fa", values.name_fa); formData.append("value", values.value); requestServer(ADD_ADMIN_SETTING, 'post', { @@ -41,6 +45,21 @@ const CreateContent = ({mutate, setOpenConfirmDialog}) => { <> + + + { const {update_notification} = useNotification() const validationSchema = Yup.object().shape({ - name: Yup.string("AddDialog.name_string") - .required(t("AddDialog.setting_name_error")), - value: Yup.string("AddDialog.value_string") - .required(t("AddDialog.value_error")), + name: Yup.string("UpdateDialog.name_string") + .required(t("UpdateDialog.setting_name_error")), + name_fa: Yup.string("UpdateDialog.name_fa_string") + .required(t("UpdateDialog.setting_name_fa_error")), + value: Yup.string("UpdateDialog.value_string") + .required(t("UpdateDialog.value_error")), }); const formik = useFormik({ initialValues: { name: row.getValue("name"), + name_fa: row.getValue("name_fa"), value: row.getValue("value"), }, validationSchema, onSubmit: (values, {setSubmitting}) => { const formData = new FormData(); formData.append("name", values.name); + formData.append("name_fa", values.name_fa); formData.append("value", values.value); requestServer(`${UPDATE_ADMIN_SETTING}/${row.getValue("id")}`, 'post', { data: formData, @@ -42,6 +46,21 @@ const UpdateContent = ({row, mutate, setOpenConfirmDialog}) => { <> + + + {renderedCellValue} ), }, + { + accessorFn: (row) => row.name_fa, + id: "name_fa", + header: t("AdminSetting.name_fa"), + enableColumnFilter: true, + datatype: "text", + filterFn: "contains", + columnFilterModeOptions: ["contains", "equals"], + Cell: ({renderedCellValue}) => ( + {renderedCellValue} + ), + }, { accessorFn: (row) => row.name, id: "name", @@ -40,7 +52,7 @@ function DashboardAdminSettingComponent() { header: t("AdminSetting.value"), enableColumnFilter: true, datatype: "text", - filterFn: "equals", + filterFn: "contains", columnFilterModeOptions: [ "equals", "contains", @@ -62,7 +74,7 @@ function DashboardAdminSettingComponent() { CustomToolbar={TableToolbar} enableLastUpdate={true} sorting={[{ - id: 'name', desc: false + id: 'id', desc: false }]} enablePinning={true} enableDensityToggle={false}