diff --git a/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/control/page.js b/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/control/page.js index e22ce33..708e125 100644 --- a/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/control/page.js +++ b/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/control/page.js @@ -7,7 +7,14 @@ export const metadata = { const Page = () => { return ( <> - + {/* */} diff --git a/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/operator/page.js b/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/operator/page.js index 417937a..4328d12 100644 --- a/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/operator/page.js +++ b/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/operator/page.js @@ -12,6 +12,7 @@ const Page = () => { "manage-request-portal-country", "manage-request-portal-province", "manage-request-portal-city", + "manage-request-portal-station", ]} > diff --git a/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/transportation/page.js b/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/transportation/page.js index ff62cff..5644851 100644 --- a/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/transportation/page.js +++ b/src/app/(withAuth)/(dashboardLayout)/dashboard/road-missions/transportation/page.js @@ -7,7 +7,14 @@ export const metadata = { const Page = () => { return ( <> - + {/* */} diff --git a/src/components/dashboard/roadMissions/control/index.jsx b/src/components/dashboard/roadMissions/control/index.jsx index ac96845..00b0931 100644 --- a/src/components/dashboard/roadMissions/control/index.jsx +++ b/src/components/dashboard/roadMissions/control/index.jsx @@ -5,7 +5,7 @@ import ControlList from "./ControlList"; const ControlPage = () => { return ( - + ); diff --git a/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/index.jsx b/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/index.jsx index b49ede0..f4e66e5 100644 --- a/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/index.jsx +++ b/src/components/dashboard/roadMissions/operator/Actions/Create/Form/GetItemInfo/index.jsx @@ -9,7 +9,6 @@ import { ExitToApp } from "@mui/icons-material"; import { Box, Button, DialogActions, DialogContent, Grid, Stack } from "@mui/material"; import { Controller, useForm } from "react-hook-form"; import { array, object, string } from "yup"; -import FastReactCode from "./FastReactCode"; const validationSchema = object({ explanation: string().required("موضوع را مشخص کنید!"), @@ -106,9 +105,6 @@ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => { )} /> - - - { rahdaran: [], requested_machines: [], bound: null, - bound_type: "polygon", + bound_type: "polyline", type: "", start_date: "", start_time: null, diff --git a/src/components/dashboard/roadMissions/operator/Actions/CreateWithoutProcess/Form/GetItemInfo/index.jsx b/src/components/dashboard/roadMissions/operator/Actions/CreateWithoutProcess/Form/GetItemInfo/index.jsx index 7610a5b..6e3afa0 100644 --- a/src/components/dashboard/roadMissions/operator/Actions/CreateWithoutProcess/Form/GetItemInfo/index.jsx +++ b/src/components/dashboard/roadMissions/operator/Actions/CreateWithoutProcess/Form/GetItemInfo/index.jsx @@ -8,7 +8,6 @@ import { ExitToApp } from "@mui/icons-material"; import { Box, Button, DialogActions, DialogContent, Grid, Stack } from "@mui/material"; import { Controller, useForm } from "react-hook-form"; import { object, string } from "yup"; -import FastReactCode from "./FastReactCode"; const validationSchema = object({ explanation: string().required("موضوع را مشخص کنید!"), @@ -103,9 +102,6 @@ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => { )} /> - - - { road_observed_id: "", rahdaran: [], bound: null, - bound_type: "polygon", + bound_type: "polyline", start_date: "", start_time: null, end_date: "", diff --git a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/Area/index.jsx b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/Area/index.jsx index d47f840..c8feef7 100644 --- a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/Area/index.jsx +++ b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/Area/index.jsx @@ -19,7 +19,6 @@ const Area = ({ allData, setAllData, handlePrev, setTabState, oldBound }) => { setAllData({ bound: bound }); setTabState((s) => s + 1); }, [bound]); - return ( <> diff --git a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/index.jsx b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/index.jsx index 7610a5b..6e3afa0 100644 --- a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/index.jsx +++ b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/index.jsx @@ -8,7 +8,6 @@ import { ExitToApp } from "@mui/icons-material"; import { Box, Button, DialogActions, DialogContent, Grid, Stack } from "@mui/material"; import { Controller, useForm } from "react-hook-form"; import { object, string } from "yup"; -import FastReactCode from "./FastReactCode"; const validationSchema = object({ explanation: string().required("موضوع را مشخص کنید!"), @@ -103,9 +102,6 @@ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => { )} /> - - - { category_id: "", bound: null, rahdaran: rahdaran.filter((r) => !r.is_driver), - bound_type: "polygon", + bound_type: "polyline", type: "", end_date: "", end_time: null, diff --git a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/index.jsx b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/index.jsx index 2842239..a2e6ff0 100644 --- a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/index.jsx +++ b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/index.jsx @@ -1,7 +1,6 @@ import DialogLoading from "@/core/components/DialogLoading"; import { GET_MACHINES_BY_ID, GET_RAHDARAN_BY_ID } from "@/core/utils/routes"; import useRequest from "@/lib/hooks/useRequest"; -import L from "leaflet"; import { useEffect, useMemo, useState } from "react"; import DialogAdd from "./Dialog"; @@ -36,13 +35,22 @@ const AddController = ({ row, mutate, setOpenAddDialog }) => { }); }, [row.original.id]); + const convertedArea = useMemo(() => { + if (!row.original.area) return null; + + return { + ...row.original.area, + coordinates: row.original.area.coordinates.map(([lng, lat]) => [lat, lng]), + }; + }, [row.original.area]); + return rahdaranLoading || machineLoading ? ( ) : ( { + const latLngs = useMemo(() => { + return row.original.area.coordinates.map(([lng, lat]) => [lat, lng]); + }, [row.original.area.coordinates]); + const bound = useMemo( - () => - row.original.area.type == "polygon" - ? L.polygon([...row.original.area.coordinates]) - : L.polyline([...row.original.area.coordinates]), - [row.original.area] + () => (row.original.area.type === "polygon" ? L.polygon(latLngs) : L.polyline(latLngs)), + [row.original.area.type, latLngs] ); + const [submitting, setSubmitting] = useState(false); const [rahdaran, setRahdaran] = useState(null); const [rahdaranLoading, setRahdaranLoading] = useState(true); @@ -35,7 +37,6 @@ const EditController = ({ row, mutate, openEditDialog, setOpenEditDialog }) => { setSubmitting(true); const bound = result.bound.getLatLngs(); let area = bound.map((ring) => ring.map((latlng) => [latlng.lat, latlng.lng])); - await requestServer(`${UPDATE_REQUEST_MISSION}/${row.original.id}`, "post", { data: { explanation: result.explanation, diff --git a/src/components/dashboard/roadMissions/operator/index.jsx b/src/components/dashboard/roadMissions/operator/index.jsx index 148167b..20b08f1 100644 --- a/src/components/dashboard/roadMissions/operator/index.jsx +++ b/src/components/dashboard/roadMissions/operator/index.jsx @@ -6,7 +6,7 @@ import OperatorList from "./OperatorList"; const OperatorPage = () => { return ( - + ); diff --git a/src/components/dashboard/roadMissions/reports/ReportLists.jsx b/src/components/dashboard/roadMissions/reports/ReportLists.jsx index 19b5e71..fd7d606 100644 --- a/src/components/dashboard/roadMissions/reports/ReportLists.jsx +++ b/src/components/dashboard/roadMissions/reports/ReportLists.jsx @@ -41,9 +41,9 @@ const ReportLists = ({ data, specialFilter }) => { }, }, { - accessorKey: "out_of_aria_count", + accessorKey: "out_of_area_count", header: "تردد خارج محدوده", - id: "out_of_aria_count", + id: "out_of_area_count", enableColumnFilter: false, enableSorting: false, datatype: "text", diff --git a/src/components/dashboard/roadMissions/reports/index.jsx b/src/components/dashboard/roadMissions/reports/index.jsx index 5dfd3a7..83daf1a 100644 --- a/src/components/dashboard/roadMissions/reports/index.jsx +++ b/src/components/dashboard/roadMissions/reports/index.jsx @@ -46,8 +46,7 @@ const ReportPage = () => { params.set("province_id", `${data.province_id}`); const response = await requestServer(`${GET_CITY_ACTIVITY_REPORT}?${params}`); const result = response.data.data; - console.log(result); - const nationalReportForItem = result.activities.find((report) => report.province_id === -1); + const nationalReportForItem = result.activities.find((report) => report.province_id === "-1"); const nationalReport = { edare_name: "کل کشور", ...nationalReportForItem, @@ -57,7 +56,8 @@ const ReportPage = () => { data: [ nationalReport, ...result.provinces.map((province) => { - const filteredReports = result.activities.find((report) => report.province_id === province.id); + const filteredReports = result.activities.find((report) => report.province_id == province.id); + console.log(filteredReports); return { ...filteredReports, edare_name: province.name_fa, diff --git a/src/components/dashboard/roadMissions/transportation/RowActions/Allocation/Form/index.jsx b/src/components/dashboard/roadMissions/transportation/RowActions/Allocation/Form/index.jsx index eed66c8..c35018d 100644 --- a/src/components/dashboard/roadMissions/transportation/RowActions/Allocation/Form/index.jsx +++ b/src/components/dashboard/roadMissions/transportation/RowActions/Allocation/Form/index.jsx @@ -12,16 +12,27 @@ import ShowBound from "../../../Actions/showBound"; import DriversDialog from "./DriversDialog"; import MachinesDialog from "./MachinesDialog"; import Reject from "./Reject"; +import SelectBox from "@/core/components/SelectBox"; +import { Controller, useForm } from "react-hook-form"; + const AllocationForm = ({ row, mutate, setOpenAllocationDialog }) => { + const latLngs = useMemo(() => { + return row.area.coordinates.map(([lng, lat]) => [lat, lng]); + }, [row.area.coordinates]); + const bound = useMemo( - () => - row.area.type == "polygon" ? L.polygon([...row.area.coordinates]) : L.polyline([...row.area.coordinates]), - [row.area] + () => (row.area.type === "polygon" ? L.polygon(latLngs) : L.polyline(latLngs)), + [row.area.type, latLngs] ); const requestServer = useRequest({ notificationSuccess: true }); const [machine, setMachine] = useState(); const [driver, setDriver] = useState(); const [isSubmitting, setIsSubmitting] = useState(false); + const { control, watch } = useForm({ + defaultValues: { + machine_type: row.requested_machines?.[0] ? [row.requested_machines[0]] : [], + }, + }); const handleSubmit = async (_machine, _driver) => { setIsSubmitting(true); @@ -42,6 +53,7 @@ const AllocationForm = ({ row, mutate, setOpenAllocationDialog }) => { }); }; + const selectedMachineType = watch("machine_type")?.[0]; return ( <> @@ -50,12 +62,22 @@ const AllocationForm = ({ row, mutate, setOpenAllocationDialog }) => { - - نوع خودرو درخواستی - - - mt.id == row.requested_machines?.[0])?.name_fa} + ( + { + field.onChange([newValue]); + }} + /> + )} /> @@ -73,16 +95,13 @@ const AllocationForm = ({ row, mutate, setOpenAllocationDialog }) => { /> ) : ( - + )} {machine && ( diff --git a/src/components/dashboard/roadMissions/transportation/index.jsx b/src/components/dashboard/roadMissions/transportation/index.jsx index ca0db36..f42676e 100644 --- a/src/components/dashboard/roadMissions/transportation/index.jsx +++ b/src/components/dashboard/roadMissions/transportation/index.jsx @@ -6,7 +6,7 @@ import TransportationList from "./TransportationList"; const TransportationPage = () => { return ( - + ); diff --git a/src/core/utils/pageMenu.js b/src/core/utils/pageMenu.js index 1388709..08f09f0 100644 --- a/src/core/utils/pageMenu.js +++ b/src/core/utils/pageMenu.js @@ -110,7 +110,7 @@ export const pageMenu = [ Subitems: [ { id: "roadMissionsManagemnetRequests", - label: "کارتابل", + label: "درخواست کننده", icon: , type: "page", route: "/dashboard/road-missions/operator", @@ -119,25 +119,36 @@ export const pageMenu = [ "manage-request-portal-country", "manage-request-portal-province", "manage-request-portal-city", + "manage-request-portal-station", ], }, { id: "roadMissionsManagemnetNaqlie", - label: "نقلیه", + label: "تایید کننده", type: "page", icon: , route: "/dashboard/road-missions/transportation", badges: [{ key: "mission.transportation" }], - permissions: ["manage-transportation-unit"], + permissions: [ + "manage-transportation-unit-city", + "manage-transportation-unit-province", + "manage-transportation-unit-country", + "manage-transportation-unit-station", + ], }, { id: "roadMissionsManagemnetControl", - label: "کنترل", + label: "کنترل تردد", type: "page", icon: , route: "/dashboard/road-missions/control", badges: [{ key: "mission.control" }], - permissions: ["manage-control-unit"], + permissions: [ + "manage-control-unit-province", + "manage-control-unit-city", + "manage-control-unit-country", + "manage-control-unit-station", + ], }, { id: "roadMissionsViolations", @@ -148,15 +159,15 @@ export const pageMenu = [ // badges: [{ key: "mission.control" }], // TODO: add badge and permission permissions: ["all"], }, - // { - // id: "roadMissionsReports", - // label: "گزارشات", - // type: "page", - // route: "/dashboard/road-missions/reports", - // icon: , - // // badges: [{ key: "mission.control" }], // TODO: add badge and permission - // permissions: ["all"], - // }, + { + id: "roadMissionsReports", + label: "گزارشات", + type: "page", + route: "/dashboard/road-missions/reports", + icon: , + // badges: [{ key: "mission.control" }], // TODO: add badge and permission + permissions: ["all"], + }, ], }, { diff --git a/src/core/utils/pageMenuDev.js b/src/core/utils/pageMenuDev.js index 27b37c1..f78fffe 100644 --- a/src/core/utils/pageMenuDev.js +++ b/src/core/utils/pageMenuDev.js @@ -109,7 +109,7 @@ export const pageMenuDev = [ Subitems: [ { id: "roadMissionsManagemnetRequests", - label: "کارتابل", + label: "درخواست کننده", icon: , type: "page", route: "/dashboard/road-missions/operator", @@ -118,25 +118,36 @@ export const pageMenuDev = [ "manage-request-portal-country", "manage-request-portal-province", "manage-request-portal-city", + "manage-request-portal-station", ], }, { id: "roadMissionsManagemnetNaqlie", - label: "نقلیه", + label: "تایید کننده", type: "page", icon: , route: "/dashboard/road-missions/transportation", badges: [{ key: "mission.transportation" }], - permissions: ["manage-transportation-unit"], + permissions: [ + "manage-transportation-unit-province", + "manage-transportation-unit-city", + "manage-transportation-unit-country", + "manage-transportation-unit-station", + ], }, { id: "roadMissionsManagemnetControl", - label: "کنترل", + label: "کنترل تردد", type: "page", icon: , route: "/dashboard/road-missions/control", badges: [{ key: "mission.control" }], - permissions: ["manage-control-unit"], + permissions: [ + "manage-control-unit-province", + "manage-control-unit-city", + "manage-control-unit-country", + "manage-control-unit-station", + ], }, { id: "roadMissionsViolations", @@ -147,15 +158,15 @@ export const pageMenuDev = [ // badges: [{ key: "mission.control" }], // TODO: add badge and permission permissions: ["all"], }, - // { - // id: "roadMissionsReports", - // label: "گزارشات", - // type: "page", - // route: "/dashboard/road-missions/reports", - // icon: , - // // badges: [{ key: "mission.control" }], // TODO: add badge and permission - // permissions: ["all"], - // }, + { + id: "roadMissionsReports", + label: "گزارشات", + type: "page", + route: "/dashboard/road-missions/reports", + icon: , + // badges: [{ key: "mission.control" }], // TODO: add badge and permission + permissions: ["all"], + }, ], }, { diff --git a/src/core/utils/routes.js b/src/core/utils/routes.js index 411ef1b..1c9160d 100644 --- a/src/core/utils/routes.js +++ b/src/core/utils/routes.js @@ -43,7 +43,7 @@ export const GET_FMS_DATA = api + "/api/v3/fms_vehicle/get_activity"; export const GET_OTP_TOKEN = api + "/api/v3/otp/get_token"; export const GET_PROVINCE_ACTIVITY_REPORT = api + "/api/v3/road_patrols/report/country_activity"; -export const GET_CITY_ACTIVITY_REPORT = api + "/api/v3/road_patrols/report/province_activity"; +export const GET_CITY_ACTIVITY_REPORT = api + "/api/v3/missions/report/country_activity"; export const EXPORT_COUNTRY_ROAD_PATROL_REPORTS = api + "/api/v3/road_patrols/report/country_activity_excel"; export const EXPORT_PROVINCE_ROAD_PATROL_REPORTS = api + "/api/v3/road_patrols/report/province_activity_excel";