diff --git a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/ItemSelectField.jsx b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/ItemSelectField.jsx new file mode 100644 index 0000000..f738e6a --- /dev/null +++ b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/ItemSelectField.jsx @@ -0,0 +1,34 @@ +import useRoadItemGetItems from "@/lib/hooks/useRoadItemGetItems"; +import { Controller } from "react-hook-form"; +import SelectBox from "@/core/components/SelectBox"; + +const ItemSelectField = ({ control, setValue }) => { + const { itemsList, loadingItemsList, errorItemsList } = useRoadItemGetItems(); + function getItemName(val) { + return itemsList.find((item) => item.id === val)?.name; + } + + return ( + ( + { + field.onChange(value); + setValue("explanation", getItemName(value)); + setValue("sub_item_id", ""); + }} + /> + )} + /> + ); +}; +export default ItemSelectField; diff --git a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/SubItemSelectField.jsx b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/SubItemSelectField.jsx new file mode 100644 index 0000000..9b05c37 --- /dev/null +++ b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/SubItemSelectField.jsx @@ -0,0 +1,37 @@ +import useRoadItemGetSubItems from "@/lib/hooks/useRoadItemGetISubtems"; +import { Controller } from "react-hook-form"; +import SelectBox from "@/core/components/SelectBox"; + +const SubItemSelectField = ({ control, watch, setValue, getValues }) => { + const itemId = watch("item_id"); + const { subItemsList, loadingSubItemsList, errorSubItemsList } = useRoadItemGetSubItems(itemId); + + function createExplanation(val) { + const currentExplanation = getValues("explanation"); + const selectedItem = subItemsList.find((item) => item.id === val)?.name; + return `${currentExplanation}-${selectedItem}`; + } + + return ( + ( + { + field.onChange(val); + setValue("explanation", createExplanation(val)); + }} + /> + )} + /> + ); +}; +export default SubItemSelectField; diff --git a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/index.jsx b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/index.jsx index 666b1f9..e4a0c57 100644 --- a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/index.jsx +++ b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/GetItemInfo/index.jsx @@ -8,10 +8,12 @@ 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"; +import ItemSelectField from "./ItemSelectField"; +import SubItemSelectField from "./SubItemSelectField"; const validationSchema = object({ - explanation: string().required("موضوع را مشخص کنید!"), + item_id: string().required("موضوع را مشخص کنید!"), + sub_item_id: string().required("اقدام انجام شده را مشخص کنید!"), end_point: string().required("مقصد را مشخص کنید!"), region: string().required("محور ماموریت را مشخص کنید!"), category_id: string().required("نوع ماموریت را مشخص کنید!"), @@ -24,6 +26,8 @@ const validationSchema = object({ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => { const defaultValues = { + item_id: allData.item_id, + sub_item_id: allData.sub_item_id, explanation: allData.explanation, end_point: allData.end_point, region: allData.region, @@ -31,7 +35,7 @@ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => { road_observed_id: allData.road_observed_id, }; - const { control, handleSubmit } = useForm({ + const { control, handleSubmit, watch, setValue, getValues } = useForm({ defaultValues, resolver: yupResolver(validationSchema), mode: "all", @@ -49,24 +53,14 @@ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => { - + + + ( - - )} + watch={watch} + setValue={setValue} + getValues={getValues} /> diff --git a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/index.jsx b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/index.jsx index 2d5973e..32437c6 100644 --- a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/index.jsx +++ b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/Form/index.jsx @@ -1,12 +1,11 @@ -import { AccessTime, Engineering, InsertDriveFile, Person, Verified, Map } from "@mui/icons-material"; +import { Engineering, InsertDriveFile, Map, Person, Verified } from "@mui/icons-material"; import { Box, Tab, Tabs } from "@mui/material"; import { useReducer, useState } from "react"; -import GetDateTime from "./GetDateTime"; +import Area from "./Area"; import GetItemInfo from "./GetItemInfo"; import MachineAndDriver from "./MachineAndDriver"; import Rahdaran from "./Rahdaran"; import Verify from "./Verify"; -import Area from "./Area"; function TabPanel(props) { const { children, value, index } = props; diff --git a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/index.jsx b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/index.jsx index 8c3ea66..0663c6a 100644 --- a/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/index.jsx +++ b/src/components/dashboard/roadMissions/operator/Actions/Violations/RowActions/MissionCorrection/index.jsx @@ -26,6 +26,8 @@ const MissionCorrection = ({ row, mutate, baseMutate }) => { end_point: result.end_point, driver: result.driver.id, encoded_route: result.area, + item_id: result.item_id, + sub_item_id: result.sub_item_id, }, hasSidebarUpdate: true, }) diff --git a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/ItemSelectField.jsx b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/ItemSelectField.jsx new file mode 100644 index 0000000..f738e6a --- /dev/null +++ b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/ItemSelectField.jsx @@ -0,0 +1,34 @@ +import useRoadItemGetItems from "@/lib/hooks/useRoadItemGetItems"; +import { Controller } from "react-hook-form"; +import SelectBox from "@/core/components/SelectBox"; + +const ItemSelectField = ({ control, setValue }) => { + const { itemsList, loadingItemsList, errorItemsList } = useRoadItemGetItems(); + function getItemName(val) { + return itemsList.find((item) => item.id === val)?.name; + } + + return ( + ( + { + field.onChange(value); + setValue("explanation", getItemName(value)); + setValue("sub_item_id", ""); + }} + /> + )} + /> + ); +}; +export default ItemSelectField; diff --git a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/SubItemSelectField.jsx b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/SubItemSelectField.jsx new file mode 100644 index 0000000..9b05c37 --- /dev/null +++ b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/Form/GetItemInfo/SubItemSelectField.jsx @@ -0,0 +1,37 @@ +import useRoadItemGetSubItems from "@/lib/hooks/useRoadItemGetISubtems"; +import { Controller } from "react-hook-form"; +import SelectBox from "@/core/components/SelectBox"; + +const SubItemSelectField = ({ control, watch, setValue, getValues }) => { + const itemId = watch("item_id"); + const { subItemsList, loadingSubItemsList, errorSubItemsList } = useRoadItemGetSubItems(itemId); + + function createExplanation(val) { + const currentExplanation = getValues("explanation"); + const selectedItem = subItemsList.find((item) => item.id === val)?.name; + return `${currentExplanation}-${selectedItem}`; + } + + return ( + ( + { + field.onChange(val); + setValue("explanation", createExplanation(val)); + }} + /> + )} + /> + ); +}; +export default SubItemSelectField; 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 ce38e38..0edafdf 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 @@ -1,3 +1,4 @@ +import LtrTextField from "@/core/components/LtrTextField"; import PersianTextField from "@/core/components/PersianTextField"; import SelectBox from "@/core/components/SelectBox"; import StyledForm from "@/core/components/StyledForm"; @@ -8,7 +9,8 @@ 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 LtrTextField from "@/core/components/LtrTextField"; +import ItemSelectField from "./ItemSelectField"; +import SubItemSelectField from "./SubItemSelectField"; const validationSchema = object({ explanation: string().required("موضوع را مشخص کنید!"), @@ -24,6 +26,8 @@ const validationSchema = object({ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => { const defaultValues = { + item_id: allData.item_id, + sub_item_id: allData.sub_item_id, explanation: allData.explanation, end_point: allData.end_point, region: allData.region, @@ -31,7 +35,7 @@ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => { road_observed_id: allData.road_observed_id, }; - const { control, handleSubmit } = useForm({ + const { control, handleSubmit, watch, setValue, getValues } = useForm({ defaultValues, resolver: yupResolver(validationSchema), mode: "all", @@ -49,24 +53,14 @@ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => { - + + + ( - - )} + watch={watch} + setValue={setValue} + getValues={getValues} /> @@ -126,7 +120,7 @@ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => { }} /> - + { خودرو - + } {/* راننده diff --git a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/index.jsx b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/index.jsx index 0c7f4d9..c94039d 100644 --- a/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/index.jsx +++ b/src/components/dashboard/roadMissions/operator/RowActions/Add/AddController/Dialog/index.jsx @@ -9,6 +9,8 @@ const DialogAdd = ({ mutate, setOpen, oldBound, rahdaran, machine, row }) => { const requestServer = useRequest({ notificationSuccess: true }); const submitForm = async (result) => { + console.log("result: ", result); + setSubmitting(true); await requestServer(`${REQUEST_MISSION_CONTINUE_MISSION}/${row.original.id}`, "post", { data: { @@ -29,6 +31,8 @@ const DialogAdd = ({ mutate, setOpen, oldBound, rahdaran, machine, row }) => { end_point: result.end_point, category_id: result.category_id, explanation: result.explanation, + item_id: result.item_id, + sub_item_id: result.sub_item_id, ...(result.category_id == 3 ? { road_observed_id: result.road_observed_id, @@ -51,6 +55,8 @@ const DialogAdd = ({ mutate, setOpen, oldBound, rahdaran, machine, row }) => { !r.is_driver), bound_type: "polyline", diff --git a/src/components/dashboard/roadMissions/operator/RowActions/Edit/EditController/index.jsx b/src/components/dashboard/roadMissions/operator/RowActions/Edit/EditController/index.jsx index e838647..93b791c 100644 --- a/src/components/dashboard/roadMissions/operator/RowActions/Edit/EditController/index.jsx +++ b/src/components/dashboard/roadMissions/operator/RowActions/Edit/EditController/index.jsx @@ -51,6 +51,8 @@ const EditController = ({ row, mutate, openEditDialog, setOpenEditDialog }) => { await requestServer(`${UPDATE_REQUEST_MISSION}/${row.original.id}`, "post", { data: { explanation: result.explanation, + item_id: result.item_id, + sub_item_id: result.sub_item_id, category_id: result.category_id, ...(result.category_id == 3 @@ -101,6 +103,8 @@ const EditController = ({ row, mutate, openEditDialog, setOpenEditDialog }) => {