From 6a3735982a6343b9b1037fc4dfa26bcd9a29c9d5 Mon Sep 17 00:00:00 2001 From: Amin Ghasempoor Date: Tue, 11 Jul 2023 11:52:56 +0330 Subject: [PATCH 1/3] initialize first demo of passenger boss page --- public/locales/fa/app.json | 3 +- .../passenger-boss/TableRowActions.jsx | 50 +++++ .../dashboard/passenger-boss/TableTollbar.jsx | 32 +++ .../dashboard/passenger-boss/index.jsx | 195 ++++++++++++++++++ src/pages/dashboard/passenger-boss/index.jsx | 23 +++ 5 files changed, 302 insertions(+), 1 deletion(-) create mode 100644 src/components/dashboard/passenger-boss/TableRowActions.jsx create mode 100644 src/components/dashboard/passenger-boss/TableTollbar.jsx create mode 100644 src/components/dashboard/passenger-boss/index.jsx create mode 100644 src/pages/dashboard/passenger-boss/index.jsx diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json index 09654eb..4a9cf3f 100644 --- a/public/locales/fa/app.json +++ b/public/locales/fa/app.json @@ -43,7 +43,8 @@ "error_message_required": "اجباری!" }, "Dashboard": { - "dashboard_page": "داشبورد" + "dashboard_page": "داشبورد", + "passenger_boss": "رئیس مسافر" }, "MuiDatePicker": { "date_picker_birthday": "تاریخ" diff --git a/src/components/dashboard/passenger-boss/TableRowActions.jsx b/src/components/dashboard/passenger-boss/TableRowActions.jsx new file mode 100644 index 0000000..0290214 --- /dev/null +++ b/src/components/dashboard/passenger-boss/TableRowActions.jsx @@ -0,0 +1,50 @@ +import DeleteIcon from "@mui/icons-material/Delete"; +import EditIcon from "@mui/icons-material/Edit"; +import { Box, IconButton } from "@mui/material"; +// import EditForm from "./Form/EditForm"; +import { useContext } from "react"; +import { DataTableContext } from "@/lib/app/contexts/DataTableContext"; +// import DeleteForm from "./Form/DeleteForm"; + +const TableRowActions = ({ row }) => { + const { + toggleDrawer, + setDrawerContent, + openDeleteDialog, + handleOpenDeleteDialog, + handleCloseDeleteDialog, + handleDeleteDialog, + rowId, + deleteData, + } = useContext(DataTableContext); + return ( + + { + toggleDrawer(true); + // setDrawerContent(); + }} + > + + + handleOpenDeleteDialog(row)} + > + + + {/* */} + + ); +}; + +export default TableRowActions; diff --git a/src/components/dashboard/passenger-boss/TableTollbar.jsx b/src/components/dashboard/passenger-boss/TableTollbar.jsx new file mode 100644 index 0000000..0b29ba8 --- /dev/null +++ b/src/components/dashboard/passenger-boss/TableTollbar.jsx @@ -0,0 +1,32 @@ +import { DataTableContext } from "@/lib/app/contexts/DataTableContext"; +import DataSaverOnIcon from "@mui/icons-material/DataSaverOn"; +import { Button, Stack, Tooltip } from "@mui/material"; +import { useTranslations } from "next-intl"; +import { useContext } from "react"; +// import AddForm from "./Form/AddForm"; + +function TableToolbar() { + const t = useTranslations(); + const { toggleDrawer, setDrawerContent } = useContext(DataTableContext); + return ( + + + + + + ); +} + +export default TableToolbar; diff --git a/src/components/dashboard/passenger-boss/index.jsx b/src/components/dashboard/passenger-boss/index.jsx new file mode 100644 index 0000000..46de5ba --- /dev/null +++ b/src/components/dashboard/passenger-boss/index.jsx @@ -0,0 +1,195 @@ +import DataTableStructure from "@/core/components/DatatableStructure"; +import DashboardLayouts from "@/layouts/dashboardLayouts"; +import { ContentCopy } from "@mui/icons-material"; +import { Box, Typography } from "@mui/material"; +import { DateTimePicker, LocalizationProvider } from "@mui/x-date-pickers"; +import { useTranslations } from "next-intl"; +import { useMemo } from "react"; +import TableToolbar from "./TableTollbar"; +import TableRowActions from "./TableRowActions"; + +const DashboardPassengerBossComponent = () => { + const t = useTranslations(); + + const columns = useMemo( + () => [ + { + accessorFn: (row) => row.id, + id: "id", + header: "Id", + enableColumnFilter: true, + datatype: "numeric", + filterFn: "equals", + columnFilterModeOptions: [ + "equals", + "notEquals", + "contains", + "lessThan", + "greaterThan", + "between", + ], + Cell: ({ renderedCellValue }) => ( + {renderedCellValue} + ), + }, + { + accessorFn: (row) => row.username, + id: "username", + header: "Username", + enableColumnFilter: true, + datatype: "text", + filterFn: "contains", + columnFilterModeOptions: ["contains", "equals", "notEquals"], + Cell: ({ renderedCellValue }) => ( + {renderedCellValue} + ), + }, + { + accessorFn: (row) => row.name, + id: "name", + header: "Name", + enableColumnFilter: true, + datatype: "text", + filterFn: "contains", + columnFilterModeOptions: ["contains", "equals", "notEquals"], + muiTableBodyCellCopyButtonProps: { + fullWidth: true, + endIcon: , + sx: { justifyContent: "space-between" }, + }, + Cell: ({ renderedCellValue }) => ( + {renderedCellValue} + ), + }, + { + accessorFn: (row) => row.phone_number, + id: "phone_number", + header: "Phone Number", + enableColumnFilter: true, + datatype: "text", + filterFn: "contains", + columnFilterModeOptions: ["equals", "notEquals", "contains"], + muiTableBodyCellCopyButtonProps: { + fullWidth: true, + endIcon: , + sx: { justifyContent: "space-between" }, + }, + Cell: ({ renderedCellValue }) => ( + {renderedCellValue} + ), + }, + { + accessorFn: (row) => row.status, + id: "status", + header: "Status", + enableColumnFilter: true, + datatype: "numeric", + filterFn: "equals", + filterSelectOptions: [ + { text: "Active", value: "0" }, + { text: "Deactive", value: "1" }, + ], + filterVariant: "select", + Cell: ({ renderedCellValue }) => ( + {renderedCellValue} + ), + }, + { + accessorFn: (row) => row.gender, + id: "gender", + header: "Gender", + enableColumnFilter: true, + datatype: "text", + filterFn: "equals", + filterSelectOptions: [ + { text: "Male", value: "male" }, + { text: "Female", value: "female" }, + ], + filterVariant: "select", + Cell: ({ renderedCellValue }) => ( + {renderedCellValue} + ), + }, + { + accessorFn: (row) => row.national_id_code, + id: "national_id_code", + header: "National Id Code", + enableColumnFilter: true, + datatype: "text", + filterFn: "contains", + columnFilterModeOptions: ["equals", "notEquals", "contains"], + muiTableBodyCellCopyButtonProps: { + fullWidth: true, + endIcon: , + sx: { justifyContent: "space-between" }, + }, + Cell: ({ renderedCellValue }) => ( + {renderedCellValue} + ), + }, + { + accessorFn: (row) => new Date(row.updated_at), + id: "updated_at", + header: "Update Date", + enableColumnFilter: true, + datatype: "date", + filterFn: "lessThan", + columnFilterModeOptions: ["lessThan", "greaterThan"], + Cell: ({ renderedCellValue }) => { + const date = new Date(renderedCellValue); + const formattedDate = format(date, "MM/dd/yyyy HH:mm"); + return {formattedDate}; + }, + Header: ({ column }) => {column.columnDef.header}, + Filter: ({ column }) => { + return ( + + { + const date = new Date(newValue); + const formattedDate = format(date, "yyyy-MM-dd HH:mm"); + column.setFilterValue(formattedDate); + }} + slotProps={{ + textField: { + helperText: `Filter Mode: ${column.columnDef._filterFn}`, + sx: { minWidth: "120px" }, + variant: "standard", + }, + }} + value={column.getFilterValue()} + /> + + ); + }, + }, + ], + [] + ); + + return ( + + + } + enableLastUpdate={true} + enablePinning={true} + enableDensityToggle={true} + 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} + renderRowActions={({ row }) => } + /> + + + ); +}; + +export default DashboardPassengerBossComponent; diff --git a/src/pages/dashboard/passenger-boss/index.jsx b/src/pages/dashboard/passenger-boss/index.jsx new file mode 100644 index 0000000..0920933 --- /dev/null +++ b/src/pages/dashboard/passenger-boss/index.jsx @@ -0,0 +1,23 @@ +import DashboardPassengerBossComponent from "@/components/dashboard/passenger-boss"; +import TitlePage from "@/core/components/TitlePage"; +import WithAuthMiddleware from "@/middlewares/WithoutAuth"; +import { parse } from "next-useragent"; + +export default function PassengerBoss() { + return ( + + + + + ); +} + +export async function getServerSideProps({ req, locale }) { + const { isBot } = parse(req.headers["user-agent"]); + return { + props: { + messages: (await import(`&/locales/${locale}/app.json`)).default, + isBot, + }, + }; +} From b9ce99d575e8f5f5eddf63528ce211d6b216d4ac Mon Sep 17 00:00:00 2001 From: Amin Ghasempoor Date: Sun, 16 Jul 2023 16:56:41 +0330 Subject: [PATCH 2/3] auth middleware --- src/pages/dashboard/passenger-boss/index.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/dashboard/passenger-boss/index.jsx b/src/pages/dashboard/passenger-boss/index.jsx index 0920933..961d766 100644 --- a/src/pages/dashboard/passenger-boss/index.jsx +++ b/src/pages/dashboard/passenger-boss/index.jsx @@ -1,6 +1,6 @@ import DashboardPassengerBossComponent from "@/components/dashboard/passenger-boss"; import TitlePage from "@/core/components/TitlePage"; -import WithAuthMiddleware from "@/middlewares/WithoutAuth"; +import WithAuthMiddleware from "@/middlewares/WithAuth"; import { parse } from "next-useragent"; export default function PassengerBoss() { From 233181165c7cec1efbf6fe484304e12da2ec321f Mon Sep 17 00:00:00 2001 From: Amin Ghasempoor Date: Tue, 18 Jul 2023 16:34:32 +0330 Subject: [PATCH 3/3] passenger boss implement --- public/locales/fa/app.json | 23 +- .../machinary-office/Form/ConfirmForm.jsx | 4 +- .../passenger-boss/Form/ConfirmForm.jsx | 103 +++++++++ .../passenger-boss/Form/RejectForm.jsx | 76 +++++++ .../passenger-boss/TableRowActions.jsx | 60 ++--- .../dashboard/passenger-boss/TableTollbar.jsx | 23 +- .../dashboard/passenger-boss/index.jsx | 205 ++++++++++-------- src/core/data/apiRoutes.js | 12 + 8 files changed, 359 insertions(+), 147 deletions(-) create mode 100644 src/components/dashboard/passenger-boss/Form/ConfirmForm.jsx create mode 100644 src/components/dashboard/passenger-boss/Form/RejectForm.jsx diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json index d77b6b8..7437875 100644 --- a/public/locales/fa/app.json +++ b/public/locales/fa/app.json @@ -19,9 +19,9 @@ }, "sidebar": { "dashboard": "داشبورد", - "passenger-office": "اداره مسافر", + "passenger-office": "اداره مسافر (توزیع درخواست)", "machinary-office": "ماشین آلات", - "passenger-boss": "رئیس مسافر", + "passenger-boss": "رئیس مسافر (کارگروه استانی)", "transportation-assistance": "معاونت حمل و نقل", "manager": "مدیر کل", "change-password": "تغییر رمز عبور", @@ -103,6 +103,17 @@ "vehicle_type": "نوع ماشین", "state_name": "وضعیت درخواست" }, + "PassengerBoss": { + "name": "نام", + "id": "کد یکتا", + "national_id": "کد ملی", + "phone_number": "موبایل", + "created_at": "تاریخ درخواست", + "updated_at": "تاریخ بروزرسانی", + "navgan_id": "کد ناوگان", + "vehicle_type": "نوع ماشین", + "state_name": "وضعیت درخواست" + }, "TransportationAssistance": { "name": "نام", "id": "کد یکتا", @@ -123,8 +134,7 @@ "updated_at": "تاریخ بروزرسانی", "navgan_id": "کد ناوگان", "vehicle_type": "نوع ماشین", - "state_name": "وضعیت درخواست", - "proposed_amount": "مقدار پیشنهادی" + "state_name": "وضعیت درخواست" }, "ConfirmDialog": { "confirm": "تایید", @@ -134,7 +144,10 @@ "amount_error": "وارد کردن مقدار پیشنهادی الزامیست", "description_error": "وارد کردن توضیحات الزامی است!", "description": "توضیحات", - "choose_file": "انتخاب فایل" + "choose_file": "انتخاب فایل", + "approved_amount": "مبلغ تصویب شده", + "approved_amount_error": "وارد کردن مبلغ تصویب شده الزامیست", + "proposed_amount": "مقدار پیشنهادی" }, "RejectDialog": { "reject": "عدم تایید", diff --git a/src/components/dashboard/machinary-office/Form/ConfirmForm.jsx b/src/components/dashboard/machinary-office/Form/ConfirmForm.jsx index 4e7ac76..55ae682 100644 --- a/src/components/dashboard/machinary-office/Form/ConfirmForm.jsx +++ b/src/components/dashboard/machinary-office/Form/ConfirmForm.jsx @@ -56,7 +56,7 @@ const ConfirmForm = ({ open, handleClose, rowId, confirmData }) => { name="description" multiline rows={8} - placeholder={t("RejectDialog.description")} + placeholder={t("ConfirmDialog.description")} value={description} onChange={handleDescriptionChange} fullWidth @@ -65,7 +65,7 @@ const ConfirmForm = ({ open, handleClose, rowId, confirmData }) => { /> { + const t = useTranslations(); + const [proposedAmount, setProposedAmount] = useState(""); + const [description, setDescription] = useState(""); + + //formik + const validationSchema = Yup.object().shape({ + proposed_amount: Yup.string().required( + t("ConfirmDialog.approved_amount_error") + ), + }); + const formik = useFormik({ + initialValues: { + proposed_amount: "", + description: "", + }, + validationSchema, + onSubmit: () => { + const formData = new FormData(); + formData.append("approved_amount", proposedAmount); + if (description != "") formData.append("expert_description", description); + handleClose(); + confirmData(CONFIRM_PASSENGER_BOSS, rowId, formData); + }, + }); + + const handleDescriptionChange = (event) => { + setDescription(event.target.value); + }; + const handleAmountChange = (event) => { + if (/^\d*$/.test(event.target.value)) { + setProposedAmount(event.target.value); + } + formik.handleChange(event); + }; + + return ( + + {t("ConfirmDialog.confirm")} + + {t("ConfirmDialog.context")} + + + + + + + + + ); +}; +export default ConfirmForm; diff --git a/src/components/dashboard/passenger-boss/Form/RejectForm.jsx b/src/components/dashboard/passenger-boss/Form/RejectForm.jsx new file mode 100644 index 0000000..18a48a7 --- /dev/null +++ b/src/components/dashboard/passenger-boss/Form/RejectForm.jsx @@ -0,0 +1,76 @@ +import { REJECT_PASSENGER_BOSS } from "@/core/data/apiRoutes"; +import { + Dialog, + DialogTitle, + DialogContent, + DialogContentText, + DialogActions, + Button, + TextField, +} from "@mui/material"; +import { useTranslations } from "next-intl"; +import { useFormik } from "formik"; +import * as Yup from "yup"; +import { useState } from "react"; + +const RejectForm = ({ open, handleClose, rowId, rejectData }) => { + const t = useTranslations(); + const [description, setDescription] = useState(""); + + const validationSchema = Yup.object().shape({ + description: Yup.string().required(t("RejectDialog.description_error")), + }); + + const formik = useFormik({ + initialValues: { + description: "", + }, + validationSchema, + onSubmit: () => { + const formData = new FormData(); + formData.append("expert_description", description); + handleClose(); + rejectData(REJECT_PASSENGER_BOSS, rowId, formData); + }, + }); + + const handleDescriptionChange = (event) => { + setDescription(event.target.value); + formik.handleChange(event); + }; + + return ( + + {t("RejectDialog.reject")} + + {t("RejectDialog.context")} + + + + + + + + ); +}; + +export default RejectForm; diff --git a/src/components/dashboard/passenger-boss/TableRowActions.jsx b/src/components/dashboard/passenger-boss/TableRowActions.jsx index 0290214..e9e815e 100644 --- a/src/components/dashboard/passenger-boss/TableRowActions.jsx +++ b/src/components/dashboard/passenger-boss/TableRowActions.jsx @@ -1,48 +1,52 @@ -import DeleteIcon from "@mui/icons-material/Delete"; -import EditIcon from "@mui/icons-material/Edit"; +import ThumbUpAltIcon from "@mui/icons-material/ThumbUpAlt"; +import ThumbDownIcon from "@mui/icons-material/ThumbDown"; import { Box, IconButton } from "@mui/material"; -// import EditForm from "./Form/EditForm"; import { useContext } from "react"; import { DataTableContext } from "@/lib/app/contexts/DataTableContext"; -// import DeleteForm from "./Form/DeleteForm"; +import ConfirmForm from "./Form/ConfirmForm"; +import RejectForm from "./Form/RejectForm"; const TableRowActions = ({ row }) => { const { - toggleDrawer, - setDrawerContent, - openDeleteDialog, - handleOpenDeleteDialog, - handleCloseDeleteDialog, - handleDeleteDialog, + openConfirmDialog, + openRejectDialog, + handleOpenConfirmDialog, + handleOpenRejectDialog, + handleCloseConfirmDialog, + handleCloseRejectDialog, rowId, - deleteData, + confirmData, + rejectData, } = useContext(DataTableContext); return ( { - toggleDrawer(true); - // setDrawerContent(); + handleOpenConfirmDialog(row); }} > - + - handleOpenDeleteDialog(row)} - > - + {openConfirmDialog && ( + + )} + handleOpenRejectDialog(row)}> + - {/* */} + {openRejectDialog && ( + + )} ); }; diff --git a/src/components/dashboard/passenger-boss/TableTollbar.jsx b/src/components/dashboard/passenger-boss/TableTollbar.jsx index 0b29ba8..3f06d3b 100644 --- a/src/components/dashboard/passenger-boss/TableTollbar.jsx +++ b/src/components/dashboard/passenger-boss/TableTollbar.jsx @@ -1,30 +1,11 @@ -import { DataTableContext } from "@/lib/app/contexts/DataTableContext"; -import DataSaverOnIcon from "@mui/icons-material/DataSaverOn"; -import { Button, Stack, Tooltip } from "@mui/material"; +import { Stack, Tooltip } from "@mui/material"; import { useTranslations } from "next-intl"; -import { useContext } from "react"; -// import AddForm from "./Form/AddForm"; function TableToolbar() { const t = useTranslations(); - const { toggleDrawer, setDrawerContent } = useContext(DataTableContext); return ( - - - + ); } diff --git a/src/components/dashboard/passenger-boss/index.jsx b/src/components/dashboard/passenger-boss/index.jsx index 46de5ba..c39322d 100644 --- a/src/components/dashboard/passenger-boss/index.jsx +++ b/src/components/dashboard/passenger-boss/index.jsx @@ -1,14 +1,20 @@ import DataTableStructure from "@/core/components/DatatableStructure"; import DashboardLayouts from "@/layouts/dashboardLayouts"; -import { ContentCopy } from "@mui/icons-material"; import { Box, Typography } from "@mui/material"; -import { DateTimePicker, LocalizationProvider } from "@mui/x-date-pickers"; -import { useTranslations } from "next-intl"; import { useMemo } from "react"; -import TableToolbar from "./TableTollbar"; +// import TableToolbar from "./TableTollbar"; +import { GET_PASSENGER_BOSS } from "@/core/data/apiRoutes"; +import { useTranslations } from "next-intl"; import TableRowActions from "./TableRowActions"; +import { format } from "date-fns-jalali"; +import { + LocalizationProvider, + MobileDateTimePicker, +} from "@mui/x-date-pickers"; +import { AdapterDateFnsJalali } from "@mui/x-date-pickers/AdapterDateFnsJalali"; +import moment from "moment"; -const DashboardPassengerBossComponent = () => { +function DashboardPassengerOfficeComponent() { const t = useTranslations(); const columns = useMemo( @@ -16,7 +22,7 @@ const DashboardPassengerBossComponent = () => { { accessorFn: (row) => row.id, id: "id", - header: "Id", + header: t("PassengerBoss.id"), enableColumnFilter: true, datatype: "numeric", filterFn: "equals", @@ -33,9 +39,9 @@ const DashboardPassengerBossComponent = () => { ), }, { - accessorFn: (row) => row.username, - id: "username", - header: "Username", + accessorFn: (row) => row.name, + id: "name", + header: t("PassengerBoss.name"), enableColumnFilter: true, datatype: "text", filterFn: "contains", @@ -45,18 +51,20 @@ const DashboardPassengerBossComponent = () => { ), }, { - accessorFn: (row) => row.name, - id: "name", - header: "Name", + accessorFn: (row) => row.national_id, + id: "national_id", + header: t("PassengerBoss.national_id"), enableColumnFilter: true, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["contains", "equals", "notEquals"], - muiTableBodyCellCopyButtonProps: { - fullWidth: true, - endIcon: , - sx: { justifyContent: "space-between" }, - }, + datatype: "numeric", + filterFn: "equals", + columnFilterModeOptions: [ + "equals", + "notEquals", + "contains", + "lessThan", + "greaterThan", + "between", + ], Cell: ({ renderedCellValue }) => ( {renderedCellValue} ), @@ -64,90 +72,48 @@ const DashboardPassengerBossComponent = () => { { accessorFn: (row) => row.phone_number, id: "phone_number", - header: "Phone Number", - enableColumnFilter: true, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], - muiTableBodyCellCopyButtonProps: { - fullWidth: true, - endIcon: , - sx: { justifyContent: "space-between" }, - }, - Cell: ({ renderedCellValue }) => ( - {renderedCellValue} - ), - }, - { - accessorFn: (row) => row.status, - id: "status", - header: "Status", + header: t("PassengerBoss.phone_number"), enableColumnFilter: true, datatype: "numeric", filterFn: "equals", - filterSelectOptions: [ - { text: "Active", value: "0" }, - { text: "Deactive", value: "1" }, + columnFilterModeOptions: [ + "equals", + "notEquals", + "contains", + "lessThan", + "greaterThan", + "between", ], - filterVariant: "select", Cell: ({ renderedCellValue }) => ( {renderedCellValue} ), }, { - accessorFn: (row) => row.gender, - id: "gender", - header: "Gender", - enableColumnFilter: true, - datatype: "text", - filterFn: "equals", - filterSelectOptions: [ - { text: "Male", value: "male" }, - { text: "Female", value: "female" }, - ], - filterVariant: "select", - Cell: ({ renderedCellValue }) => ( - {renderedCellValue} - ), - }, - { - accessorFn: (row) => row.national_id_code, - id: "national_id_code", - header: "National Id Code", - enableColumnFilter: true, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], - muiTableBodyCellCopyButtonProps: { - fullWidth: true, - endIcon: , - sx: { justifyContent: "space-between" }, - }, - Cell: ({ renderedCellValue }) => ( - {renderedCellValue} - ), - }, - { - accessorFn: (row) => new Date(row.updated_at), - id: "updated_at", - header: "Update Date", + accessorFn: (row) => + format(new Date(row.created_at), "HH:mm | yyyy/mm/dd"), + id: "created_at", + header: t("PassengerBoss.created_at"), enableColumnFilter: true, datatype: "date", filterFn: "lessThan", columnFilterModeOptions: ["lessThan", "greaterThan"], Cell: ({ renderedCellValue }) => { - const date = new Date(renderedCellValue); - const formattedDate = format(date, "MM/dd/yyyy HH:mm"); - return {formattedDate}; + return ( + + {renderedCellValue} + + ); }, Header: ({ column }) => {column.columnDef.header}, Filter: ({ column }) => { return ( - - + { const date = new Date(newValue); - const formattedDate = format(date, "yyyy-MM-dd HH:mm"); + const formattedDate = moment(date) + .locale("en") + .format("YYYY-MM-DD HH:mm"); column.setFilterValue(formattedDate); }} slotProps={{ @@ -157,25 +123,82 @@ const DashboardPassengerBossComponent = () => { variant: "standard", }, }} - value={column.getFilterValue()} + value={moment(column.getFilterValue()) + .locale("fa") + .format("yyyy/mm/dd HH:mm")} /> ); }, }, + { + accessorFn: (row) => + format(new Date(row.updated_at), "HH:mm | yyyy/mm/dd"), + id: "updated_at", + header: t("PassengerBoss.updated_at"), + enableColumnFilter: false, + datatype: "numeric", + Cell: ({ renderedCellValue }) => ( + {renderedCellValue} + ), + }, + { + accessorFn: (row) => row.navgan_id, + id: "navgan_id", + header: t("PassengerBoss.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("PassengerBoss.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("PassengerBoss.state_name"), + enableColumnFilter: false, + datatype: "numeric", + // filterFn: "equals", + // filterSelectOptions: [ + // ], + // filterVariant: "select", + Cell: ({ renderedCellValue }) => ( + {renderedCellValue} + ), + }, ], [] ); - return ( } + // CustomToolbar={} enableLastUpdate={true} enablePinning={true} enableDensityToggle={true} @@ -190,6 +213,6 @@ const DashboardPassengerBossComponent = () => { ); -}; +} -export default DashboardPassengerBossComponent; +export default DashboardPassengerOfficeComponent; diff --git a/src/core/data/apiRoutes.js b/src/core/data/apiRoutes.js index 716ca0f..eb28399 100644 --- a/src/core/data/apiRoutes.js +++ b/src/core/data/apiRoutes.js @@ -23,6 +23,17 @@ export const REJECT_PASSENGER_OFFICE = BASE_URL + "/dashboard/passenger_office_chief/reject"; //passenger office +//passenger boss +export const GET_PASSENGER_BOSS = + BASE_URL + "/dashboard/province_working_group/show"; + +export const CONFIRM_PASSENGER_BOSS = + BASE_URL + "/dashboard/province_working_group/confirm"; + +export const REJECT_PASSENGER_BOSS = + BASE_URL + "/dashboard/province_working_group/reject"; +//passenger boss + //transportation assistance export const GET_TRANSPORTATION_ASSISTANCE = BASE_URL + "/dashboard/transportation_assistant/show"; @@ -33,6 +44,7 @@ export const CONFIRM_TRANSPORTATION_ASSISTANCE = export const REJECT_TRANSPORTATION_ASSISTANCE = BASE_URL + "/dashboard/transportation_assistant/reject"; //transportation assistance + //machinary office export const GET_MACHINARY_OFFICE = BASE_URL + "/dashboard/machinery_expert/show";