From 11dedbb61677d469786c06038eabba73d7b310e3 Mon Sep 17 00:00:00 2001 From: Amirhossein Mahmoodi Date: Sat, 12 Aug 2023 16:27:25 +0330 Subject: [PATCH] Merge branch 'develop' into 'feature/refahi_province_manager' # Conflicts: # public/locales/fa/app.json # src/core/data/apiRoutes.js --- public/locales/fa/app.json | 20 +- .../Form/ConfirmForm.jsx | 4 +- .../Form/RejectForm.jsx | 4 +- .../TableRowActions.jsx | 0 .../TableTollbar.jsx | 0 .../index.jsx | 26 +- .../Form/ConfirmForm.jsx | 139 ++++++++++ .../Form/RejectForm.jsx | 144 +++++++++++ .../TableRowActions.jsx | 23 ++ .../refahi-province-manager/TableTollbar.jsx | 0 .../refahi-province-manager/index.jsx | 239 ++++++++++++++++++ src/core/data/apiRoutes.js | 21 +- src/core/data/sidebarMenu.jsx | 14 +- .../navgan-province-manager/index.jsx | 26 ++ .../index.jsx | 4 +- 15 files changed, 635 insertions(+), 29 deletions(-) rename src/components/dashboard/{province-manager => navgan-province-manager}/Form/ConfirmForm.jsx (97%) rename src/components/dashboard/{province-manager => navgan-province-manager}/Form/RejectForm.jsx (97%) rename src/components/dashboard/{province-manager => navgan-province-manager}/TableRowActions.jsx (100%) rename src/components/dashboard/{province-manager => navgan-province-manager}/TableTollbar.jsx (100%) rename src/components/dashboard/{province-manager => navgan-province-manager}/index.jsx (92%) create mode 100644 src/components/dashboard/refahi-province-manager/Form/ConfirmForm.jsx create mode 100644 src/components/dashboard/refahi-province-manager/Form/RejectForm.jsx create mode 100644 src/components/dashboard/refahi-province-manager/TableRowActions.jsx create mode 100644 src/components/dashboard/refahi-province-manager/TableTollbar.jsx create mode 100644 src/components/dashboard/refahi-province-manager/index.jsx create mode 100644 src/pages/dashboard/navgan-province-manager/index.jsx rename src/pages/dashboard/{province-manager => refahi-province-manager}/index.jsx (82%) diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json index 0eaed87..3ca622e 100644 --- a/public/locales/fa/app.json +++ b/public/locales/fa/app.json @@ -31,8 +31,9 @@ "machinery-expert": "ماشین آلات", "passenger-boss": "رئیس مسافر ", "transportation-assistant": "معاونت حمل و نقل", + "navgan-province-manager": "مدیر کل استانی", + "refahi-province-manager": "مدیر کل استانی", "commercial-chief": "رئیس اداره بازرگانی", - "province-manager": "مدیر کل استانی", "inspector-expert": "بازدید کارشناس", "province-head-expert": "کارشناس ستادی", "change-password": "تغییر رمز عبور", @@ -41,7 +42,9 @@ }, "secondary": { "passenger-office": "توزیع درخواست", - "passenger-boss": "کارگروه استانی" + "passenger-boss": "کارگروه استانی", + "refahi-province-manager": "رفاهی", + "navgan-province-manager": "ناوگان" }, "Authorization": { "typography_your_login_is_valid_and_you_do_not_need_to_login_again": "شما دسترسی لازم به این صفحه را دارید نیاز به ورود مجدد نیست.", @@ -148,7 +151,7 @@ "vehicle_type": "نوع ماشین", "state_name": "وضعیت درخواست" }, - "ProvinceManager": { + "NavganProvinceManager": { "name": "نام", "id": "کد یکتا", "national_id": "کد ملی", @@ -170,6 +173,17 @@ "vehicle_type": "نوع ماشین", "state_name": "وضعیت درخواست" }, + "RefahiProvinceManager": { + "name": "نام", + "id": "کد یکتا", + "national_id": "کد ملی", + "phone_number": "موبایل", + "created_at": "تاریخ درخواست", + "updated_at": "تاریخ بروزرسانی", + "navgan_id": "کد ناوگان", + "vehicle_type": "نوع ماشین", + "state_name": "وضعیت درخواست" + }, "DevelopmentAssistant": { "name": "نام", "id": "کد یکتا", diff --git a/src/components/dashboard/province-manager/Form/ConfirmForm.jsx b/src/components/dashboard/navgan-province-manager/Form/ConfirmForm.jsx similarity index 97% rename from src/components/dashboard/province-manager/Form/ConfirmForm.jsx rename to src/components/dashboard/navgan-province-manager/Form/ConfirmForm.jsx index a6b7c18..a975f0c 100644 --- a/src/components/dashboard/province-manager/Form/ConfirmForm.jsx +++ b/src/components/dashboard/navgan-province-manager/Form/ConfirmForm.jsx @@ -17,7 +17,7 @@ import UploadSystem from "@/core/components/UploadSystem"; import useDirection from "@/lib/app/hooks/useDirection"; import {useFormik} from "formik"; import UploadFileNotification from "@/core/components/notifications/UploadFileNotification"; -import {CONFIRM_PROVINCE_MANAGER} from "@/core/data/apiRoutes"; +import {CONFIRM_NAVGAN_PROVINCE_MANAGER} from "@/core/data/apiRoutes"; import useRequest from "@/lib/app/hooks/useRequest"; const Confirm = ({rowId, fetchUrl, mutate}) => { @@ -40,7 +40,7 @@ const Confirm = ({rowId, fetchUrl, mutate}) => { if (values.description != "") formData.append("expert_description", values.description); if (values.confirm_img != null) formData.append("attachment", values.confirm_img); - requestServer(`${CONFIRM_PROVINCE_MANAGER}/${rowId}`, 'post', { + requestServer(`${CONFIRM_NAVGAN_PROVINCE_MANAGER}/${rowId}`, 'post', { data: formData, }).then((response) => { mutate(fetchUrl) diff --git a/src/components/dashboard/province-manager/Form/RejectForm.jsx b/src/components/dashboard/navgan-province-manager/Form/RejectForm.jsx similarity index 97% rename from src/components/dashboard/province-manager/Form/RejectForm.jsx rename to src/components/dashboard/navgan-province-manager/Form/RejectForm.jsx index 9b04439..3e29166 100644 --- a/src/components/dashboard/province-manager/Form/RejectForm.jsx +++ b/src/components/dashboard/navgan-province-manager/Form/RejectForm.jsx @@ -1,4 +1,4 @@ -import {REJECT_PROVINCE_MANAGER} from "@/core/data/apiRoutes"; +import {REJECT_NAVGAV_PROVINCE_MANAGER} from "@/core/data/apiRoutes"; import { Button, Dialog, @@ -46,7 +46,7 @@ const Reject = ({rowId, fetchUrl, mutate}) => { formData.append("expert_description", values.description); if (values.reject_img != null) formData.append("attachment", values.reject_img); - requestServer(`${REJECT_PROVINCE_MANAGER}/${rowId}`, 'post', { + requestServer(`${REJECT_NAVGAV_PROVINCE_MANAGER}/${rowId}`, 'post', { data: formData, }).then((response) => { mutate(fetchUrl) diff --git a/src/components/dashboard/province-manager/TableRowActions.jsx b/src/components/dashboard/navgan-province-manager/TableRowActions.jsx similarity index 100% rename from src/components/dashboard/province-manager/TableRowActions.jsx rename to src/components/dashboard/navgan-province-manager/TableRowActions.jsx diff --git a/src/components/dashboard/province-manager/TableTollbar.jsx b/src/components/dashboard/navgan-province-manager/TableTollbar.jsx similarity index 100% rename from src/components/dashboard/province-manager/TableTollbar.jsx rename to src/components/dashboard/navgan-province-manager/TableTollbar.jsx diff --git a/src/components/dashboard/province-manager/index.jsx b/src/components/dashboard/navgan-province-manager/index.jsx similarity index 92% rename from src/components/dashboard/province-manager/index.jsx rename to src/components/dashboard/navgan-province-manager/index.jsx index f1173e9..9c9dd4b 100644 --- a/src/components/dashboard/province-manager/index.jsx +++ b/src/components/dashboard/navgan-province-manager/index.jsx @@ -2,7 +2,7 @@ import DashboardLayouts from "@/layouts/dashboardLayouts"; import {Box, IconButton, Typography} from "@mui/material"; import ClearIcon from "@mui/icons-material/Clear"; import {useMemo} from "react"; -import {GET_PROVINCE_MANAGER} from "@/core/data/apiRoutes"; +import {GET_NAVGAN_PROVINCE_MANAGER} from "@/core/data/apiRoutes"; import {useTranslations} from "next-intl"; import TableRowActions from "./TableRowActions"; import {LocalizationProvider, MobileDateTimePicker,} from "@mui/x-date-pickers"; @@ -11,7 +11,7 @@ import moment from "jalali-moment"; import {faIR} from "@mui/x-date-pickers/locales"; import DataTable from "@/core/components/DataTable"; -function DashboardProvinceManagerComponent() { +function DashboardNavganProvinceManagerComponent() { const t = useTranslations(); const columns = useMemo( @@ -19,7 +19,7 @@ function DashboardProvinceManagerComponent() { { accessorFn: (row) => row.id, id: "id", - header: t("ProvinceManager.id"), + header: t("NavganProvinceManager.id"), enableColumnFilter: true, datatype: "numeric", filterFn: "equals", @@ -38,7 +38,7 @@ function DashboardProvinceManagerComponent() { { accessorFn: (row) => row.name, id: "name", - header: t("ProvinceManager.name"), + header: t("NavganProvinceManager.name"), enableColumnFilter: true, datatype: "text", filterFn: "contains", @@ -50,7 +50,7 @@ function DashboardProvinceManagerComponent() { { accessorFn: (row) => row.national_id, id: "national_id", - header: t("ProvinceManager.national_id"), + header: t("NavganProvinceManager.national_id"), enableColumnFilter: true, datatype: "numeric", filterFn: "equals", @@ -69,7 +69,7 @@ function DashboardProvinceManagerComponent() { { accessorFn: (row) => row.phone_number, id: "phone_number", - header: t("ProvinceManager.phone_number"), + header: t("NavganProvinceManager.phone_number"), enableColumnFilter: true, datatype: "numeric", filterFn: "equals", @@ -89,7 +89,7 @@ function DashboardProvinceManagerComponent() { accessorFn: (row) => moment(row.created_at).locale("fa").format("HH:mm | yyyy/MM/DD"), id: "created_at", - header: t("ProvinceManager.created_at"), + header: t("NavganProvinceManager.created_at"), enableColumnFilter: true, datatype: "date", filterFn: "lessThan", @@ -154,7 +154,7 @@ function DashboardProvinceManagerComponent() { accessorFn: (row) => moment(row.updated_at).locale("fa").format("HH:mm | yyyy/MM/DD"), id: "updated_at", - header: t("ProvinceManager.updated_at"), + header: t("NavganProvinceManager.updated_at"), enableColumnFilter: false, datatype: "numeric", Cell: ({renderedCellValue}) => ( @@ -164,7 +164,7 @@ function DashboardProvinceManagerComponent() { { accessorFn: (row) => row.navgan_id, id: "navgan_id", - header: t("ProvinceManager.navgan_id"), + header: t("NavganProvinceManager.navgan_id"), enableColumnFilter: true, datatype: "numeric", filterFn: "equals", @@ -183,7 +183,7 @@ function DashboardProvinceManagerComponent() { { accessorFn: (row) => row.vehicle_type, id: "vehicle_type", - header: t("ProvinceManager.vehicle_type"), + header: t("NavganProvinceManager.vehicle_type"), enableColumnFilter: true, datatype: "text", filterFn: "contains", @@ -195,7 +195,7 @@ function DashboardProvinceManagerComponent() { { accessorFn: (row) => row.state_name, id: "state_id", - header: t("ProvinceManager.state_name"), + header: t("NavganProvinceManager.state_name"), enableColumnFilter: false, datatype: "numeric", // filterFn: "equals", @@ -213,7 +213,7 @@ function DashboardProvinceManagerComponent() { { + const t = useTranslations(); + const {directionApp} = useDirection(); + const [selectedImage, setSelectedImage] = useState(""); + const [fileType, setfileType] = useState(null); + const [fileName, setfileName] = useState(null); + const [showAddIcon, setShowAddIcon] = useState(true); + const [openConfirmDialog, setOpenConfirmDialog] = useState(false); + const requestServer = useRequest({auth: true}) + + const formik = useFormik({ + initialValues: { + description: "", + confirm_img: null + }, + onSubmit: (values, {setSubmitting}) => { + const formData = new FormData(); + if (values.description != "") formData.append("expert_description", values.description); + if (values.confirm_img != null) formData.append("attachment", values.confirm_img); + + requestServer(`${CONFIRM_REFAHI_PROVINCE_MANAGER}/${rowId}`, 'post', { + data: formData, + }).then((response) => { + mutate(fetchUrl) + }).catch(() => { + }).finally(() => { + setSubmitting(false); + }); + }, + }); + + const handleDescriptionChange = (event) => { + formik.setFieldValue("description", event.target.value) + }; + const handleUploadChange = (event) => { + const uploadedFile = event.target?.files?.[0]; + if (uploadedFile) { + const maxFileSize = 2 * 1024 * 1024; + if (uploadedFile.size > maxFileSize) { + UploadFileNotification(t); + event.target.value = ""; + return; + } + + const fileType = event.target?.files?.[0].type; + const fileName = event.target?.files?.[0].name; + setSelectedImage(URL.createObjectURL(uploadedFile)); + setfileType(fileType); + setfileName(fileName); + formik.setFieldValue("confirm_img", uploadedFile); + setShowAddIcon(false); + } + }; + return ( + <> + + { + setOpenConfirmDialog(true) + }} + > + + + + + {t("ConfirmDialog.confirm")} + + + + + {t("ConfirmDialog.description")}{t("ConfirmDialog.optional")}} + value={formik.values.description} + onChange={handleDescriptionChange} + fullWidth + variant="outlined" + sx={{mt: 1}} + /> + + + {t("UploadSystem.upload_file")}{t("UploadSystem.optional")} + + + + + + + + + + + ); +}; +export default Confirm; \ No newline at end of file diff --git a/src/components/dashboard/refahi-province-manager/Form/RejectForm.jsx b/src/components/dashboard/refahi-province-manager/Form/RejectForm.jsx new file mode 100644 index 0000000..74f58c1 --- /dev/null +++ b/src/components/dashboard/refahi-province-manager/Form/RejectForm.jsx @@ -0,0 +1,144 @@ +import {REJECT_REFAHI_PROVINCE_MANAGER} from "@/core/data/apiRoutes"; +import { + Button, + Dialog, + DialogActions, + DialogContent, + DialogTitle, + IconButton, + Stack, + TextField, + Tooltip, + Typography, +} from "@mui/material"; +import {useTranslations} from "next-intl"; +import {useFormik} from "formik"; +import * as Yup from "yup"; +import {useState} from "react"; +import UploadSystem from "@/core/components/UploadSystem"; +import UploadFileNotification from "@/core/components/notifications/UploadFileNotification"; +import useDirection from "@/lib/app/hooks/useDirection"; +import ThumbDownIcon from "@mui/icons-material/ThumbDown"; +import useRequest from "@/lib/app/hooks/useRequest"; + +const Reject = ({rowId, fetchUrl, mutate}) => { + const [selectedImage, setSelectedImage] = useState(""); + const [fileType, setfileType] = useState(null); + const [fileName, setfileName] = useState(null); + const [showAddIcon, setShowAddIcon] = useState(true); + const t = useTranslations(); + const {directionApp} = useDirection(); + const [openRejectDialog, setOpenRejectDialog] = useState(false); + const requestServer = useRequest({auth: true}) + + const validationSchema = Yup.object().shape({ + description: Yup.string().required(t("RejectDialog.description_error")), + }); + + const formik = useFormik({ + initialValues: { + description: "", + reject_img: null + }, + validationSchema, + onSubmit: (values, {setSubmitting}) => { + const formData = new FormData(); + formData.append("expert_description", values.description); + if (values.reject_img != null) formData.append("attachment", values.reject_img); + + requestServer(`${REJECT_REFAHI_PROVINCE_MANAGER}/${rowId}`, 'post', { + data: formData, + }).then((response) => { + mutate(fetchUrl) + }).catch(() => { + }).finally(() => { + setSubmitting(false); + }); + }, + }); + + const handleDescriptionChange = (event) => { + formik.setFieldValue("description", event.target.value); + formik.handleChange(event); + }; + const handleUploadChange = (event) => { + const uploadedFile = event.target?.files?.[0]; + if (uploadedFile) { + const maxFileSize = 2 * 1024 * 1024; + if (uploadedFile.size > maxFileSize) { + UploadFileNotification(t); + event.target.value = ""; + return; + } + const fileType = event.target?.files?.[0].type; + const fileName = event.target?.files?.[0].name; + setSelectedImage(URL.createObjectURL(uploadedFile)); + setfileType(fileType); + setfileName(fileName); + formik.setFieldValue("reject_img", uploadedFile); + setShowAddIcon(false); + } + }; + return ( + <> + + setOpenRejectDialog(true)}> + + + + + {t("RejectDialog.reject")} + + + + + + + {t("UploadSystem.upload_file")}{t("UploadSystem.optional")} + + + + + + + + + + + ); +}; +export default Reject; \ No newline at end of file diff --git a/src/components/dashboard/refahi-province-manager/TableRowActions.jsx b/src/components/dashboard/refahi-province-manager/TableRowActions.jsx new file mode 100644 index 0000000..601240f --- /dev/null +++ b/src/components/dashboard/refahi-province-manager/TableRowActions.jsx @@ -0,0 +1,23 @@ +import {Box} from "@mui/material"; +import ConfirmForm from "./Form/ConfirmForm" +import RejectForm from "./Form/RejectForm" + +const TableRow = ({row, mutate, fetchUrl}) => { + + return ( + + + + + ); +}; + +export default TableRow; diff --git a/src/components/dashboard/refahi-province-manager/TableTollbar.jsx b/src/components/dashboard/refahi-province-manager/TableTollbar.jsx new file mode 100644 index 0000000..e69de29 diff --git a/src/components/dashboard/refahi-province-manager/index.jsx b/src/components/dashboard/refahi-province-manager/index.jsx new file mode 100644 index 0000000..ee5497e --- /dev/null +++ b/src/components/dashboard/refahi-province-manager/index.jsx @@ -0,0 +1,239 @@ +import DashboardLayouts from "@/layouts/dashboardLayouts"; +import {Box, IconButton, Typography} from "@mui/material"; +import ClearIcon from "@mui/icons-material/Clear"; +import {useMemo} from "react"; +import {faIR} from "@mui/x-date-pickers/locales"; +import {GET_REFAHI_PROVINCE_MANAGER} from "@/core/data/apiRoutes"; +import {useTranslations} from "next-intl"; +import TableRowActions from "./TableRowActions"; +import {LocalizationProvider, MobileDateTimePicker,} from "@mui/x-date-pickers"; +import {AdapterDateFnsJalali} from "@mui/x-date-pickers/AdapterDateFnsJalali"; +import moment from "jalali-moment"; +import DataTable from "@/core/components/DataTable"; + +function DashboardRefahiProvinceManagerComponent() { + const t = useTranslations(); + + const columns = useMemo( + () => [ + { + accessorFn: (row) => row.id, + id: "id", + header: t("RefahiProvinceManager.id"), + enableColumnFilter: true, + datatype: "numeric", + filterFn: "equals", + columnFilterModeOptions: [ + "equals", + "notEquals", + "contains", + "lessThan", + "greaterThan", + "between", + ], + Cell: ({renderedCellValue}) => ( + {renderedCellValue} + ), + }, + { + accessorFn: (row) => row.name, + id: "name", + header: t("RefahiProvinceManager.name"), + enableColumnFilter: true, + datatype: "text", + filterFn: "contains", + columnFilterModeOptions: ["contains", "equals", "notEquals"], + Cell: ({renderedCellValue}) => ( + {renderedCellValue} + ), + }, + { + accessorFn: (row) => row.national_id, + id: "national_id", + header: t("RefahiProvinceManager.national_id"), + enableColumnFilter: true, + datatype: "numeric", + filterFn: "equals", + columnFilterModeOptions: [ + "equals", + "notEquals", + "contains", + "lessThan", + "greaterThan", + "between", + ], + Cell: ({renderedCellValue}) => ( + {renderedCellValue} + ), + }, + { + accessorFn: (row) => row.phone_number, + id: "phone_number", + header: t("RefahiProvinceManager.phone_number"), + enableColumnFilter: true, + datatype: "numeric", + filterFn: "equals", + columnFilterModeOptions: [ + "equals", + "notEquals", + "contains", + "lessThan", + "greaterThan", + "between", + ], + Cell: ({renderedCellValue}) => ( + {renderedCellValue} + ), + }, + { + accessorFn: (row) => + moment(row.created_at).locale("fa").format("HH:mm | yyyy/MM/DD"), + id: "created_at", + header: t("RefahiProvinceManager.created_at"), + enableColumnFilter: true, + datatype: "date", + filterFn: "lessThan", + columnFilterModeOptions: ["lessThan", "greaterThan"], + Cell: ({renderedCellValue}) => { + return {renderedCellValue}; + }, + Header: ({column}) => {column.columnDef.header}, + Filter: ({column}) => { + const filterFnValue = column.columnDef._filterFn; + return ( + + + { + const date = new Date(newValue); + const formattedDate = moment(date) + .locale("en") + .format("YYYY-MM-DD HH:mm"); + column.setFilterValue(formattedDate); + }} + slotProps={{ + textField: { + placeholder: "تاریخ خود را وارد کنید", + helperText: `${t("filter_mode")}: ${t(filterFnValue)}`, + sx: {minWidth: "120px"}, + variant: "standard", + actionbar: {actions: ["accept", "today"]}, + }, + }} + value={ + column.getFilterValue() + ? new Date(column.getFilterValue()) + : null + } + /> + + { + column.setFilterValue(null); + }} + sx={{ + color: column.getFilterValue() + ? "rgba(0, 0, 0, 0.54)" + : "#bfbfbf", + }} + > + + + + ); + }, + }, + { + accessorFn: (row) => + moment(row.updated_at).locale("fa").format("HH:mm | YYYY/MM/DD"), + id: "updated_at", + header: t("RefahiProvinceManager.updated_at"), + enableColumnFilter: false, + datatype: "numeric", + Cell: ({renderedCellValue}) => ( + {renderedCellValue} + ), + }, + // { + // accessorFn: (row) => row.navgan_id, + // id: "navgan_id", + // header: t("RefahiProvinceManager.navgan_id"), + // enableColumnFilter: true, + // datatype: "numeric", + // filterFn: "equals", + // columnFilterModeOptions: [ + // "equals", + // "notEquals", + // "contains", + // "lessThan", + // "greaterThan", + // "between", + // ], + // Cell: ({renderedCellValue}) => ( + // {renderedCellValue} + // ), + // }, + // { + // accessorFn: (row) => row.vehicle_type, + // id: "vehicle_type", + // header: t("RefahiProvinceManager.vehicle_type"), + // enableColumnFilter: true, + // datatype: "text", + // filterFn: "contains", + // columnFilterModeOptions: ["contains", "equals", "notEquals"], + // Cell: ({renderedCellValue}) => ( + // {renderedCellValue} + // ), + // }, + { + accessorFn: (row) => row.state_name, + id: "state_id", + header: t("RefahiProvinceManager.state_name"), + enableColumnFilter: false, + datatype: "numeric", + // filterFn: "equals", + // filterSelectOptions: [ + // ], + // filterVariant: "select", + Cell: ({renderedCellValue}) => ( + {renderedCellValue} + ), + }, + ], + [] + ); + return ( + + + } + enableLastUpdate={true} + enablePinning={true} + enableDensityToggle={false} + initialState={{density: 'compact'}} //compact (small) //comfortable (medium) //spacious (large) + enableColumnFilters={true} + enableHiding={true} + enableFullScreenToggle={false} + enableGlobalFilter={false} + enableColumnResizing={false} // if you want true this you shold change renderRowActions props ** see https://www.material-react-table.com/docs/guides/row-actions + enableRowActions={true} + TableRowAction={TableRowActions} + /> + + + ); +} + +export default DashboardRefahiProvinceManagerComponent; diff --git a/src/core/data/apiRoutes.js b/src/core/data/apiRoutes.js index 409cfb8..ab72c08 100644 --- a/src/core/data/apiRoutes.js +++ b/src/core/data/apiRoutes.js @@ -67,16 +67,27 @@ export const REJECT_COMMERCIAL_CHIEF = BASE_URL + "/dashboard/commercial_chief/reject"; //commercial chief -//province manager -export const GET_PROVINCE_MANAGER = +//navgan province manager +export const GET_NAVGAN_PROVINCE_MANAGER = BASE_URL + "/dashboard/province_manager/show"; -export const CONFIRM_PROVINCE_MANAGER = +export const CONFIRM_NAVGAN_PROVINCE_MANAGER = BASE_URL + "/dashboard/province_manager/confirm"; -export const REJECT_PROVINCE_MANAGER = +export const REJECT_NAVGAN_PROVINCE_MANAGER = BASE_URL + "/dashboard/province_manager/reject"; -//province manager +//navgan province manager + +// refahi province manager +export const GET_REFAHI_PROVINCE_MANAGER = + BASE_URL + "/dashboard/refahi_province_manager/show"; + +export const CONFIRM_REFAHI_PROVINCE_MANAGER = + BASE_URL + "/dashboard/refahi_province_manager/confirm"; + +export const REJECT_REFAHI_PROVINCE_MANAGER = + BASE_URL + "/dashboard/refahi_province_manager/reject"; +//refahi province manager // development assistant export const GET_DEVELOPMENT_ASSISTANT = diff --git a/src/core/data/sidebarMenu.jsx b/src/core/data/sidebarMenu.jsx index c2e5645..9b6c804 100644 --- a/src/core/data/sidebarMenu.jsx +++ b/src/core/data/sidebarMenu.jsx @@ -58,9 +58,19 @@ const sidebarMenu = [ role: "transportation_assistant", }, { - key: "sidebar.province-manager", + key: "sidebar.navgan-province-manager", + secondary: "secondary.navgan-province-manager", type: "page", - route: "/dashboard/province-manager", + route: "/dashboard/navgan-province-manager", + icon: , + selected: false, + role: "province_manager", + }, + { + key: "sidebar.refahi-province-manager", + secondary: "secondary.refahi-province-manager", + type: "page", + route: "/dashboard/refahi-province-manager", icon: , selected: false, role: "province_manager", diff --git a/src/pages/dashboard/navgan-province-manager/index.jsx b/src/pages/dashboard/navgan-province-manager/index.jsx new file mode 100644 index 0000000..c726988 --- /dev/null +++ b/src/pages/dashboard/navgan-province-manager/index.jsx @@ -0,0 +1,26 @@ +import DashboardNavganProvinceManagerComponent from "src/components/dashboard/navgan-province-manager"; +import RolePermissionMiddleware from "@/middlewares/RolePermission"; +import WithAuthMiddleware from "@/middlewares/WithAuth"; +import {parse} from "next-useragent"; + +const requiredPermissions = ["province_manager"]; +export default function PassengerOffice() { + 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.province_manager_page", + isBot, + }, + }; +} diff --git a/src/pages/dashboard/province-manager/index.jsx b/src/pages/dashboard/refahi-province-manager/index.jsx similarity index 82% rename from src/pages/dashboard/province-manager/index.jsx rename to src/pages/dashboard/refahi-province-manager/index.jsx index 92b39e9..d7d2417 100644 --- a/src/pages/dashboard/province-manager/index.jsx +++ b/src/pages/dashboard/refahi-province-manager/index.jsx @@ -1,14 +1,14 @@ -import DashboardProvinceManagerComponent from "@/components/dashboard/province-manager"; import RolePermissionMiddleware from "@/middlewares/RolePermission"; import WithAuthMiddleware from "@/middlewares/WithAuth"; import {parse} from "next-useragent"; +import DashboardRefahiProvinceManagerComponent from "@/components/dashboard/refahi-province-manager"; const requiredPermissions = ["province_manager"]; export default function PassengerOffice() { return ( - + );