diff --git a/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/reports/driverReports/page.js b/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/reports/driverReports/page.js
index 95cfc33..6df3acd 100644
--- a/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/reports/driverReports/page.js
+++ b/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/reports/driverReports/page.js
@@ -1,18 +1,18 @@
-import WithPermission from "@/core/middlewares/withPermission";
-import DriverReportsPage from "@/components/dashboard/roadMissions/reports/diverReports";
-
-export const metadata = {
- title: "کارتابل گزارش راننده",
-};
-
-export default function Page() {
- return (
-
-
-
- );
-}
+import WithPermission from "@/core/middlewares/withPermission";
+import DriverReportsPage from "@/components/dashboard/roadMissions/reports/diverReports";
+
+export const metadata = {
+ title: "کارتابل گزارش راننده",
+};
+
+export default function Page() {
+ return (
+
+
+
+ );
+}
diff --git a/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/reports/machineTypeReports/page.js b/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/reports/machineTypeReports/page.js
index e8725f1..0eb121e 100644
--- a/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/reports/machineTypeReports/page.js
+++ b/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/reports/machineTypeReports/page.js
@@ -1,18 +1,18 @@
-import WithPermission from "@/core/middlewares/withPermission";
-import MachinesTypeReportsPage from "@/components/dashboard/roadMissions/reports/machinesTypeReports";
-
-export const metadata = {
- title: "کارتابل گزارش نوع ماشینها",
-};
-
-export default function Page() {
- return (
-
-
-
- );
-}
+import WithPermission from "@/core/middlewares/withPermission";
+import MachinesTypeReportsPage from "@/components/dashboard/roadMissions/reports/machinesTypeReports";
+
+export const metadata = {
+ title: "کارتابل گزارش نوع ماشینها",
+};
+
+export default function Page() {
+ return (
+
+
+
+ );
+}
diff --git a/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/reports/machinesReports/page.js b/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/reports/machinesReports/page.js
index 0656840..97c952d 100644
--- a/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/reports/machinesReports/page.js
+++ b/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/reports/machinesReports/page.js
@@ -1,18 +1,18 @@
-import MachinesReportsPage from "@/components/dashboard/roadMissions/reports/machinesReports";
-import WithPermission from "@/core/middlewares/withPermission";
-
-export const metadata = {
- title: "کارتابل گزارش ماشینها",
-};
-
-export default function Page() {
- return (
-
-
-
- );
-}
+import MachinesReportsPage from "@/components/dashboard/roadMissions/reports/machinesReports";
+import WithPermission from "@/core/middlewares/withPermission";
+
+export const metadata = {
+ title: "کارتابل گزارش ماشینها",
+};
+
+export default function Page() {
+ return (
+
+
+
+ );
+}
diff --git a/src/components/dashboard/roadMissions/reports/diverReports/DriverReportsList.jsx b/src/components/dashboard/roadMissions/reports/diverReports/DriverReportsList.jsx
index 94880cd..a279dc4 100644
--- a/src/components/dashboard/roadMissions/reports/diverReports/DriverReportsList.jsx
+++ b/src/components/dashboard/roadMissions/reports/diverReports/DriverReportsList.jsx
@@ -1,71 +1,71 @@
-"use client";
-import DataTableWithAuth from "@/core/components/DataTableWithAuth";
-import { Box } from "@mui/material";
-import { useMemo } from "react";
-import Toolbar from "./Toolbar";
-import RowActions from "./RowActions";
-
-const DriverReportsList = ({ data, specialFilter }) => {
- const columns = useMemo(() => {
- return [
- {
- accessorKey: "driver_id",
- header: "کد یکتا",
- id: "driver_id",
- enableColumnFilter: false,
- enableSorting: false,
- datatype: "numeric",
- grow: false,
- size: 50,
- },
- {
- accessorKey: "driver_name",
- header: "نام راننده",
- id: "driver_name",
- enableColumnFilter: false,
- enableSorting: false,
- datatype: "text",
- grow: false,
- size: 50,
- },
- {
- accessorKey: "func",
- header: "کارکرد",
- id: "func",
- enableColumnFilter: false,
- enableSorting: false,
- datatype: "number",
- grow: false,
- size: 50,
- },
- {
- accessorKey: "missions",
- header: "تعداد ماموریت",
- id: "missions",
- enableColumnFilter: false,
- enableSorting: false,
- datatype: "number",
- grow: false,
- size: 50,
- },
- ];
- }, []);
-
- return (
-
-
-
- );
-};
-
-export default DriverReportsList;
+"use client";
+import DataTableWithAuth from "@/core/components/DataTableWithAuth";
+import { Box } from "@mui/material";
+import { useMemo } from "react";
+import Toolbar from "./Toolbar";
+import RowActions from "./RowActions";
+
+const DriverReportsList = ({ data, specialFilter }) => {
+ const columns = useMemo(() => {
+ return [
+ {
+ accessorKey: "driver_id",
+ header: "کد یکتا",
+ id: "driver_id",
+ enableColumnFilter: false,
+ enableSorting: false,
+ datatype: "numeric",
+ grow: false,
+ size: 50,
+ },
+ {
+ accessorKey: "driver_name",
+ header: "نام راننده",
+ id: "driver_name",
+ enableColumnFilter: false,
+ enableSorting: false,
+ datatype: "text",
+ grow: false,
+ size: 50,
+ },
+ {
+ accessorKey: "func",
+ header: "کارکرد",
+ id: "func",
+ enableColumnFilter: false,
+ enableSorting: false,
+ datatype: "number",
+ grow: false,
+ size: 50,
+ },
+ {
+ accessorKey: "missions",
+ header: "تعداد ماموریت",
+ id: "missions",
+ enableColumnFilter: false,
+ enableSorting: false,
+ datatype: "number",
+ grow: false,
+ size: 50,
+ },
+ ];
+ }, []);
+
+ return (
+
+
+
+ );
+};
+
+export default DriverReportsList;
diff --git a/src/components/dashboard/roadMissions/reports/diverReports/RowActions/DriverDetails/Form/DriverDetailsDialog/DriverList/index.jsx b/src/components/dashboard/roadMissions/reports/diverReports/RowActions/DriverDetails/Form/DriverDetailsDialog/DriverList/index.jsx
index 3fc9f6f..2d13661 100644
--- a/src/components/dashboard/roadMissions/reports/diverReports/RowActions/DriverDetails/Form/DriverDetailsDialog/DriverList/index.jsx
+++ b/src/components/dashboard/roadMissions/reports/diverReports/RowActions/DriverDetails/Form/DriverDetailsDialog/DriverList/index.jsx
@@ -1,106 +1,106 @@
-import DataTableWithAuth from "@/core/components/DataTableWithAuth";
-import { GET_DRIVER_DETAILS } from "@/core/utils/routes";
-import { Box } from "@mui/material";
-import { useMemo } from "react";
-
-const DriverList = ({ row }) => {
- const columns = useMemo(
- () => [
- {
- accessorKey: "id",
- header: "کد یکتا",
- id: "id",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 80,
- },
- {
- accessorKey: "province_name",
- header: "استان",
- id: "province_name",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- {
- accessorKey: "city_name",
- header: "شهر",
- id: "city_name",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- {
- accessorKey: "station_name",
- header: "راهدارخانه",
- id: "station_name",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- {
- accessorKey: "driver_name",
- header: "راننده",
- id: "driver_name",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- {
- accessorKey: "km",
- header: "کیلومتر شروع",
- id: "km",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- {
- accessorKey: "end_km",
- header: "کیلومتر پایان",
- id: "end_km",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- ],
- []
- );
-
- return (
- <>
-
-
-
- >
- );
-};
-export default DriverList;
+import DataTableWithAuth from "@/core/components/DataTableWithAuth";
+import { GET_DRIVER_DETAILS } from "@/core/utils/routes";
+import { Box } from "@mui/material";
+import { useMemo } from "react";
+
+const DriverList = ({ row }) => {
+ const columns = useMemo(
+ () => [
+ {
+ accessorKey: "id",
+ header: "کد یکتا",
+ id: "id",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 80,
+ },
+ {
+ accessorKey: "province_name",
+ header: "استان",
+ id: "province_name",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ {
+ accessorKey: "city_name",
+ header: "شهر",
+ id: "city_name",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ {
+ accessorKey: "station_name",
+ header: "راهدارخانه",
+ id: "station_name",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ {
+ accessorKey: "driver_name",
+ header: "راننده",
+ id: "driver_name",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ {
+ accessorKey: "km",
+ header: "کیلومتر شروع",
+ id: "km",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ {
+ accessorKey: "end_km",
+ header: "کیلومتر پایان",
+ id: "end_km",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ ],
+ []
+ );
+
+ return (
+ <>
+
+
+
+ >
+ );
+};
+export default DriverList;
diff --git a/src/components/dashboard/roadMissions/reports/diverReports/RowActions/DriverDetails/Form/index.jsx b/src/components/dashboard/roadMissions/reports/diverReports/RowActions/DriverDetails/Form/index.jsx
index 3fcc57c..d4c1c65 100644
--- a/src/components/dashboard/roadMissions/reports/diverReports/RowActions/DriverDetails/Form/index.jsx
+++ b/src/components/dashboard/roadMissions/reports/diverReports/RowActions/DriverDetails/Form/index.jsx
@@ -1,27 +1,27 @@
-import { Box, Button, DialogActions, DialogContent } from "@mui/material";
-import { Stack } from "@mui/system";
-import DriverList from "./DriverDetailsDialog/DriverList";
-
-const DriverDetailsTable = ({ row, setOpenDriverDetails }) => {
- return (
- <>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- >
- );
-};
-export default DriverDetailsTable;
+import { Box, Button, DialogActions, DialogContent } from "@mui/material";
+import { Stack } from "@mui/system";
+import DriverList from "./DriverDetailsDialog/DriverList";
+
+const DriverDetailsTable = ({ row, setOpenDriverDetails }) => {
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+};
+export default DriverDetailsTable;
diff --git a/src/components/dashboard/roadMissions/reports/diverReports/RowActions/DriverDetails/index.jsx b/src/components/dashboard/roadMissions/reports/diverReports/RowActions/DriverDetails/index.jsx
index 4a02707..9e32458 100644
--- a/src/components/dashboard/roadMissions/reports/diverReports/RowActions/DriverDetails/index.jsx
+++ b/src/components/dashboard/roadMissions/reports/diverReports/RowActions/DriverDetails/index.jsx
@@ -1,47 +1,44 @@
-import { Close, RemoveRedEye } from "@mui/icons-material";
-import { Dialog, DialogTitle, IconButton, Tooltip } from "@mui/material";
-import { useState } from "react";
-import DriverDetailsTable from "./Form";
-
-const DriverDetails = ({ row }) => {
- const [openDriverDetails, setOpenDriverDetails] = useState(false);
-
- return (
- <>
-
- {
- setOpenDriverDetails(true);
- }}
- >
-
-
-
-
- >
- );
-};
-export default DriverDetails;
+import { Close, RemoveRedEye } from "@mui/icons-material";
+import { Dialog, DialogTitle, IconButton, Tooltip } from "@mui/material";
+import { useState } from "react";
+import DriverDetailsTable from "./Form";
+
+const DriverDetails = ({ row }) => {
+ const [openDriverDetails, setOpenDriverDetails] = useState(false);
+
+ return (
+ <>
+
+ {
+ setOpenDriverDetails(true);
+ }}
+ >
+
+
+
+
+ >
+ );
+};
+export default DriverDetails;
diff --git a/src/components/dashboard/roadMissions/reports/diverReports/RowActions/RouteDetail/ShowRoute.jsx b/src/components/dashboard/roadMissions/reports/diverReports/RowActions/RouteDetail/ShowRoute.jsx
index 5e1a4bd..7d47ba8 100644
--- a/src/components/dashboard/roadMissions/reports/diverReports/RowActions/RouteDetail/ShowRoute.jsx
+++ b/src/components/dashboard/roadMissions/reports/diverReports/RowActions/RouteDetail/ShowRoute.jsx
@@ -1,46 +1,46 @@
-import { useEffect, useRef } from "react";
-import { Marker, Polyline, useMap } from "react-leaflet";
-import L from "leaflet";
-import polyline from "@mapbox/polyline";
-import SourceIcon from "@/assets/images/source-icon.svg";
-import DestIcon from "@/assets/images/destination-icon.svg";
-
-const ShowRoute = ({ area }) => {
- const map = useMap();
- const defaultIconSize = [35, 35];
-
- const createCustomIcon = (size, iconUrl) => {
- return L.icon({
- iconUrl: iconUrl,
- iconSize: size,
- iconAnchor: [size[0] / 2, size[1]],
- popupAnchor: [0, -size[1]],
- });
- };
-
- useEffect(() => {
- if (coords.length > 0) {
- map.flyToBounds(coords, { padding: [50, 50], duration: 1.5 });
- }
- }, [area]);
- const sourceIcon = createCustomIcon(defaultIconSize, SourceIcon.src);
- const destIcon = createCustomIcon(defaultIconSize, DestIcon.src);
-
- if (!area) return null;
- const coords = polyline.decode(area, 6);
-
- if (coords.length === 0) return null;
-
- const sourcePosition = coords[0];
- const destPosition = coords[coords.length - 1];
-
- return (
- <>
-
-
-
- >
- );
-};
-
-export default ShowRoute;
+import { useEffect, useRef } from "react";
+import { Marker, Polyline, useMap } from "react-leaflet";
+import L from "leaflet";
+import polyline from "@mapbox/polyline";
+import SourceIcon from "@/assets/images/source-icon.svg";
+import DestIcon from "@/assets/images/destination-icon.svg";
+
+const ShowRoute = ({ area }) => {
+ const map = useMap();
+ const defaultIconSize = [35, 35];
+
+ const createCustomIcon = (size, iconUrl) => {
+ return L.icon({
+ iconUrl: iconUrl,
+ iconSize: size,
+ iconAnchor: [size[0] / 2, size[1]],
+ popupAnchor: [0, -size[1]],
+ });
+ };
+
+ useEffect(() => {
+ if (coords.length > 0) {
+ map.flyToBounds(coords, { padding: [50, 50], duration: 1.5 });
+ }
+ }, [area]);
+ const sourceIcon = createCustomIcon(defaultIconSize, SourceIcon.src);
+ const destIcon = createCustomIcon(defaultIconSize, DestIcon.src);
+
+ if (!area) return null;
+ const coords = polyline.decode(area, 6);
+
+ if (coords.length === 0) return null;
+
+ const sourcePosition = coords[0];
+ const destPosition = coords[coords.length - 1];
+
+ return (
+ <>
+
+
+
+ >
+ );
+};
+
+export default ShowRoute;
diff --git a/src/components/dashboard/roadMissions/reports/diverReports/RowActions/RouteDetail/index.jsx b/src/components/dashboard/roadMissions/reports/diverReports/RowActions/RouteDetail/index.jsx
index 4501d35..48b84a2 100644
--- a/src/components/dashboard/roadMissions/reports/diverReports/RowActions/RouteDetail/index.jsx
+++ b/src/components/dashboard/roadMissions/reports/diverReports/RowActions/RouteDetail/index.jsx
@@ -1,57 +1,57 @@
-import { Box, Button, Dialog, DialogActions, DialogTitle, IconButton, Tooltip } from "@mui/material";
-import { useState } from "react";
-import MapIcon from "@mui/icons-material/Map";
-import MapLayer from "@/core/components/MapLayer";
-import ShowRoute from "./ShowRoute";
-
-const RouteDetail = ({ encoded_route }) => {
- const [openRouteDetailDialog, setOpenRouteDetailDialog] = useState(false);
- return (
- <>
-
- setOpenRouteDetailDialog(true)}>
-
-
-
-
- >
- );
-};
-export default RouteDetail;
+import { Box, Button, Dialog, DialogActions, DialogTitle, IconButton, Tooltip } from "@mui/material";
+import { useState } from "react";
+import MapIcon from "@mui/icons-material/Map";
+import MapLayer from "@/core/components/MapLayer";
+import ShowRoute from "./ShowRoute";
+
+const RouteDetail = ({ encoded_route }) => {
+ const [openRouteDetailDialog, setOpenRouteDetailDialog] = useState(false);
+ return (
+ <>
+
+ setOpenRouteDetailDialog(true)}>
+
+
+
+
+ >
+ );
+};
+export default RouteDetail;
diff --git a/src/components/dashboard/roadMissions/reports/diverReports/RowActions/index.jsx b/src/components/dashboard/roadMissions/reports/diverReports/RowActions/index.jsx
index af9b70a..f37d403 100644
--- a/src/components/dashboard/roadMissions/reports/diverReports/RowActions/index.jsx
+++ b/src/components/dashboard/roadMissions/reports/diverReports/RowActions/index.jsx
@@ -1,6 +1,6 @@
-import DriverDetails from "./DriverDetails";
-
-const RowActions = ({ row }) => {
- return ;
-};
-export default RowActions;
+import DriverDetails from "./DriverDetails";
+
+const RowActions = ({ row }) => {
+ return ;
+};
+export default RowActions;
diff --git a/src/components/dashboard/roadMissions/reports/diverReports/Search/FromDateController.jsx b/src/components/dashboard/roadMissions/reports/diverReports/Search/FromDateController.jsx
index 490ee7b..0a81488 100644
--- a/src/components/dashboard/roadMissions/reports/diverReports/Search/FromDateController.jsx
+++ b/src/components/dashboard/roadMissions/reports/diverReports/Search/FromDateController.jsx
@@ -1,27 +1,27 @@
-import MuiDatePicker from "@/core/components/MuiDatePicker";
-import moment from "jalali-moment";
-import { Controller } from "react-hook-form";
-
-const FromDateController = ({ control }) => {
- return (
- (
- {
- const formattedDate = moment(new Date(newValue)).locale("en").format("YYYY-MM-DD");
- onChange(formattedDate); // Update the field value in react-hook-form
- }}
- helperText={error ? error.message : null}
- />
- )}
- />
- );
-};
-export default FromDateController;
+import MuiDatePicker from "@/core/components/MuiDatePicker";
+import moment from "jalali-moment";
+import { Controller } from "react-hook-form";
+
+const FromDateController = ({ control }) => {
+ return (
+ (
+ {
+ const formattedDate = moment(new Date(newValue)).locale("en").format("YYYY-MM-DD");
+ onChange(formattedDate); // Update the field value in react-hook-form
+ }}
+ helperText={error ? error.message : null}
+ />
+ )}
+ />
+ );
+};
+export default FromDateController;
diff --git a/src/components/dashboard/roadMissions/reports/diverReports/Search/SearchReportField.jsx b/src/components/dashboard/roadMissions/reports/diverReports/Search/SearchReportField.jsx
index bde2a4c..e1b71cd 100644
--- a/src/components/dashboard/roadMissions/reports/diverReports/Search/SearchReportField.jsx
+++ b/src/components/dashboard/roadMissions/reports/diverReports/Search/SearchReportField.jsx
@@ -1,44 +1,44 @@
-import SearchIcon from "@mui/icons-material/Search";
-import { Button, Grid } from "@mui/material";
-import { Controller } from "react-hook-form";
-import FromDateController from "./FromDateController";
-import SelectProvince from "./SelectProvince";
-import ToDateController from "./ToDateController";
-
-const SearchReportField = ({ control, hasProvincesPermission }) => {
- return (
-
-
-
-
-
-
-
- {hasProvincesPermission && (
-
-
-
- )}
-
- (
- }
- fullWidth
- >
- {isSubmitting ? "درحال دریافت اطلاعات" : "جستجو"}
-
- )}
- />
-
-
- );
-};
-
-export default SearchReportField;
+import SearchIcon from "@mui/icons-material/Search";
+import { Button, Grid } from "@mui/material";
+import { Controller } from "react-hook-form";
+import FromDateController from "./FromDateController";
+import SelectProvince from "./SelectProvince";
+import ToDateController from "./ToDateController";
+
+const SearchReportField = ({ control, hasProvincesPermission }) => {
+ return (
+
+
+
+
+
+
+
+ {hasProvincesPermission && (
+
+
+
+ )}
+
+ (
+ }
+ fullWidth
+ >
+ {isSubmitting ? "درحال دریافت اطلاعات" : "جستجو"}
+
+ )}
+ />
+
+
+ );
+};
+
+export default SearchReportField;
diff --git a/src/components/dashboard/roadMissions/reports/diverReports/Search/SelectProvince.jsx b/src/components/dashboard/roadMissions/reports/diverReports/Search/SelectProvince.jsx
index 2b24d67..89395f0 100644
--- a/src/components/dashboard/roadMissions/reports/diverReports/Search/SelectProvince.jsx
+++ b/src/components/dashboard/roadMissions/reports/diverReports/Search/SelectProvince.jsx
@@ -1,45 +1,45 @@
-import useProvinces from "@/lib/hooks/useProvince";
-import { FormControl, FormHelperText, InputLabel, MenuItem, Select } from "@mui/material";
-import { Controller } from "react-hook-form";
-
-const SelectProvince = ({ control }) => {
- const { provinces, loadingProvinces, errorProvinces } = useProvinces();
- return (
- (
-
- استان
-
- {error && {error.message}}
-
- )}
- />
- );
-};
-export default SelectProvince;
+import useProvinces from "@/lib/hooks/useProvince";
+import { FormControl, FormHelperText, InputLabel, MenuItem, Select } from "@mui/material";
+import { Controller } from "react-hook-form";
+
+const SelectProvince = ({ control }) => {
+ const { provinces, loadingProvinces, errorProvinces } = useProvinces();
+ return (
+ (
+
+ استان
+
+ {error && {error.message}}
+
+ )}
+ />
+ );
+};
+export default SelectProvince;
diff --git a/src/components/dashboard/roadMissions/reports/diverReports/Search/ToDateController.jsx b/src/components/dashboard/roadMissions/reports/diverReports/Search/ToDateController.jsx
index fc4a776..ef3ff49 100644
--- a/src/components/dashboard/roadMissions/reports/diverReports/Search/ToDateController.jsx
+++ b/src/components/dashboard/roadMissions/reports/diverReports/Search/ToDateController.jsx
@@ -1,30 +1,30 @@
-import MuiDatePicker from "@/core/components/MuiDatePicker";
-import moment from "jalali-moment";
-import { Controller, useWatch } from "react-hook-form";
-
-const ToDateController = ({ control }) => {
- const minDate = useWatch({ control, name: "from_date" });
- return (
- (
- {
- const formattedDate = moment(new Date(newValue)).locale("en").format("YYYY-MM-DD");
- onChange(formattedDate); // Update the field value in react-hook-form
- }}
- helperText={error ? error.message : null}
- />
- )}
- />
- );
-};
-export default ToDateController;
+import MuiDatePicker from "@/core/components/MuiDatePicker";
+import moment from "jalali-moment";
+import { Controller, useWatch } from "react-hook-form";
+
+const ToDateController = ({ control }) => {
+ const minDate = useWatch({ control, name: "from_date" });
+ return (
+ (
+ {
+ const formattedDate = moment(new Date(newValue)).locale("en").format("YYYY-MM-DD");
+ onChange(formattedDate); // Update the field value in react-hook-form
+ }}
+ helperText={error ? error.message : null}
+ />
+ )}
+ />
+ );
+};
+export default ToDateController;
diff --git a/src/components/dashboard/roadMissions/reports/diverReports/Search/index.jsx b/src/components/dashboard/roadMissions/reports/diverReports/Search/index.jsx
index f29d302..9d504f2 100644
--- a/src/components/dashboard/roadMissions/reports/diverReports/Search/index.jsx
+++ b/src/components/dashboard/roadMissions/reports/diverReports/Search/index.jsx
@@ -1,13 +1,13 @@
-import StyledForm from "@/core/components/StyledForm";
-import SearchReportField from "./SearchReportField";
-
-const SearchReportList = ({ handleSubmit, onSearchSubmit, control, hasProvincesPermission }) => {
- return (
- <>
-
-
-
- >
- );
-};
-export default SearchReportList;
+import StyledForm from "@/core/components/StyledForm";
+import SearchReportField from "./SearchReportField";
+
+const SearchReportList = ({ handleSubmit, onSearchSubmit, control, hasProvincesPermission }) => {
+ return (
+ <>
+
+
+
+ >
+ );
+};
+export default SearchReportList;
diff --git a/src/components/dashboard/roadMissions/reports/diverReports/Toolbar.jsx b/src/components/dashboard/roadMissions/reports/diverReports/Toolbar.jsx
index 0f726c7..afc132c 100644
--- a/src/components/dashboard/roadMissions/reports/diverReports/Toolbar.jsx
+++ b/src/components/dashboard/roadMissions/reports/diverReports/Toolbar.jsx
@@ -1,11 +1,11 @@
-import { Box } from "@mui/material";
-import PrintExcel from "./ExcelPrint";
-
-const Toolbar = ({ table, filterData, mutate }) => {
- return (
-
-
-
- );
-};
-export default Toolbar;
+import { Box } from "@mui/material";
+import PrintExcel from "./ExcelPrint";
+
+const Toolbar = ({ table, filterData, mutate }) => {
+ return (
+
+
+
+ );
+};
+export default Toolbar;
diff --git a/src/components/dashboard/roadMissions/reports/diverReports/index.jsx b/src/components/dashboard/roadMissions/reports/diverReports/index.jsx
index cae06cb..967a8a6 100644
--- a/src/components/dashboard/roadMissions/reports/diverReports/index.jsx
+++ b/src/components/dashboard/roadMissions/reports/diverReports/index.jsx
@@ -1,9 +1,6 @@
"use client";
import PageTitle from "@/core/components/PageTitle";
-import {
- GET_DRIVER_COUNTRY_ACTIVITY_REPORT,
- GET_DRIVER_PROVINCE_ACTIVITY_REPORT,
-} from "@/core/utils/routes";
+import { GET_DRIVER_COUNTRY_ACTIVITY_REPORT, GET_DRIVER_PROVINCE_ACTIVITY_REPORT } from "@/core/utils/routes";
import { useAuth } from "@/lib/contexts/auth";
import { usePermissions } from "@/lib/hooks/usePermissions";
import useRequest from "@/lib/hooks/useRequest";
diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/ExcelPrint/index.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/ExcelPrint/index.jsx
index ef85a7f..8377ab4 100644
--- a/src/components/dashboard/roadMissions/reports/machinesReports/ExcelPrint/index.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesReports/ExcelPrint/index.jsx
@@ -1,77 +1,77 @@
-"use client";
-import {
- EXPORT_GET_MACHINES_COUNTRY_ACTIVITY_REPORT,
- EXPORT_GET_MACHINES_PROVINCE_ACTIVITY_REPORT,
-} from "@/core/utils/routes";
-import useRequest from "@/lib/hooks/useRequest";
-import { useTheme } from "@emotion/react";
-import DescriptionIcon from "@mui/icons-material/Description";
-import { Button, CircularProgress, IconButton, useMediaQuery } from "@mui/material";
-import FileSaver from "file-saver";
-import moment from "jalali-moment";
-import { useMemo, useState } from "react";
-
-const PrintExcel = ({ table, filterData }) => {
- const theme = useTheme();
- const isMobile = useMediaQuery(theme.breakpoints.down("sm"));
- const [loading, setLoading] = useState(false);
- const requestServer = useRequest({ notificationSuccess: true });
- const activeFilters = Object.entries(filterData).reduce((acc, [key, filter]) => {
- if (filter.value) {
- acc.push({ id: filter.id, value: filter.value });
- }
- return acc;
- }, []);
-
- const filterParams = useMemo(() => {
- const params = new URLSearchParams();
- activeFilters.length > 0 &&
- activeFilters.map((filter, index) => {
- params.set(`${filter.id}`, filter.value);
- });
- return params;
- }, [activeFilters]);
-
- const clickHandler = () => {
- setLoading(true);
- const CountryOrProvince = activeFilters.find((item) => item.id === "province_id");
- const requestUrl =
- CountryOrProvince.value === "-1"
- ? EXPORT_GET_MACHINES_COUNTRY_ACTIVITY_REPORT
- : EXPORT_GET_MACHINES_PROVINCE_ACTIVITY_REPORT;
- requestServer(`${requestUrl}?${filterParams}`, "get", {
- requestOptions: { responseType: "blob" },
- })
- .then((response) => {
- const filename = `خروجی کارتابل گزارشات گشت راهداری تاریخ_${moment().format("jYYYY_jMM_jDD")}.xlsx`;
- FileSaver.saveAs(response.data, filename);
- })
- .catch(() => {})
- .finally(() => {
- setLoading(false);
- });
- };
-
- return (
- <>
- {isMobile ? (
-
-
-
- ) : (
- : }
- onClick={clickHandler}
- >
- خروجی اکسل
-
- )}
- >
- );
-};
-export default PrintExcel;
+"use client";
+import {
+ EXPORT_GET_MACHINES_COUNTRY_ACTIVITY_REPORT,
+ EXPORT_GET_MACHINES_PROVINCE_ACTIVITY_REPORT,
+} from "@/core/utils/routes";
+import useRequest from "@/lib/hooks/useRequest";
+import { useTheme } from "@emotion/react";
+import DescriptionIcon from "@mui/icons-material/Description";
+import { Button, CircularProgress, IconButton, useMediaQuery } from "@mui/material";
+import FileSaver from "file-saver";
+import moment from "jalali-moment";
+import { useMemo, useState } from "react";
+
+const PrintExcel = ({ table, filterData }) => {
+ const theme = useTheme();
+ const isMobile = useMediaQuery(theme.breakpoints.down("sm"));
+ const [loading, setLoading] = useState(false);
+ const requestServer = useRequest({ notificationSuccess: true });
+ const activeFilters = Object.entries(filterData).reduce((acc, [key, filter]) => {
+ if (filter.value) {
+ acc.push({ id: filter.id, value: filter.value });
+ }
+ return acc;
+ }, []);
+
+ const filterParams = useMemo(() => {
+ const params = new URLSearchParams();
+ activeFilters.length > 0 &&
+ activeFilters.map((filter, index) => {
+ params.set(`${filter.id}`, filter.value);
+ });
+ return params;
+ }, [activeFilters]);
+
+ const clickHandler = () => {
+ setLoading(true);
+ const CountryOrProvince = activeFilters.find((item) => item.id === "province_id");
+ const requestUrl =
+ CountryOrProvince.value === "-1"
+ ? EXPORT_GET_MACHINES_COUNTRY_ACTIVITY_REPORT
+ : EXPORT_GET_MACHINES_PROVINCE_ACTIVITY_REPORT;
+ requestServer(`${requestUrl}?${filterParams}`, "get", {
+ requestOptions: { responseType: "blob" },
+ })
+ .then((response) => {
+ const filename = `خروجی کارتابل گزارشات گشت راهداری تاریخ_${moment().format("jYYYY_jMM_jDD")}.xlsx`;
+ FileSaver.saveAs(response.data, filename);
+ })
+ .catch(() => {})
+ .finally(() => {
+ setLoading(false);
+ });
+ };
+
+ return (
+ <>
+ {isMobile ? (
+
+
+
+ ) : (
+ : }
+ onClick={clickHandler}
+ >
+ خروجی اکسل
+
+ )}
+ >
+ );
+};
+export default PrintExcel;
diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/MachinesReportsList.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/MachinesReportsList.jsx
index 34badf1..363c85f 100644
--- a/src/components/dashboard/roadMissions/reports/machinesReports/MachinesReportsList.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesReports/MachinesReportsList.jsx
@@ -1,81 +1,81 @@
-"use client";
-import DataTableWithAuth from "@/core/components/DataTableWithAuth";
-import { Box } from "@mui/material";
-import { useMemo } from "react";
-import Toolbar from "./Toolbar";
-import RowActions from "./RowActions";
-
-const MachinesReportsList = ({ data, specialFilter }) => {
- const columns = useMemo(() => {
- return [
- {
- accessorKey: "machine_id",
- header: "کد یکتا",
- id: "machine_id",
- enableColumnFilter: false,
- enableSorting: false,
- datatype: "numeric",
- grow: false,
- size: 50,
- },
- {
- accessorKey: "car_name",
- header: "مدل ماشین",
- id: "car_name",
- enableColumnFilter: false,
- enableSorting: false,
- datatype: "text",
- grow: false,
- size: 50,
- },
- {
- accessorKey: "machine_code",
- header: "کد ماشین",
- id: "machine_code",
- enableColumnFilter: false,
- enableSorting: false,
- datatype: "text",
- grow: false,
- size: 50,
- },
- {
- accessorKey: "func",
- header: "کارکرد",
- id: "func",
- enableColumnFilter: false,
- enableSorting: false,
- datatype: "number",
- grow: false,
- size: 50,
- },
- {
- accessorKey: "missions",
- header: "تعداد ماموریت",
- id: "missions",
- enableColumnFilter: false,
- enableSorting: false,
- datatype: "number",
- grow: false,
- size: 50,
- },
- ];
- }, []);
-
- return (
-
-
-
- );
-};
-
-export default MachinesReportsList;
+"use client";
+import DataTableWithAuth from "@/core/components/DataTableWithAuth";
+import { Box } from "@mui/material";
+import { useMemo } from "react";
+import Toolbar from "./Toolbar";
+import RowActions from "./RowActions";
+
+const MachinesReportsList = ({ data, specialFilter }) => {
+ const columns = useMemo(() => {
+ return [
+ {
+ accessorKey: "machine_id",
+ header: "کد یکتا",
+ id: "machine_id",
+ enableColumnFilter: false,
+ enableSorting: false,
+ datatype: "numeric",
+ grow: false,
+ size: 50,
+ },
+ {
+ accessorKey: "car_name",
+ header: "مدل ماشین",
+ id: "car_name",
+ enableColumnFilter: false,
+ enableSorting: false,
+ datatype: "text",
+ grow: false,
+ size: 50,
+ },
+ {
+ accessorKey: "machine_code",
+ header: "کد ماشین",
+ id: "machine_code",
+ enableColumnFilter: false,
+ enableSorting: false,
+ datatype: "text",
+ grow: false,
+ size: 50,
+ },
+ {
+ accessorKey: "func",
+ header: "کارکرد",
+ id: "func",
+ enableColumnFilter: false,
+ enableSorting: false,
+ datatype: "number",
+ grow: false,
+ size: 50,
+ },
+ {
+ accessorKey: "missions",
+ header: "تعداد ماموریت",
+ id: "missions",
+ enableColumnFilter: false,
+ enableSorting: false,
+ datatype: "number",
+ grow: false,
+ size: 50,
+ },
+ ];
+ }, []);
+
+ return (
+
+
+
+ );
+};
+
+export default MachinesReportsList;
diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/MissionDitails/Form/MachineMissionsDetailsDialog/MachineMissionsList/index.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/MissionDitails/Form/MachineMissionsDetailsDialog/MachineMissionsList/index.jsx
index 9bd3373..36d781a 100644
--- a/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/MissionDitails/Form/MachineMissionsDetailsDialog/MachineMissionsList/index.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/MissionDitails/Form/MachineMissionsDetailsDialog/MachineMissionsList/index.jsx
@@ -1,106 +1,106 @@
-import DataTableWithAuth from "@/core/components/DataTableWithAuth";
-import { GET_MACHINE_MISSIONS_DETAILS } from "@/core/utils/routes";
-import { Box } from "@mui/material";
-import { useMemo } from "react";
-
-const MachineMissionsList = ({ row }) => {
- const columns = useMemo(
- () => [
- {
- accessorKey: "id",
- header: "کد یکتا",
- id: "id",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 80,
- },
- {
- accessorKey: "province_name",
- header: "استان",
- id: "province_name",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- {
- accessorKey: "city_name",
- header: "شهر",
- id: "city_name",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- {
- accessorKey: "station_name",
- header: "راهدارخانه",
- id: "station_name",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- {
- accessorKey: "driver_name",
- header: "راننده",
- id: "driver_name",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- {
- accessorKey: "km",
- header: "کیلومتر شروع",
- id: "km",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- {
- accessorKey: "end_km",
- header: "کیلومتر پایان",
- id: "end_km",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- ],
- []
- );
-
- return (
- <>
-
-
-
- >
- );
-};
-export default MachineMissionsList;
+import DataTableWithAuth from "@/core/components/DataTableWithAuth";
+import { GET_MACHINE_MISSIONS_DETAILS } from "@/core/utils/routes";
+import { Box } from "@mui/material";
+import { useMemo } from "react";
+
+const MachineMissionsList = ({ row }) => {
+ const columns = useMemo(
+ () => [
+ {
+ accessorKey: "id",
+ header: "کد یکتا",
+ id: "id",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 80,
+ },
+ {
+ accessorKey: "province_name",
+ header: "استان",
+ id: "province_name",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ {
+ accessorKey: "city_name",
+ header: "شهر",
+ id: "city_name",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ {
+ accessorKey: "station_name",
+ header: "راهدارخانه",
+ id: "station_name",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ {
+ accessorKey: "driver_name",
+ header: "راننده",
+ id: "driver_name",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ {
+ accessorKey: "km",
+ header: "کیلومتر شروع",
+ id: "km",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ {
+ accessorKey: "end_km",
+ header: "کیلومتر پایان",
+ id: "end_km",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ ],
+ []
+ );
+
+ return (
+ <>
+
+
+
+ >
+ );
+};
+export default MachineMissionsList;
diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/MissionDitails/Form/index.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/MissionDitails/Form/index.jsx
index 5e79bfa..117e6ea 100644
--- a/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/MissionDitails/Form/index.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/MissionDitails/Form/index.jsx
@@ -1,27 +1,27 @@
-import { Box, Button, DialogActions, DialogContent } from "@mui/material";
-import { Stack } from "@mui/system";
-import MachineMissionsList from "./MachineMissionsDetailsDialog/MachineMissionsList";
-
-const MachineMissionsDetailsTable = ({ row, setOpenMachineMissionsDetails }) => {
- return (
- <>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- >
- );
-};
-export default MachineMissionsDetailsTable;
+import { Box, Button, DialogActions, DialogContent } from "@mui/material";
+import { Stack } from "@mui/system";
+import MachineMissionsList from "./MachineMissionsDetailsDialog/MachineMissionsList";
+
+const MachineMissionsDetailsTable = ({ row, setOpenMachineMissionsDetails }) => {
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+};
+export default MachineMissionsDetailsTable;
diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/MissionDitails/index.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/MissionDitails/index.jsx
index 3b65c8f..f3ef62e 100644
--- a/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/MissionDitails/index.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/MissionDitails/index.jsx
@@ -1,47 +1,47 @@
-import { Close, RemoveRedEye } from "@mui/icons-material";
-import { Dialog, DialogTitle, IconButton, Tooltip } from "@mui/material";
-import { useState } from "react";
-import MachineMissionsDetailsTable from "./Form";
-
-const MissionDetails = ({ row }) => {
- const [openMachineMissionsDetails, setOpenMachineMissionsDetails] = useState(false);
-
- return (
- <>
-
- {
- setOpenMachineMissionsDetails(true);
- }}
- >
-
-
-
-
- >
- );
-};
-export default MissionDetails;
+import { Close, RemoveRedEye } from "@mui/icons-material";
+import { Dialog, DialogTitle, IconButton, Tooltip } from "@mui/material";
+import { useState } from "react";
+import MachineMissionsDetailsTable from "./Form";
+
+const MissionDetails = ({ row }) => {
+ const [openMachineMissionsDetails, setOpenMachineMissionsDetails] = useState(false);
+
+ return (
+ <>
+
+ {
+ setOpenMachineMissionsDetails(true);
+ }}
+ >
+
+
+
+
+ >
+ );
+};
+export default MissionDetails;
diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/RouteDetail/ShowRoute.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/RouteDetail/ShowRoute.jsx
index 5e1a4bd..7d47ba8 100644
--- a/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/RouteDetail/ShowRoute.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/RouteDetail/ShowRoute.jsx
@@ -1,46 +1,46 @@
-import { useEffect, useRef } from "react";
-import { Marker, Polyline, useMap } from "react-leaflet";
-import L from "leaflet";
-import polyline from "@mapbox/polyline";
-import SourceIcon from "@/assets/images/source-icon.svg";
-import DestIcon from "@/assets/images/destination-icon.svg";
-
-const ShowRoute = ({ area }) => {
- const map = useMap();
- const defaultIconSize = [35, 35];
-
- const createCustomIcon = (size, iconUrl) => {
- return L.icon({
- iconUrl: iconUrl,
- iconSize: size,
- iconAnchor: [size[0] / 2, size[1]],
- popupAnchor: [0, -size[1]],
- });
- };
-
- useEffect(() => {
- if (coords.length > 0) {
- map.flyToBounds(coords, { padding: [50, 50], duration: 1.5 });
- }
- }, [area]);
- const sourceIcon = createCustomIcon(defaultIconSize, SourceIcon.src);
- const destIcon = createCustomIcon(defaultIconSize, DestIcon.src);
-
- if (!area) return null;
- const coords = polyline.decode(area, 6);
-
- if (coords.length === 0) return null;
-
- const sourcePosition = coords[0];
- const destPosition = coords[coords.length - 1];
-
- return (
- <>
-
-
-
- >
- );
-};
-
-export default ShowRoute;
+import { useEffect, useRef } from "react";
+import { Marker, Polyline, useMap } from "react-leaflet";
+import L from "leaflet";
+import polyline from "@mapbox/polyline";
+import SourceIcon from "@/assets/images/source-icon.svg";
+import DestIcon from "@/assets/images/destination-icon.svg";
+
+const ShowRoute = ({ area }) => {
+ const map = useMap();
+ const defaultIconSize = [35, 35];
+
+ const createCustomIcon = (size, iconUrl) => {
+ return L.icon({
+ iconUrl: iconUrl,
+ iconSize: size,
+ iconAnchor: [size[0] / 2, size[1]],
+ popupAnchor: [0, -size[1]],
+ });
+ };
+
+ useEffect(() => {
+ if (coords.length > 0) {
+ map.flyToBounds(coords, { padding: [50, 50], duration: 1.5 });
+ }
+ }, [area]);
+ const sourceIcon = createCustomIcon(defaultIconSize, SourceIcon.src);
+ const destIcon = createCustomIcon(defaultIconSize, DestIcon.src);
+
+ if (!area) return null;
+ const coords = polyline.decode(area, 6);
+
+ if (coords.length === 0) return null;
+
+ const sourcePosition = coords[0];
+ const destPosition = coords[coords.length - 1];
+
+ return (
+ <>
+
+
+
+ >
+ );
+};
+
+export default ShowRoute;
diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/RouteDetail/index.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/RouteDetail/index.jsx
index 4501d35..48b84a2 100644
--- a/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/RouteDetail/index.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/RouteDetail/index.jsx
@@ -1,57 +1,57 @@
-import { Box, Button, Dialog, DialogActions, DialogTitle, IconButton, Tooltip } from "@mui/material";
-import { useState } from "react";
-import MapIcon from "@mui/icons-material/Map";
-import MapLayer from "@/core/components/MapLayer";
-import ShowRoute from "./ShowRoute";
-
-const RouteDetail = ({ encoded_route }) => {
- const [openRouteDetailDialog, setOpenRouteDetailDialog] = useState(false);
- return (
- <>
-
- setOpenRouteDetailDialog(true)}>
-
-
-
-
- >
- );
-};
-export default RouteDetail;
+import { Box, Button, Dialog, DialogActions, DialogTitle, IconButton, Tooltip } from "@mui/material";
+import { useState } from "react";
+import MapIcon from "@mui/icons-material/Map";
+import MapLayer from "@/core/components/MapLayer";
+import ShowRoute from "./ShowRoute";
+
+const RouteDetail = ({ encoded_route }) => {
+ const [openRouteDetailDialog, setOpenRouteDetailDialog] = useState(false);
+ return (
+ <>
+
+ setOpenRouteDetailDialog(true)}>
+
+
+
+
+ >
+ );
+};
+export default RouteDetail;
diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/index.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/index.jsx
index dbf9aa7..5cb6a4d 100644
--- a/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/index.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesReports/RowActions/index.jsx
@@ -1,6 +1,6 @@
-import MissionDetails from "./MissionDitails";
-
-const RowActions = ({ row }) => {
- return ;
-};
-export default RowActions;
+import MissionDetails from "./MissionDitails";
+
+const RowActions = ({ row }) => {
+ return ;
+};
+export default RowActions;
diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/Search/FromDateController.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/Search/FromDateController.jsx
index 490ee7b..0a81488 100644
--- a/src/components/dashboard/roadMissions/reports/machinesReports/Search/FromDateController.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesReports/Search/FromDateController.jsx
@@ -1,27 +1,27 @@
-import MuiDatePicker from "@/core/components/MuiDatePicker";
-import moment from "jalali-moment";
-import { Controller } from "react-hook-form";
-
-const FromDateController = ({ control }) => {
- return (
- (
- {
- const formattedDate = moment(new Date(newValue)).locale("en").format("YYYY-MM-DD");
- onChange(formattedDate); // Update the field value in react-hook-form
- }}
- helperText={error ? error.message : null}
- />
- )}
- />
- );
-};
-export default FromDateController;
+import MuiDatePicker from "@/core/components/MuiDatePicker";
+import moment from "jalali-moment";
+import { Controller } from "react-hook-form";
+
+const FromDateController = ({ control }) => {
+ return (
+ (
+ {
+ const formattedDate = moment(new Date(newValue)).locale("en").format("YYYY-MM-DD");
+ onChange(formattedDate); // Update the field value in react-hook-form
+ }}
+ helperText={error ? error.message : null}
+ />
+ )}
+ />
+ );
+};
+export default FromDateController;
diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/Search/SearchReportField.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/Search/SearchReportField.jsx
index bde2a4c..e1b71cd 100644
--- a/src/components/dashboard/roadMissions/reports/machinesReports/Search/SearchReportField.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesReports/Search/SearchReportField.jsx
@@ -1,44 +1,44 @@
-import SearchIcon from "@mui/icons-material/Search";
-import { Button, Grid } from "@mui/material";
-import { Controller } from "react-hook-form";
-import FromDateController from "./FromDateController";
-import SelectProvince from "./SelectProvince";
-import ToDateController from "./ToDateController";
-
-const SearchReportField = ({ control, hasProvincesPermission }) => {
- return (
-
-
-
-
-
-
-
- {hasProvincesPermission && (
-
-
-
- )}
-
- (
- }
- fullWidth
- >
- {isSubmitting ? "درحال دریافت اطلاعات" : "جستجو"}
-
- )}
- />
-
-
- );
-};
-
-export default SearchReportField;
+import SearchIcon from "@mui/icons-material/Search";
+import { Button, Grid } from "@mui/material";
+import { Controller } from "react-hook-form";
+import FromDateController from "./FromDateController";
+import SelectProvince from "./SelectProvince";
+import ToDateController from "./ToDateController";
+
+const SearchReportField = ({ control, hasProvincesPermission }) => {
+ return (
+
+
+
+
+
+
+
+ {hasProvincesPermission && (
+
+
+
+ )}
+
+ (
+ }
+ fullWidth
+ >
+ {isSubmitting ? "درحال دریافت اطلاعات" : "جستجو"}
+
+ )}
+ />
+
+
+ );
+};
+
+export default SearchReportField;
diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/Search/SelectProvince.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/Search/SelectProvince.jsx
index 2b24d67..89395f0 100644
--- a/src/components/dashboard/roadMissions/reports/machinesReports/Search/SelectProvince.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesReports/Search/SelectProvince.jsx
@@ -1,45 +1,45 @@
-import useProvinces from "@/lib/hooks/useProvince";
-import { FormControl, FormHelperText, InputLabel, MenuItem, Select } from "@mui/material";
-import { Controller } from "react-hook-form";
-
-const SelectProvince = ({ control }) => {
- const { provinces, loadingProvinces, errorProvinces } = useProvinces();
- return (
- (
-
- استان
-
- {error && {error.message}}
-
- )}
- />
- );
-};
-export default SelectProvince;
+import useProvinces from "@/lib/hooks/useProvince";
+import { FormControl, FormHelperText, InputLabel, MenuItem, Select } from "@mui/material";
+import { Controller } from "react-hook-form";
+
+const SelectProvince = ({ control }) => {
+ const { provinces, loadingProvinces, errorProvinces } = useProvinces();
+ return (
+ (
+
+ استان
+
+ {error && {error.message}}
+
+ )}
+ />
+ );
+};
+export default SelectProvince;
diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/Search/ToDateController.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/Search/ToDateController.jsx
index fc4a776..ef3ff49 100644
--- a/src/components/dashboard/roadMissions/reports/machinesReports/Search/ToDateController.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesReports/Search/ToDateController.jsx
@@ -1,30 +1,30 @@
-import MuiDatePicker from "@/core/components/MuiDatePicker";
-import moment from "jalali-moment";
-import { Controller, useWatch } from "react-hook-form";
-
-const ToDateController = ({ control }) => {
- const minDate = useWatch({ control, name: "from_date" });
- return (
- (
- {
- const formattedDate = moment(new Date(newValue)).locale("en").format("YYYY-MM-DD");
- onChange(formattedDate); // Update the field value in react-hook-form
- }}
- helperText={error ? error.message : null}
- />
- )}
- />
- );
-};
-export default ToDateController;
+import MuiDatePicker from "@/core/components/MuiDatePicker";
+import moment from "jalali-moment";
+import { Controller, useWatch } from "react-hook-form";
+
+const ToDateController = ({ control }) => {
+ const minDate = useWatch({ control, name: "from_date" });
+ return (
+ (
+ {
+ const formattedDate = moment(new Date(newValue)).locale("en").format("YYYY-MM-DD");
+ onChange(formattedDate); // Update the field value in react-hook-form
+ }}
+ helperText={error ? error.message : null}
+ />
+ )}
+ />
+ );
+};
+export default ToDateController;
diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/Search/index.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/Search/index.jsx
index f29d302..9d504f2 100644
--- a/src/components/dashboard/roadMissions/reports/machinesReports/Search/index.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesReports/Search/index.jsx
@@ -1,13 +1,13 @@
-import StyledForm from "@/core/components/StyledForm";
-import SearchReportField from "./SearchReportField";
-
-const SearchReportList = ({ handleSubmit, onSearchSubmit, control, hasProvincesPermission }) => {
- return (
- <>
-
-
-
- >
- );
-};
-export default SearchReportList;
+import StyledForm from "@/core/components/StyledForm";
+import SearchReportField from "./SearchReportField";
+
+const SearchReportList = ({ handleSubmit, onSearchSubmit, control, hasProvincesPermission }) => {
+ return (
+ <>
+
+
+
+ >
+ );
+};
+export default SearchReportList;
diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/Toolbar.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/Toolbar.jsx
index 0f726c7..afc132c 100644
--- a/src/components/dashboard/roadMissions/reports/machinesReports/Toolbar.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesReports/Toolbar.jsx
@@ -1,11 +1,11 @@
-import { Box } from "@mui/material";
-import PrintExcel from "./ExcelPrint";
-
-const Toolbar = ({ table, filterData, mutate }) => {
- return (
-
-
-
- );
-};
-export default Toolbar;
+import { Box } from "@mui/material";
+import PrintExcel from "./ExcelPrint";
+
+const Toolbar = ({ table, filterData, mutate }) => {
+ return (
+
+
+
+ );
+};
+export default Toolbar;
diff --git a/src/components/dashboard/roadMissions/reports/machinesReports/index.jsx b/src/components/dashboard/roadMissions/reports/machinesReports/index.jsx
index e62f273..655944d 100644
--- a/src/components/dashboard/roadMissions/reports/machinesReports/index.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesReports/index.jsx
@@ -1,107 +1,107 @@
-"use client";
-import PageTitle from "@/core/components/PageTitle";
-import { GET_MACHINES_COUNTRY_ACTIVITY_REPORT, GET_MACHINES_PROVINCE_ACTIVITY_REPORT } from "@/core/utils/routes";
-import { useAuth } from "@/lib/contexts/auth";
-import { usePermissions } from "@/lib/hooks/usePermissions";
-import useRequest from "@/lib/hooks/useRequest";
-import { yupResolver } from "@hookform/resolvers/yup";
-import { LinearProgress, Stack } from "@mui/material";
-import moment from "jalali-moment";
-import { useEffect, useState } from "react";
-import { useForm } from "react-hook-form";
-import * as yup from "yup";
-import MachinesReportsList from "./MachinesReportsList";
-import SearchReportList from "./Search";
-
-const MachinesReportsPage = () => {
- const [data, setData] = useState(null);
- const { data: userPermissions } = usePermissions();
- const { user } = useAuth();
- const requestServer = useRequest();
- const hasProvincesPermission = userPermissions?.includes("mission-report-country");
-
- const defaultValues = {
- from_date: moment(new Date()).format("YYYY-MM-DD"),
- date_to: moment(new Date()).format("YYYY-MM-DD"),
- province_id: user.province_id || "-1",
- };
- const defaultFilter = [
- { value: `${defaultValues.province_id}`, datatype: "numeric", id: "province_id", fn: "equals" },
- { value: `${defaultValues.from_date}`, datatype: "date", id: "from_date", fn: "between" },
- { value: `${defaultValues.date_to}`, datatype: "date", id: "date_to", fn: "between" },
- ];
- const [specialFilter, setSpecialFilter] = useState(defaultFilter);
-
- const onSearchSubmit = async (data) => {
- const params = new URLSearchParams();
- params.set("from_date", `${data.from_date} 00:00:00`);
- params.set("date_to", `${data.date_to} 23:59:59`);
- setSpecialFilter([
- { value: `${data.province_id}`, datatype: "numeric", id: "province_id", fn: "equals" },
- { value: `${data.from_date}`, datatype: "date", id: "from_date", fn: "between" },
- { value: `${data.date_to}`, datatype: "date", id: "date_to", fn: "between" },
- ]);
- if (data.province_id === "-1") {
- try {
- const response = await requestServer(`${GET_MACHINES_COUNTRY_ACTIVITY_REPORT}?${params}`);
- const result = response.data.data;
-
- setData({
- data: result.activities,
- filters: data,
- });
- } catch (e) {}
- } else {
- try {
- params.set("province_id", `${data.province_id}`);
- const response = await requestServer(`${GET_MACHINES_PROVINCE_ACTIVITY_REPORT}?${params}`);
-
- const result = response.data.data;
-
- setData({
- data: result.activities,
- filters: data,
- });
- } catch (e) {}
- }
- };
-
- useEffect(() => {
- if (!userPermissions) return;
- onSearchSubmit(defaultValues);
- }, [userPermissions]);
-
- const validationSchema = yup.object().shape({
- from_date: yup
- .string()
- .required("تاریخ شروع الزامی است!")
- .matches(/^\d{4}-\d{2}-\d{2}$/, "تاریخ شروع الزامی است!")
- .test("is-valid-date", "تاریخ شروع معتبر نیست!", (value) => moment(value, "YYYY-MM-DD", true).isValid()),
- date_to: yup
- .string()
- .required("تاریخ پایان الزامی است!")
- .matches(/^\d{4}-\d{2}-\d{2}$/, "تاریخ پایان الزامی است!")
- .test("is-valid-date", "تاریخ پایان معتبر نیست!", (value) => moment(value, "YYYY-MM-DD", true).isValid()),
- province_id: yup.string().nullable(),
- });
-
- const { control, handleSubmit } = useForm({
- defaultValues,
- resolver: yupResolver(validationSchema),
- mode: "all",
- });
-
- return (
-
-
-
- {!data ? : }
-
- );
-};
-export default MachinesReportsPage;
+"use client";
+import PageTitle from "@/core/components/PageTitle";
+import { GET_MACHINES_COUNTRY_ACTIVITY_REPORT, GET_MACHINES_PROVINCE_ACTIVITY_REPORT } from "@/core/utils/routes";
+import { useAuth } from "@/lib/contexts/auth";
+import { usePermissions } from "@/lib/hooks/usePermissions";
+import useRequest from "@/lib/hooks/useRequest";
+import { yupResolver } from "@hookform/resolvers/yup";
+import { LinearProgress, Stack } from "@mui/material";
+import moment from "jalali-moment";
+import { useEffect, useState } from "react";
+import { useForm } from "react-hook-form";
+import * as yup from "yup";
+import MachinesReportsList from "./MachinesReportsList";
+import SearchReportList from "./Search";
+
+const MachinesReportsPage = () => {
+ const [data, setData] = useState(null);
+ const { data: userPermissions } = usePermissions();
+ const { user } = useAuth();
+ const requestServer = useRequest();
+ const hasProvincesPermission = userPermissions?.includes("mission-report-country");
+
+ const defaultValues = {
+ from_date: moment(new Date()).format("YYYY-MM-DD"),
+ date_to: moment(new Date()).format("YYYY-MM-DD"),
+ province_id: user.province_id || "-1",
+ };
+ const defaultFilter = [
+ { value: `${defaultValues.province_id}`, datatype: "numeric", id: "province_id", fn: "equals" },
+ { value: `${defaultValues.from_date}`, datatype: "date", id: "from_date", fn: "between" },
+ { value: `${defaultValues.date_to}`, datatype: "date", id: "date_to", fn: "between" },
+ ];
+ const [specialFilter, setSpecialFilter] = useState(defaultFilter);
+
+ const onSearchSubmit = async (data) => {
+ const params = new URLSearchParams();
+ params.set("from_date", `${data.from_date} 00:00:00`);
+ params.set("date_to", `${data.date_to} 23:59:59`);
+ setSpecialFilter([
+ { value: `${data.province_id}`, datatype: "numeric", id: "province_id", fn: "equals" },
+ { value: `${data.from_date}`, datatype: "date", id: "from_date", fn: "between" },
+ { value: `${data.date_to}`, datatype: "date", id: "date_to", fn: "between" },
+ ]);
+ if (data.province_id === "-1") {
+ try {
+ const response = await requestServer(`${GET_MACHINES_COUNTRY_ACTIVITY_REPORT}?${params}`);
+ const result = response.data.data;
+
+ setData({
+ data: result.activities,
+ filters: data,
+ });
+ } catch (e) {}
+ } else {
+ try {
+ params.set("province_id", `${data.province_id}`);
+ const response = await requestServer(`${GET_MACHINES_PROVINCE_ACTIVITY_REPORT}?${params}`);
+
+ const result = response.data.data;
+
+ setData({
+ data: result.activities,
+ filters: data,
+ });
+ } catch (e) {}
+ }
+ };
+
+ useEffect(() => {
+ if (!userPermissions) return;
+ onSearchSubmit(defaultValues);
+ }, [userPermissions]);
+
+ const validationSchema = yup.object().shape({
+ from_date: yup
+ .string()
+ .required("تاریخ شروع الزامی است!")
+ .matches(/^\d{4}-\d{2}-\d{2}$/, "تاریخ شروع الزامی است!")
+ .test("is-valid-date", "تاریخ شروع معتبر نیست!", (value) => moment(value, "YYYY-MM-DD", true).isValid()),
+ date_to: yup
+ .string()
+ .required("تاریخ پایان الزامی است!")
+ .matches(/^\d{4}-\d{2}-\d{2}$/, "تاریخ پایان الزامی است!")
+ .test("is-valid-date", "تاریخ پایان معتبر نیست!", (value) => moment(value, "YYYY-MM-DD", true).isValid()),
+ province_id: yup.string().nullable(),
+ });
+
+ const { control, handleSubmit } = useForm({
+ defaultValues,
+ resolver: yupResolver(validationSchema),
+ mode: "all",
+ });
+
+ return (
+
+
+
+ {!data ? : }
+
+ );
+};
+export default MachinesReportsPage;
diff --git a/src/components/dashboard/roadMissions/reports/machinesTypeReports/MachinesReportsList.jsx b/src/components/dashboard/roadMissions/reports/machinesTypeReports/MachinesReportsList.jsx
index 5fb261d..4f8b994 100644
--- a/src/components/dashboard/roadMissions/reports/machinesTypeReports/MachinesReportsList.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesTypeReports/MachinesReportsList.jsx
@@ -1,61 +1,61 @@
-"use client";
-import DataTableWithAuth from "@/core/components/DataTableWithAuth";
-import { Box } from "@mui/material";
-import { useMemo } from "react";
-import Toolbar from "./Toolbar";
-// import RowActions from "./RowActions";
-
-const MachinesReportsList = ({ data, specialFilter }) => {
- const columns = useMemo(() => {
- return [
- {
- accessorKey: "car_type",
- header: "نوع ماشین",
- id: "car_type",
- enableColumnFilter: false,
- enableSorting: false,
- datatype: "text",
- grow: false,
- size: 50,
- },
- {
- accessorKey: "func",
- header: "کارکرد",
- id: "func",
- enableColumnFilter: false,
- enableSorting: false,
- datatype: "number",
- grow: false,
- size: 50,
- },
- {
- accessorKey: "missions",
- header: "تعداد ماموریت",
- id: "missions",
- enableColumnFilter: false,
- enableSorting: false,
- datatype: "number",
- grow: false,
- size: 50,
- },
- ];
- }, []);
-
- return (
-
-
-
- );
-};
-
-export default MachinesReportsList;
+"use client";
+import DataTableWithAuth from "@/core/components/DataTableWithAuth";
+import { Box } from "@mui/material";
+import { useMemo } from "react";
+import Toolbar from "./Toolbar";
+// import RowActions from "./RowActions";
+
+const MachinesReportsList = ({ data, specialFilter }) => {
+ const columns = useMemo(() => {
+ return [
+ {
+ accessorKey: "car_type",
+ header: "نوع ماشین",
+ id: "car_type",
+ enableColumnFilter: false,
+ enableSorting: false,
+ datatype: "text",
+ grow: false,
+ size: 50,
+ },
+ {
+ accessorKey: "func",
+ header: "کارکرد",
+ id: "func",
+ enableColumnFilter: false,
+ enableSorting: false,
+ datatype: "number",
+ grow: false,
+ size: 50,
+ },
+ {
+ accessorKey: "missions",
+ header: "تعداد ماموریت",
+ id: "missions",
+ enableColumnFilter: false,
+ enableSorting: false,
+ datatype: "number",
+ grow: false,
+ size: 50,
+ },
+ ];
+ }, []);
+
+ return (
+
+
+
+ );
+};
+
+export default MachinesReportsList;
diff --git a/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/MissionDitails/Form/MachineMissionsDetailsDialog/MachineMissionsList/index.jsx b/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/MissionDitails/Form/MachineMissionsDetailsDialog/MachineMissionsList/index.jsx
index ada49f4..87f612d 100644
--- a/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/MissionDitails/Form/MachineMissionsDetailsDialog/MachineMissionsList/index.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/MissionDitails/Form/MachineMissionsDetailsDialog/MachineMissionsList/index.jsx
@@ -1,106 +1,106 @@
-import DataTableWithAuth from "@/core/components/DataTableWithAuth";
-import { GET_MACHINE_MISSIONS_DETAILS, GET_MACHINE_TYPE_MISSIONS_DETAILS } from "@/core/utils/routes";
-import { Box } from "@mui/material";
-import { useMemo } from "react";
-
-const MachineMissionsList = ({ row }) => {
- const columns = useMemo(
- () => [
- {
- accessorKey: "id",
- header: "کد یکتا",
- id: "id",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 80,
- },
- {
- accessorKey: "province_name",
- header: "استان",
- id: "province_name",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- {
- accessorKey: "city_name",
- header: "شهر",
- id: "city_name",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- {
- accessorKey: "station_name",
- header: "راهدارخانه",
- id: "station_name",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- {
- accessorKey: "driver_name",
- header: "راننده",
- id: "driver_name",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- {
- accessorKey: "km",
- header: "کیلومتر شروع",
- id: "km",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- {
- accessorKey: "end_km",
- header: "کیلومتر پایان",
- id: "end_km",
- enableColumnFilter: true,
- datatype: "text",
- filterMode: "equals",
- columnFilterModeOptions: ["equals", "contains"],
- grow: false,
- size: 100,
- },
- ],
- []
- );
-
- return (
- <>
-
-
-
- >
- );
-};
-export default MachineMissionsList;
+import DataTableWithAuth from "@/core/components/DataTableWithAuth";
+import { GET_MACHINE_MISSIONS_DETAILS, GET_MACHINE_TYPE_MISSIONS_DETAILS } from "@/core/utils/routes";
+import { Box } from "@mui/material";
+import { useMemo } from "react";
+
+const MachineMissionsList = ({ row }) => {
+ const columns = useMemo(
+ () => [
+ {
+ accessorKey: "id",
+ header: "کد یکتا",
+ id: "id",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 80,
+ },
+ {
+ accessorKey: "province_name",
+ header: "استان",
+ id: "province_name",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ {
+ accessorKey: "city_name",
+ header: "شهر",
+ id: "city_name",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ {
+ accessorKey: "station_name",
+ header: "راهدارخانه",
+ id: "station_name",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ {
+ accessorKey: "driver_name",
+ header: "راننده",
+ id: "driver_name",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ {
+ accessorKey: "km",
+ header: "کیلومتر شروع",
+ id: "km",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ {
+ accessorKey: "end_km",
+ header: "کیلومتر پایان",
+ id: "end_km",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ },
+ ],
+ []
+ );
+
+ return (
+ <>
+
+
+
+ >
+ );
+};
+export default MachineMissionsList;
diff --git a/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/MissionDitails/Form/index.jsx b/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/MissionDitails/Form/index.jsx
index 5e79bfa..117e6ea 100644
--- a/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/MissionDitails/Form/index.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/MissionDitails/Form/index.jsx
@@ -1,27 +1,27 @@
-import { Box, Button, DialogActions, DialogContent } from "@mui/material";
-import { Stack } from "@mui/system";
-import MachineMissionsList from "./MachineMissionsDetailsDialog/MachineMissionsList";
-
-const MachineMissionsDetailsTable = ({ row, setOpenMachineMissionsDetails }) => {
- return (
- <>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- >
- );
-};
-export default MachineMissionsDetailsTable;
+import { Box, Button, DialogActions, DialogContent } from "@mui/material";
+import { Stack } from "@mui/system";
+import MachineMissionsList from "./MachineMissionsDetailsDialog/MachineMissionsList";
+
+const MachineMissionsDetailsTable = ({ row, setOpenMachineMissionsDetails }) => {
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+};
+export default MachineMissionsDetailsTable;
diff --git a/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/MissionDitails/index.jsx b/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/MissionDitails/index.jsx
index 21a8263..05be524 100644
--- a/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/MissionDitails/index.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/MissionDitails/index.jsx
@@ -1,47 +1,47 @@
-import { Close, RemoveRedEye } from "@mui/icons-material";
-import { Dialog, DialogTitle, IconButton, Tooltip } from "@mui/material";
-import { useState } from "react";
-import MachineMissionsDetailsTable from "./Form";
-
-const MissionDetails = ({ row }) => {
- const [openMachineMissionsDetails, setOpenMachineMissionsDetails] = useState(false);
-
- return (
- <>
-
- {
- setOpenMachineMissionsDetails(true);
- }}
- >
-
-
-
-
- >
- );
-};
-export default MissionDetails;
+import { Close, RemoveRedEye } from "@mui/icons-material";
+import { Dialog, DialogTitle, IconButton, Tooltip } from "@mui/material";
+import { useState } from "react";
+import MachineMissionsDetailsTable from "./Form";
+
+const MissionDetails = ({ row }) => {
+ const [openMachineMissionsDetails, setOpenMachineMissionsDetails] = useState(false);
+
+ return (
+ <>
+
+ {
+ setOpenMachineMissionsDetails(true);
+ }}
+ >
+
+
+
+
+ >
+ );
+};
+export default MissionDetails;
diff --git a/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/RouteDetail/ShowRoute.jsx b/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/RouteDetail/ShowRoute.jsx
index 5e1a4bd..7d47ba8 100644
--- a/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/RouteDetail/ShowRoute.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/RouteDetail/ShowRoute.jsx
@@ -1,46 +1,46 @@
-import { useEffect, useRef } from "react";
-import { Marker, Polyline, useMap } from "react-leaflet";
-import L from "leaflet";
-import polyline from "@mapbox/polyline";
-import SourceIcon from "@/assets/images/source-icon.svg";
-import DestIcon from "@/assets/images/destination-icon.svg";
-
-const ShowRoute = ({ area }) => {
- const map = useMap();
- const defaultIconSize = [35, 35];
-
- const createCustomIcon = (size, iconUrl) => {
- return L.icon({
- iconUrl: iconUrl,
- iconSize: size,
- iconAnchor: [size[0] / 2, size[1]],
- popupAnchor: [0, -size[1]],
- });
- };
-
- useEffect(() => {
- if (coords.length > 0) {
- map.flyToBounds(coords, { padding: [50, 50], duration: 1.5 });
- }
- }, [area]);
- const sourceIcon = createCustomIcon(defaultIconSize, SourceIcon.src);
- const destIcon = createCustomIcon(defaultIconSize, DestIcon.src);
-
- if (!area) return null;
- const coords = polyline.decode(area, 6);
-
- if (coords.length === 0) return null;
-
- const sourcePosition = coords[0];
- const destPosition = coords[coords.length - 1];
-
- return (
- <>
-
-
-
- >
- );
-};
-
-export default ShowRoute;
+import { useEffect, useRef } from "react";
+import { Marker, Polyline, useMap } from "react-leaflet";
+import L from "leaflet";
+import polyline from "@mapbox/polyline";
+import SourceIcon from "@/assets/images/source-icon.svg";
+import DestIcon from "@/assets/images/destination-icon.svg";
+
+const ShowRoute = ({ area }) => {
+ const map = useMap();
+ const defaultIconSize = [35, 35];
+
+ const createCustomIcon = (size, iconUrl) => {
+ return L.icon({
+ iconUrl: iconUrl,
+ iconSize: size,
+ iconAnchor: [size[0] / 2, size[1]],
+ popupAnchor: [0, -size[1]],
+ });
+ };
+
+ useEffect(() => {
+ if (coords.length > 0) {
+ map.flyToBounds(coords, { padding: [50, 50], duration: 1.5 });
+ }
+ }, [area]);
+ const sourceIcon = createCustomIcon(defaultIconSize, SourceIcon.src);
+ const destIcon = createCustomIcon(defaultIconSize, DestIcon.src);
+
+ if (!area) return null;
+ const coords = polyline.decode(area, 6);
+
+ if (coords.length === 0) return null;
+
+ const sourcePosition = coords[0];
+ const destPosition = coords[coords.length - 1];
+
+ return (
+ <>
+
+
+
+ >
+ );
+};
+
+export default ShowRoute;
diff --git a/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/RouteDetail/index.jsx b/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/RouteDetail/index.jsx
index 4501d35..48b84a2 100644
--- a/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/RouteDetail/index.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/RouteDetail/index.jsx
@@ -1,57 +1,57 @@
-import { Box, Button, Dialog, DialogActions, DialogTitle, IconButton, Tooltip } from "@mui/material";
-import { useState } from "react";
-import MapIcon from "@mui/icons-material/Map";
-import MapLayer from "@/core/components/MapLayer";
-import ShowRoute from "./ShowRoute";
-
-const RouteDetail = ({ encoded_route }) => {
- const [openRouteDetailDialog, setOpenRouteDetailDialog] = useState(false);
- return (
- <>
-
- setOpenRouteDetailDialog(true)}>
-
-
-
-
- >
- );
-};
-export default RouteDetail;
+import { Box, Button, Dialog, DialogActions, DialogTitle, IconButton, Tooltip } from "@mui/material";
+import { useState } from "react";
+import MapIcon from "@mui/icons-material/Map";
+import MapLayer from "@/core/components/MapLayer";
+import ShowRoute from "./ShowRoute";
+
+const RouteDetail = ({ encoded_route }) => {
+ const [openRouteDetailDialog, setOpenRouteDetailDialog] = useState(false);
+ return (
+ <>
+
+ setOpenRouteDetailDialog(true)}>
+
+
+
+
+ >
+ );
+};
+export default RouteDetail;
diff --git a/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/index.jsx b/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/index.jsx
index 2690157..9f5e29d 100644
--- a/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/index.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesTypeReports/RowActions/index.jsx
@@ -1,10 +1,6 @@
-// import MissionDetails from "./MissionDitails";
-
-const RowActions = ({ row }) => {
- return (
- <>
- {/**/}
- >
- );
-};
-export default RowActions;
+// import MissionDetails from "./MissionDitails";
+
+const RowActions = ({ row }) => {
+ return <>{/**/}>;
+};
+export default RowActions;
diff --git a/src/components/dashboard/roadMissions/reports/machinesTypeReports/Search/FromDateController.jsx b/src/components/dashboard/roadMissions/reports/machinesTypeReports/Search/FromDateController.jsx
index 490ee7b..0a81488 100644
--- a/src/components/dashboard/roadMissions/reports/machinesTypeReports/Search/FromDateController.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesTypeReports/Search/FromDateController.jsx
@@ -1,27 +1,27 @@
-import MuiDatePicker from "@/core/components/MuiDatePicker";
-import moment from "jalali-moment";
-import { Controller } from "react-hook-form";
-
-const FromDateController = ({ control }) => {
- return (
- (
- {
- const formattedDate = moment(new Date(newValue)).locale("en").format("YYYY-MM-DD");
- onChange(formattedDate); // Update the field value in react-hook-form
- }}
- helperText={error ? error.message : null}
- />
- )}
- />
- );
-};
-export default FromDateController;
+import MuiDatePicker from "@/core/components/MuiDatePicker";
+import moment from "jalali-moment";
+import { Controller } from "react-hook-form";
+
+const FromDateController = ({ control }) => {
+ return (
+ (
+ {
+ const formattedDate = moment(new Date(newValue)).locale("en").format("YYYY-MM-DD");
+ onChange(formattedDate); // Update the field value in react-hook-form
+ }}
+ helperText={error ? error.message : null}
+ />
+ )}
+ />
+ );
+};
+export default FromDateController;
diff --git a/src/components/dashboard/roadMissions/reports/machinesTypeReports/Search/SearchReportField.jsx b/src/components/dashboard/roadMissions/reports/machinesTypeReports/Search/SearchReportField.jsx
index bde2a4c..e1b71cd 100644
--- a/src/components/dashboard/roadMissions/reports/machinesTypeReports/Search/SearchReportField.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesTypeReports/Search/SearchReportField.jsx
@@ -1,44 +1,44 @@
-import SearchIcon from "@mui/icons-material/Search";
-import { Button, Grid } from "@mui/material";
-import { Controller } from "react-hook-form";
-import FromDateController from "./FromDateController";
-import SelectProvince from "./SelectProvince";
-import ToDateController from "./ToDateController";
-
-const SearchReportField = ({ control, hasProvincesPermission }) => {
- return (
-
-
-
-
-
-
-
- {hasProvincesPermission && (
-
-
-
- )}
-
- (
- }
- fullWidth
- >
- {isSubmitting ? "درحال دریافت اطلاعات" : "جستجو"}
-
- )}
- />
-
-
- );
-};
-
-export default SearchReportField;
+import SearchIcon from "@mui/icons-material/Search";
+import { Button, Grid } from "@mui/material";
+import { Controller } from "react-hook-form";
+import FromDateController from "./FromDateController";
+import SelectProvince from "./SelectProvince";
+import ToDateController from "./ToDateController";
+
+const SearchReportField = ({ control, hasProvincesPermission }) => {
+ return (
+
+
+
+
+
+
+
+ {hasProvincesPermission && (
+
+
+
+ )}
+
+ (
+ }
+ fullWidth
+ >
+ {isSubmitting ? "درحال دریافت اطلاعات" : "جستجو"}
+
+ )}
+ />
+
+
+ );
+};
+
+export default SearchReportField;
diff --git a/src/components/dashboard/roadMissions/reports/machinesTypeReports/Search/SelectProvince.jsx b/src/components/dashboard/roadMissions/reports/machinesTypeReports/Search/SelectProvince.jsx
index 2b24d67..89395f0 100644
--- a/src/components/dashboard/roadMissions/reports/machinesTypeReports/Search/SelectProvince.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesTypeReports/Search/SelectProvince.jsx
@@ -1,45 +1,45 @@
-import useProvinces from "@/lib/hooks/useProvince";
-import { FormControl, FormHelperText, InputLabel, MenuItem, Select } from "@mui/material";
-import { Controller } from "react-hook-form";
-
-const SelectProvince = ({ control }) => {
- const { provinces, loadingProvinces, errorProvinces } = useProvinces();
- return (
- (
-
- استان
-
- {error && {error.message}}
-
- )}
- />
- );
-};
-export default SelectProvince;
+import useProvinces from "@/lib/hooks/useProvince";
+import { FormControl, FormHelperText, InputLabel, MenuItem, Select } from "@mui/material";
+import { Controller } from "react-hook-form";
+
+const SelectProvince = ({ control }) => {
+ const { provinces, loadingProvinces, errorProvinces } = useProvinces();
+ return (
+ (
+
+ استان
+
+ {error && {error.message}}
+
+ )}
+ />
+ );
+};
+export default SelectProvince;
diff --git a/src/components/dashboard/roadMissions/reports/machinesTypeReports/Search/ToDateController.jsx b/src/components/dashboard/roadMissions/reports/machinesTypeReports/Search/ToDateController.jsx
index fc4a776..ef3ff49 100644
--- a/src/components/dashboard/roadMissions/reports/machinesTypeReports/Search/ToDateController.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesTypeReports/Search/ToDateController.jsx
@@ -1,30 +1,30 @@
-import MuiDatePicker from "@/core/components/MuiDatePicker";
-import moment from "jalali-moment";
-import { Controller, useWatch } from "react-hook-form";
-
-const ToDateController = ({ control }) => {
- const minDate = useWatch({ control, name: "from_date" });
- return (
- (
- {
- const formattedDate = moment(new Date(newValue)).locale("en").format("YYYY-MM-DD");
- onChange(formattedDate); // Update the field value in react-hook-form
- }}
- helperText={error ? error.message : null}
- />
- )}
- />
- );
-};
-export default ToDateController;
+import MuiDatePicker from "@/core/components/MuiDatePicker";
+import moment from "jalali-moment";
+import { Controller, useWatch } from "react-hook-form";
+
+const ToDateController = ({ control }) => {
+ const minDate = useWatch({ control, name: "from_date" });
+ return (
+ (
+ {
+ const formattedDate = moment(new Date(newValue)).locale("en").format("YYYY-MM-DD");
+ onChange(formattedDate); // Update the field value in react-hook-form
+ }}
+ helperText={error ? error.message : null}
+ />
+ )}
+ />
+ );
+};
+export default ToDateController;
diff --git a/src/components/dashboard/roadMissions/reports/machinesTypeReports/Search/index.jsx b/src/components/dashboard/roadMissions/reports/machinesTypeReports/Search/index.jsx
index f29d302..9d504f2 100644
--- a/src/components/dashboard/roadMissions/reports/machinesTypeReports/Search/index.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesTypeReports/Search/index.jsx
@@ -1,13 +1,13 @@
-import StyledForm from "@/core/components/StyledForm";
-import SearchReportField from "./SearchReportField";
-
-const SearchReportList = ({ handleSubmit, onSearchSubmit, control, hasProvincesPermission }) => {
- return (
- <>
-
-
-
- >
- );
-};
-export default SearchReportList;
+import StyledForm from "@/core/components/StyledForm";
+import SearchReportField from "./SearchReportField";
+
+const SearchReportList = ({ handleSubmit, onSearchSubmit, control, hasProvincesPermission }) => {
+ return (
+ <>
+
+
+
+ >
+ );
+};
+export default SearchReportList;
diff --git a/src/components/dashboard/roadMissions/reports/machinesTypeReports/Toolbar.jsx b/src/components/dashboard/roadMissions/reports/machinesTypeReports/Toolbar.jsx
index 0f726c7..afc132c 100644
--- a/src/components/dashboard/roadMissions/reports/machinesTypeReports/Toolbar.jsx
+++ b/src/components/dashboard/roadMissions/reports/machinesTypeReports/Toolbar.jsx
@@ -1,11 +1,11 @@
-import { Box } from "@mui/material";
-import PrintExcel from "./ExcelPrint";
-
-const Toolbar = ({ table, filterData, mutate }) => {
- return (
-
-
-
- );
-};
-export default Toolbar;
+import { Box } from "@mui/material";
+import PrintExcel from "./ExcelPrint";
+
+const Toolbar = ({ table, filterData, mutate }) => {
+ return (
+
+
+
+ );
+};
+export default Toolbar;
diff --git a/src/core/utils/routes.js b/src/core/utils/routes.js
index d77593e..e8cd60f 100644
--- a/src/core/utils/routes.js
+++ b/src/core/utils/routes.js
@@ -256,8 +256,10 @@ export const EXPORT_GET_MACHINES_COUNTRY_ACTIVITY_REPORT =
export const EXPORT_GET_MACHINES_PROVINCE_ACTIVITY_REPORT =
api + "/api/v3/missions/report_machine/province_machines_activity_excel";
-export const GET_DRIVER_COUNTRY_ACTIVITY_REPORT = api + "/api/v3/missions/report_machine/country_machine_drivers_activity";
-export const GET_DRIVER_PROVINCE_ACTIVITY_REPORT = api + "/api/v3/missions/report_machine/province_machine_drivers_activity";
+export const GET_DRIVER_COUNTRY_ACTIVITY_REPORT =
+ api + "/api/v3/missions/report_machine/country_machine_drivers_activity";
+export const GET_DRIVER_PROVINCE_ACTIVITY_REPORT =
+ api + "/api/v3/missions/report_machine/province_machine_drivers_activity";
export const EXPORT_GET_DRIVER_COUNTRY_ACTIVITY_REPORT =
api + "/api/v3/missions/report_machine/country_machine_drivers_activity_excel";
export const EXPORT_GET_DRIVER_PROVINCE_ACTIVITY_REPORT =
@@ -265,7 +267,8 @@ export const EXPORT_GET_DRIVER_PROVINCE_ACTIVITY_REPORT =
export const GET_MACHINES_TYPE_COUNTRY_ACTIVITY_REPORT =
api + "/api/v3/missions/report_machine/country_machine_types_activity";
-export const GET_MACHINES_TYPE_PROVINCE_ACTIVITY_REPORT = api + "/api/v3/missions/report_machine/province_machine_types_activity";
+export const GET_MACHINES_TYPE_PROVINCE_ACTIVITY_REPORT =
+ api + "/api/v3/missions/report_machine/province_machine_types_activity";
export const EXPORT_GET_MACHINES_TYPE_COUNTRY_ACTIVITY_REPORT =
api + "/api/v3/missions/report_machine/country_machine_types_activity_excel";
export const EXPORT_GET_MACHINES_TYPE_PROVINCE_ACTIVITY_REPORT =