diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json index 79010f4..9d1409c 100644 --- a/public/locales/fa/app.json +++ b/public/locales/fa/app.json @@ -6,6 +6,7 @@ "login": "ورود", "login_expert": "ورود کارشناس", "expert": "کارشناس", + "last_updated_at": "اخرین بروز رسانی", "header": { "open_profile": "پروفایل", "edit_profile": "ویرایش پروفایل", @@ -88,5 +89,15 @@ "warning_static_text": "خطا سرور", "success_static_text": "عملیات شما با موفقیت انجام شد", "pending": "در حال انجام..." + }, + "PassengerOffice": { + "name": "نام", + "id": "کد ملی", + "phone_number": "موبایل", + "created_at": "تاریخ درخواست", + "updated_at": "تاریخ بروزرسانی", + "navgan_id": "کد ناوگان", + "vehicle_type": "نوع ماشین", + "state_name": "وضعیت درخواست" } } diff --git a/src/components/dashboard/passenger-office/Form/ConfirmForm.jsx b/src/components/dashboard/passenger-office/Form/ConfirmForm.jsx new file mode 100644 index 0000000..5fd3f3b --- /dev/null +++ b/src/components/dashboard/passenger-office/Form/ConfirmForm.jsx @@ -0,0 +1,39 @@ +import { + Dialog, + DialogTitle, + DialogContent, + DialogContentText, + DialogActions, + Button, +} from "@mui/material"; +import { useTranslations } from "next-intl"; + +const ConfirmForm = ({ + open, + handleClose, + handleDelete, + rowId, + deleteData, +}) => { + const t = useTranslations(); + const handleDeleteExpert = () => { + handleDelete(); + }; + return ( + + {t("delete-dialog.confirm")} + + {t("delete-dialog.context")} + + + + + + + ); +}; +export default ConfirmForm; diff --git a/src/components/dashboard/passenger-office/Form/RejectForm.jsx b/src/components/dashboard/passenger-office/Form/RejectForm.jsx new file mode 100644 index 0000000..cf551a8 --- /dev/null +++ b/src/components/dashboard/passenger-office/Form/RejectForm.jsx @@ -0,0 +1,33 @@ +import { + Dialog, + DialogTitle, + DialogContent, + DialogContentText, + DialogActions, + Button, +} from "@mui/material"; +import { useTranslations } from "next-intl"; + +const RejectForm = ({ open, handleClose, handleDelete, rowId, deleteData }) => { + const t = useTranslations(); + const handleDeleteExpert = () => { + handleDelete(); + }; + return ( + + {t("delete-dialog.confirm")} + + {t("delete-dialog.context")} + + + + + + + ); +}; +export default RejectForm; diff --git a/src/components/dashboard/passenger-office/TableRowActions.jsx b/src/components/dashboard/passenger-office/TableRowActions.jsx index 0290214..832e77e 100644 --- a/src/components/dashboard/passenger-office/TableRowActions.jsx +++ b/src/components/dashboard/passenger-office/TableRowActions.jsx @@ -1,42 +1,38 @@ -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 ConfirmForm from "./Form/ConfirmForm"; +import RejectForm from "./Form/RejectForm"; + // import DeleteForm from "./Form/DeleteForm"; const TableRowActions = ({ row }) => { - const { - toggleDrawer, - setDrawerContent, - openDeleteDialog, - handleOpenDeleteDialog, - handleCloseDeleteDialog, - handleDeleteDialog, - rowId, - deleteData, - } = useContext(DataTableContext); + // const { + // openDeleteDialog, + // handleOpenDeleteDialog, + // handleCloseDeleteDialog, + // handleDeleteDialog, + // rowId, + // deleteData, + // } = useContext(DataTableContext); return ( - { - toggleDrawer(true); - // setDrawerContent(); - }} - > - + handleOpenDeleteDialog(row)}> + - handleOpenDeleteDialog(row)} - > - + {/* */} + handleOpenDeleteDialog(row)}> + - {/* - - - + ); } diff --git a/src/components/dashboard/passenger-office/index.jsx b/src/components/dashboard/passenger-office/index.jsx index 2d52dd3..98af2b7 100644 --- a/src/components/dashboard/passenger-office/index.jsx +++ b/src/components/dashboard/passenger-office/index.jsx @@ -1,20 +1,32 @@ 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 { format } from "date-fns-jalali"; import { useMemo } from "react"; -import TableToolbar from "./TableTollbar"; +// import TableToolbar from "./TableTollbar"; +import { GET_PASSENGER_OFFICE } from "@/core/data/apiRoutes"; +import { useTranslations } from "next-intl"; import TableRowActions from "./TableRowActions"; function DashboardPassengerOfficeComponent() { + const t = useTranslations(); const columns = useMemo( () => [ + { + accessorFn: (row) => row.name, + id: "name", + header: t("PassengerOffice.name"), + enableColumnFilter: true, + datatype: "text", + filterFn: "contains", + columnFilterModeOptions: ["contains", "equals", "notEquals"], + Cell: ({ renderedCellValue }) => ( + {renderedCellValue} + ), + }, { accessorFn: (row) => row.id, id: "id", - header: "Id", + header: t("PassengerOffice.id"), enableColumnFilter: true, datatype: "numeric", filterFn: "equals", @@ -30,56 +42,98 @@ function DashboardPassengerOfficeComponent() { {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", + header: t("PassengerOffice.phone_number"), enableColumnFilter: true, - datatype: "text", - filterFn: "contains", - columnFilterModeOptions: ["equals", "notEquals", "contains"], - muiTableBodyCellCopyButtonProps: { - fullWidth: true, - endIcon: , - sx: { justifyContent: "space-between" }, - }, + datatype: "numeric", + filterFn: "equals", + columnFilterModeOptions: [ + "equals", + "notEquals", + "contains", + "lessThan", + "greaterThan", + "between", + ], Cell: ({ renderedCellValue }) => ( {renderedCellValue} ), }, { - accessorFn: (row) => row.status, - id: "status", - header: "Status", + accessorFn: (row) => row.created_at, + id: "created_at", + header: t("PassengerOffice.created_at"), + enableColumnFilter: true, + datatype: "numeric", + filterFn: "equals", + columnFilterModeOptions: [ + "equals", + "notEquals", + "contains", + "lessThan", + "greaterThan", + "between", + ], + Cell: ({ renderedCellValue }) => ( + {renderedCellValue} + ), + }, + { + accessorFn: (row) => row.updated_at, + id: "updated_at", + header: t("PassengerOffice.updated_at"), + enableColumnFilter: true, + datatype: "numeric", + filterFn: "equals", + columnFilterModeOptions: [ + "equals", + "notEquals", + "contains", + "lessThan", + "greaterThan", + "between", + ], + Cell: ({ renderedCellValue }) => ( + {renderedCellValue} + ), + }, + { + accessorFn: (row) => row.navgan_id, + id: "navgan_id", + header: t("PassengerOffice.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("PassengerOffice.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("PassengerOffice.state_name"), enableColumnFilter: true, datatype: "numeric", filterFn: "equals", @@ -92,75 +146,6 @@ function DashboardPassengerOfficeComponent() { {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()} - /> - - ); - }, - }, ], [] ); @@ -168,11 +153,11 @@ function DashboardPassengerOfficeComponent() { } + // CustomToolbar={} enableLastUpdate={true} enablePinning={true} enableDensityToggle={true} diff --git a/src/core/data/apiRoutes.js b/src/core/data/apiRoutes.js index 1b299cc..5c73fcf 100644 --- a/src/core/data/apiRoutes.js +++ b/src/core/data/apiRoutes.js @@ -8,6 +8,17 @@ export const GET_USER_TOKEN = BASE_URL + "/dashboard/login"; export const CHANGE_PASSWORD = BASE_URL + "/dashboard/profile/change_password"; //end change password -//user data +//user data export const GET_USER_ROUTE = BASE_URL + "/dashboard/profile/info"; -//user data \ No newline at end of file +//user data + +//passenger office +export const GET_PASSENGER_OFFICE = + BASE_URL + "/dashboard/passenger_office_chief/show"; + +export const CONFIRM_PASSENGER_OFFICE = + BASE_URL + "/dashboard/passenger_office_chief/confirm"; + +export const REJECT_PASSENGER_OFFICE = + BASE_URL + "/dashboard/passenger_office_chief/reject"; +//passenger office diff --git a/src/lib/app/hooks/useDatatable.jsx b/src/lib/app/hooks/useDatatable.jsx index e0626e7..71d0b9d 100644 --- a/src/lib/app/hooks/useDatatable.jsx +++ b/src/lib/app/hooks/useDatatable.jsx @@ -4,7 +4,7 @@ import { useState, useReducer, useCallback, useContext } from "react"; import axios from "axios"; import ImageResizer from "@/core/components/ImageConvertor"; import useUser from "./useUser"; -import { ReloadDataTableContext } from "../contexts/ReloadDatatableContext"; +// import { ReloadDataTableContext } from "../contexts/ReloadDatatableContext"; const initialValues = { url: "", @@ -48,7 +48,7 @@ const reducer = (state, action) => { }; const useDataTable = () => { - const { setReloadDataTable } = useContext(ReloadDataTableContext); + // const { setReloadDataTable } = useContext(ReloadDataTableContext); const [state, dispatch] = useReducer(reducer, initialValues); const [drawerContent, setDrawerContent] = useState(null); const [openDeleteDialog, setOpenDeleteDialog] = useState(false); @@ -95,7 +95,7 @@ const useDataTable = () => { }, }) .then(() => { - setReloadDataTable(true); + // setReloadDataTable(true); }) .catch(() => {}); }, []); diff --git a/src/pages/dashboard/passenger-office/index.jsx b/src/pages/dashboard/passenger-office/index.jsx index 78ec016..36e2a95 100644 --- a/src/pages/dashboard/passenger-office/index.jsx +++ b/src/pages/dashboard/passenger-office/index.jsx @@ -1,6 +1,6 @@ import DashboardPassengerOfficeComponent from "@/components/dashboard/passenger-office"; import TitlePage from "@/core/components/TitlePage"; -import WithAuthMiddleware from "@/middlewares/WithoutAuth"; +import WithAuthMiddleware from "@/middlewares/WithAuth"; import { parse } from "next-useragent"; export default function PassengerOffice() {