diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json
index f50b62e..8170a99 100644
--- a/public/locales/fa/app.json
+++ b/public/locales/fa/app.json
@@ -101,6 +101,16 @@
"vehicle_type": "نوع ماشین",
"state_name": "وضعیت درخواست"
},
+ "TransportationAssistance": {
+ "name": "نام",
+ "id": "کد ملی",
+ "phone_number": "موبایل",
+ "created_at": "تاریخ درخواست",
+ "updated_at": "تاریخ بروزرسانی",
+ "navgan_id": "کد ناوگان",
+ "vehicle_type": "نوع ماشین",
+ "state_name": "وضعیت درخواست"
+ },
"MachinaryOffice": {
"name": "نام",
"national_id": "کد ملی",
diff --git a/src/components/dashboard/transportation-assistance/Form/ConfirmForm.jsx b/src/components/dashboard/transportation-assistance/Form/ConfirmForm.jsx
new file mode 100644
index 0000000..132b850
--- /dev/null
+++ b/src/components/dashboard/transportation-assistance/Form/ConfirmForm.jsx
@@ -0,0 +1,41 @@
+import { CONFIRM_TRANSPORTATION_ASSISTANCE } from "@/core/data/apiRoutes";
+import {
+ Dialog,
+ DialogTitle,
+ DialogContent,
+ DialogContentText,
+ DialogActions,
+ Button,
+} from "@mui/material";
+import { useTranslations } from "next-intl";
+
+const ConfirmForm = ({
+ open,
+ handleClose,
+ handleDelete,
+ rowId,
+ confirmData,
+}) => {
+ const t = useTranslations();
+ const handleConfirm = () => {
+ handleDelete();
+ confirmData(CONFIRM_TRANSPORTATION_ASSISTANCE, rowId);
+ };
+ return (
+
+ );
+};
+export default ConfirmForm;
diff --git a/src/components/dashboard/transportation-assistance/Form/RejectForm.jsx b/src/components/dashboard/transportation-assistance/Form/RejectForm.jsx
new file mode 100644
index 0000000..5abd534
--- /dev/null
+++ b/src/components/dashboard/transportation-assistance/Form/RejectForm.jsx
@@ -0,0 +1,35 @@
+import { REJECT_TRANSPORTATION_ASSISTANCE } from "@/core/data/apiRoutes";
+import {
+ Dialog,
+ DialogTitle,
+ DialogContent,
+ DialogContentText,
+ DialogActions,
+ Button,
+} from "@mui/material";
+import { useTranslations } from "next-intl";
+
+const RejectForm = ({ open, handleClose, handleDelete, rowId, rejectData }) => {
+ const t = useTranslations();
+ const handleRejectRequest = () => {
+ handleDelete();
+ rejectData(REJECT_TRANSPORTATION_ASSISTANCE, rowId);
+ };
+ return (
+
+ );
+};
+export default RejectForm;
diff --git a/src/components/dashboard/transportation-assistance/TableRowActions.jsx b/src/components/dashboard/transportation-assistance/TableRowActions.jsx
new file mode 100644
index 0000000..f5ec46b
--- /dev/null
+++ b/src/components/dashboard/transportation-assistance/TableRowActions.jsx
@@ -0,0 +1,49 @@
+import ThumbUpAltIcon from "@mui/icons-material/ThumbUpAlt";
+import ThumbDownIcon from "@mui/icons-material/ThumbDown";
+import { Box, IconButton } from "@mui/material";
+import { useContext } from "react";
+import { DataTableContext } from "@/lib/app/contexts/DataTableContext";
+import ConfirmForm from "./Form/ConfirmForm";
+import RejectForm from "./Form/RejectForm";
+
+const TableRowActions = ({ row }) => {
+ const {
+ openConfirmDialog,
+ openRejectDialog,
+ handleOpenConfirmDialog,
+ handleOpenRejectDialog,
+ handleCloseConfirmDialog,
+ handleCloseRejectDialog,
+ handleConfirmDialog,
+ handleRejectDialog,
+ rowId,
+ confirmData,
+ rejectData,
+ } = useContext(DataTableContext);
+ return (
+
+ handleOpenConfirmDialog(row)}>
+
+
+
+ handleOpenRejectDialog(row)}>
+
+
+
+
+ );
+};
+
+export default TableRowActions;
diff --git a/src/components/dashboard/transportation-assistance/TableTollbar.jsx b/src/components/dashboard/transportation-assistance/TableTollbar.jsx
new file mode 100644
index 0000000..3f06d3b
--- /dev/null
+++ b/src/components/dashboard/transportation-assistance/TableTollbar.jsx
@@ -0,0 +1,13 @@
+import { Stack, Tooltip } from "@mui/material";
+import { useTranslations } from "next-intl";
+
+function TableToolbar() {
+ const t = useTranslations();
+ return (
+
+
+
+ );
+}
+
+export default TableToolbar;
diff --git a/src/components/dashboard/transportation-assistance/index.jsx b/src/components/dashboard/transportation-assistance/index.jsx
new file mode 100644
index 0000000..6dd3ccf
--- /dev/null
+++ b/src/components/dashboard/transportation-assistance/index.jsx
@@ -0,0 +1,177 @@
+import DataTableStructure from "@/core/components/DatatableStructure";
+import DashboardLayouts from "@/layouts/dashboardLayouts";
+import { Box, Typography } from "@mui/material";
+import { useMemo } from "react";
+// import TableToolbar from "./TableTollbar";
+import { GET_TRANSPORTATION_ASSISTANCE } from "@/core/data/apiRoutes";
+import { useTranslations } from "next-intl";
+import TableRowActions from "./TableRowActions";
+
+function DashboardTransportationAssistanceComponent() {
+ const t = useTranslations();
+ const columns = useMemo(
+ () => [
+ {
+ accessorFn: (row) => row.name,
+ id: "name",
+ header: t("TransportationAssistance.name"),
+ enableColumnFilter: true,
+ datatype: "text",
+ filterFn: "contains",
+ columnFilterModeOptions: ["contains", "equals", "notEquals"],
+ Cell: ({ renderedCellValue }) => (
+ {renderedCellValue}
+ ),
+ },
+ {
+ accessorFn: (row) => row.id,
+ id: "id",
+ header: t("TransportationAssistance.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("TransportationAssistance.phone_number"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({ renderedCellValue }) => (
+ {renderedCellValue}
+ ),
+ },
+ {
+ accessorFn: (row) => row.created_at,
+ id: "created_at",
+ header: t("TransportationAssistance.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("TransportationAssistance.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("TransportationAssistance.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("TransportationAssistance.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("TransportationAssistance.state_name"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ filterSelectOptions: [
+ { text: "Active", value: "0" },
+ { text: "Deactive", value: "1" },
+ ],
+ filterVariant: "select",
+ Cell: ({ renderedCellValue }) => (
+ {renderedCellValue}
+ ),
+ },
+ ],
+ []
+ );
+ 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 DashboardTransportationAssistanceComponent;
diff --git a/src/core/data/apiRoutes.js b/src/core/data/apiRoutes.js
index 79046bc..0f57675 100644
--- a/src/core/data/apiRoutes.js
+++ b/src/core/data/apiRoutes.js
@@ -23,6 +23,18 @@ export const REJECT_PASSENGER_OFFICE =
BASE_URL + "/dashboard/passenger_office_chief/reject";
//passenger office
+<<<<<<< HEAD
+//transportation assistance
+export const GET_TRANSPORTATION_ASSISTANCE =
+ BASE_URL + "/dashboard/transportation_asisstants/show";
+
+export const CONFIRM_TRANSPORTATION_ASSISTANCE =
+ BASE_URL + "/dashboard/transportation_asisstants/confirm";
+
+export const REJECT_TRANSPORTATION_ASSISTANCE =
+ BASE_URL + "/dashboard/transportation_asisstants/reject";
+//transportation assistance
+=======
//machinary office
export const GET_MACHINARY_OFFICE =
BASE_URL + "/dashboard/machinery_expert/show";
@@ -33,3 +45,4 @@ export const CONFIRM_MACHINARY_OFFICE =
export const REJECT_MACHINARY_OFFICE =
BASE_URL + "/dashboard/machinery_expert/reject";
//passenger office
+>>>>>>> a683c4029fdd3b3cae26a4cc7823835ad7e687b1
diff --git a/src/pages/dashboard/transportation-assistance/index.jsx b/src/pages/dashboard/transportation-assistance/index.jsx
new file mode 100644
index 0000000..9c089ad
--- /dev/null
+++ b/src/pages/dashboard/transportation-assistance/index.jsx
@@ -0,0 +1,23 @@
+import DashboardTransportationAssistanceComponent from "@/components/dashboard/transportation-assistance";
+import TitlePage from "@/core/components/TitlePage";
+import WithAuthMiddleware from "@/middlewares/WithAuth";
+import { parse } from "next-useragent";
+
+export default function TransportationAssistance() {
+ 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,
+ },
+ };
+}