diff --git a/src/app/(withAuth)/(dashboardLayout)/dashboard/inquiry-privacy/assistant/page.js b/src/app/(withAuth)/(dashboardLayout)/dashboard/inquiry-privacy/technical-deputy/page.js
similarity index 70%
rename from src/app/(withAuth)/(dashboardLayout)/dashboard/inquiry-privacy/assistant/page.js
rename to src/app/(withAuth)/(dashboardLayout)/dashboard/inquiry-privacy/technical-deputy/page.js
index c13a78d..ebcc6c3 100644
--- a/src/app/(withAuth)/(dashboardLayout)/dashboard/inquiry-privacy/assistant/page.js
+++ b/src/app/(withAuth)/(dashboardLayout)/dashboard/inquiry-privacy/technical-deputy/page.js
@@ -1,3 +1,4 @@
+import TechnicalDeputy from "@/components/dashboard/inquiryPrivacy/technical-deputy";
import WithPermission from "@/core/middlewares/withPermission";
export const metadata = {
title: "کارتابل معاون",
@@ -5,7 +6,7 @@ export const metadata = {
const Page = () => {
return (
- کارتابل معاون
+
);
};
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/ConfirmRoadSafetyDialog.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/ConfirmRoadSafetyDialog.jsx
new file mode 100644
index 0000000..7b8e90e
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/ConfirmRoadSafetyDialog.jsx
@@ -0,0 +1,48 @@
+import DialogLoading from "@/core/components/DialogLoading";
+import { GET_REQUEST_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT_DETAILS } from "@/core/utils/routes";
+import useRequest from "@/lib/hooks/useRequest";
+import { DialogContent, Typography } from "@mui/material";
+import { useEffect, useState } from "react";
+import ConfirmRoadSafetyFormContext from "./ConfirmRoadSafetyFormContext";
+
+const ConfirmRoadSafetyDialog = ({ row, handleClose, rowId, mutate }) => {
+ const [loading, setLoading] = useState(true);
+ const [data, setData] = useState(null);
+ const request = useRequest();
+
+ useEffect(() => {
+ const fetchData = async () => {
+ try {
+ setLoading(true);
+ const response = await request(`${GET_REQUEST_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT_DETAILS}/${rowId}`);
+ setData(response.data.data);
+ } catch (error) {
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ fetchData();
+ }, [request, rowId]);
+
+ return (
+ <>
+ {loading ? (
+
+ ) : data ? (
+
+ ) : (
+
+ اطلاعات درخواست در سامانه یافت نشد
+
+ )}
+ >
+ );
+};
+export default ConfirmRoadSafetyDialog;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/ConfirmRoadSafetyFormContext.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/ConfirmRoadSafetyFormContext.jsx
new file mode 100644
index 0000000..ac10bf7
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/ConfirmRoadSafetyFormContext.jsx
@@ -0,0 +1,85 @@
+import ApplicantRequestDetail from "@/core/components/ApplicantRequestDetail";
+import { Engineering, ExitToApp, InsertDriveFile, Route } from "@mui/icons-material";
+import { Button, DialogActions, DialogContent, Stack, Tab, Tabs } from "@mui/material";
+import { useState } from "react";
+import PrevCartableOpinion from "./PrevCartableOpinion";
+import Questions from "./Questions";
+import TabPanel from "@/core/components/TabPanel";
+
+const ConfirmRoadSafetyFormContext = ({ row, data, rowId, mutate, handleClose }) => {
+ const [tabState, setTabState] = useState(0);
+
+ const handleChangeTab = (event, newValue) => {
+ setTabState(newValue);
+ };
+
+ const handlePrev = () => {
+ if (tabState === 0) {
+ handleClose();
+ } else {
+ setTabState((t) => t - 1);
+ }
+ };
+
+ return (
+ <>
+
+ } label="اطلاعات طرح متقاضی" />
+ } label="جریان فرایند" />
+ } label="تاییدیه ایمنی راه" />
+
+
+
+
+
+
+ }
+ >
+ {"بستن"}
+
+
+
+
+
+
+
+ {data.histories.map((item, index) => (
+
+ ))}
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+};
+export default ConfirmRoadSafetyFormContext;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/PrevCartableOpinion.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/PrevCartableOpinion.jsx
new file mode 100644
index 0000000..37fe672
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/PrevCartableOpinion.jsx
@@ -0,0 +1,16 @@
+import { Card, CardContent, CircularProgress, Stack, Typography } from "@mui/material";
+
+const PrevCartableOpinion = ({ item }) => {
+
+ return (
+
+
+
+ {item.previous_state_name}: {item.action_name}
+ توضیحات: {item.expert_description}
+
+
+
+ );
+};
+export default PrevCartableOpinion;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/DescriptionForm.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/DescriptionForm.jsx
new file mode 100644
index 0000000..a7099e7
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/DescriptionForm.jsx
@@ -0,0 +1,29 @@
+import { Stack, TextField } from "@mui/material";
+import { Controller } from "react-hook-form";
+
+const DescriptionForm = ({ control }) => {
+ return (
+
+ (
+
+ )}
+ />
+
+ );
+};
+export default DescriptionForm;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/QuestionVerifyNeedRoadForm.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/QuestionVerifyNeedRoadForm.jsx
new file mode 100644
index 0000000..0a9a724
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/QuestionVerifyNeedRoadForm.jsx
@@ -0,0 +1,34 @@
+import {
+ Card,
+ CardContent,
+ Stack,
+ Typography
+} from "@mui/material";
+
+const QuestionVerifyNeedRoadForm = ({ row }) => {
+ return (
+
+
+
+
+ آیا نیاز به راه دسترسی است؟
+
+
+ دفتر حریم راه :
+
+ {row.original.need_road_access == 1 ? "بله" : "خیر"}
+
+
+
+
+
+ );
+};
+export default QuestionVerifyNeedRoadForm;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/QuestionVerifyRoadSafetyForm.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/QuestionVerifyRoadSafetyForm.jsx
new file mode 100644
index 0000000..1775856
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/QuestionVerifyRoadSafetyForm.jsx
@@ -0,0 +1,34 @@
+import {
+ Card,
+ CardContent,
+ Stack,
+ Typography
+} from "@mui/material";
+
+const QuestionVerifyRoadSafetyForm = ({ row }) => {
+ return (
+
+
+
+
+ آیا ایمنی راه این طرح مورد تایید است؟
+
+
+ دفتر حریم راه :
+
+ {row.original.is_possible == 1 ? "بله" : "خیر"}
+
+
+
+
+
+ );
+};
+export default QuestionVerifyRoadSafetyForm;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/Refer/Form.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/Refer/Form.jsx
new file mode 100644
index 0000000..3dfc3ee
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/Refer/Form.jsx
@@ -0,0 +1,78 @@
+import StyledForm from "@/core/components/StyledForm";
+import { REFER_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT } from "@/core/utils/routes";
+import useRequest from "@/lib/hooks/useRequest";
+import { yupResolver } from "@hookform/resolvers/yup";
+import { Button, DialogActions, DialogContent, Stack, TextField } from "@mui/material";
+import { Controller, useForm } from "react-hook-form";
+import { object, string } from "yup";
+
+const validationSchema = object({
+ description: string().required("وارد کردن توضیحات الزامیست!"),
+});
+
+const defaultValues = {
+ description: "",
+};
+
+const ReferForm = ({ rowId, mutate, handleClose, setOpenReferDialog }) => {
+ const requestServer = useRequest({ notificationSuccess: true });
+ const {
+ control,
+ handleSubmit,
+ formState: { isSubmitting },
+ } = useForm({ defaultValues, resolver: yupResolver(validationSchema), mode: "all" });
+
+ const onSubmit = async (data) => {
+ await requestServer(`${REFER_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT}/${rowId}`, "post", {
+ data: {
+ expert_description: data.description,
+ },
+ })
+ .then(() => {
+ handleClose();
+ setOpenReferDialog(false);
+ mutate();
+ })
+ .catch(() => {});
+ };
+
+ return (
+ <>
+
+
+ (
+
+ )}
+ />
+
+
+
+
+
+ >
+ );
+};
+export default ReferForm;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/Refer/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/Refer/index.jsx
new file mode 100644
index 0000000..1fc664c
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/Refer/index.jsx
@@ -0,0 +1,34 @@
+import { Close } from "@mui/icons-material";
+import { Button, Dialog, DialogTitle, IconButton } from "@mui/material"
+import { useState } from "react";
+import ReferForm from "./Form";
+
+const Refer = ({ rowId, mutate, handleClose, isSubmitting }) => {
+ const [openReferDialog, setOpenReferDialog] = useState(false);
+
+ return (
+ <>
+
+
+ >
+ )
+}
+export default Refer
\ No newline at end of file
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/index.jsx
new file mode 100644
index 0000000..c35313e
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/Questions/index.jsx
@@ -0,0 +1,72 @@
+import StyledForm from "@/core/components/StyledForm";
+import { CONFIRM_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT } from "@/core/utils/routes";
+import useRequest from "@/lib/hooks/useRequest";
+import { yupResolver } from "@hookform/resolvers/yup";
+import { Button, DialogActions, DialogContent, Stack } from "@mui/material";
+import { useForm } from "react-hook-form";
+import { object, string } from "yup";
+import QuestionVerifyNeedRoadForm from "./QuestionVerifyNeedRoadForm";
+import QuestionVerifyRoadSafetyForm from "./QuestionVerifyRoadSafetyForm";
+import Refer from "./Refer";
+import DescriptionForm from "./DescriptionForm";
+
+const validationSchema = object({
+ description: string().required("وارد کردن توضیحات الزامیست!"),
+});
+
+const defaultValues = {
+ description: "",
+};
+
+const Questions = ({ row, rowId, mutate, handleClose, handlePrev }) => {
+ const requestServer = useRequest({ notificationSuccess: true });
+
+ const {
+ control,
+ handleSubmit,
+ formState: { isSubmitting },
+ } = useForm({ defaultValues, resolver: yupResolver(validationSchema), mode: "all" });
+
+ const onSubmit = async (data) => {
+ await requestServer(`${CONFIRM_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT}/${rowId}`, "post", {
+ data: {
+ expert_description: data.description,
+ },
+ })
+ .then(() => {
+ handleClose();
+ mutate();
+ })
+ .catch(() => {});
+ };
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+export default Questions;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/index.jsx
new file mode 100644
index 0000000..8104adc
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmRoadSafetyForm/index.jsx
@@ -0,0 +1,51 @@
+import { Close, Engineering } from "@mui/icons-material";
+import { Dialog, IconButton, Stack, Tooltip } from "@mui/material";
+import { useState } from "react";
+import ConfirmRoadSafetyDialog from "./ConfirmRoadSafetyDialog";
+
+const ConfirmRoadSafetyForm = ({ row, rowId, mutate }) => {
+ const [openConfirmRoadSafetyForm, setOpenConfirmRoadSafetyForm] = useState(false);
+
+ const openRoadSafetyDialog = () => {
+ setOpenConfirmRoadSafetyForm(true);
+ };
+
+ const handleClose = () => {
+ setOpenConfirmRoadSafetyForm(false);
+ };
+
+ return (
+
+
+ {
+ openRoadSafetyDialog();
+ }}
+ >
+
+
+
+
+
+ );
+};
+export default ConfirmRoadSafetyForm;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/ConfirmRoadSafetyDialog.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/ConfirmRoadSafetyDialog.jsx
new file mode 100644
index 0000000..8305cf4
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/ConfirmRoadSafetyDialog.jsx
@@ -0,0 +1,49 @@
+import DialogLoading from "@/core/components/DialogLoading";
+import { GET_REQUEST_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT_DETAILS } from "@/core/utils/routes";
+import useRequest from "@/lib/hooks/useRequest";
+import { DialogContent, Typography } from "@mui/material";
+import { useEffect, useState } from "react";
+import ConfirmRoadSafetyFormContext from "./ConfirmRoadSafetyFormContext";
+
+const ConfirmRoadSafetyDialog = ({ row, handleClose, rowId, mutate }) => {
+ const [loading, setLoading] = useState(true);
+ const [data, setData] = useState(null);
+ const request = useRequest();
+
+ useEffect(() => {
+ const fetchData = async () => {
+ try {
+ setLoading(true);
+ const response = await request(`${GET_REQUEST_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT_DETAILS}/${rowId}`);
+ setData(response.data.data);
+ } catch (error) {
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ fetchData();
+ }, [request, rowId]);
+
+ return (
+ <>
+ {loading ? (
+
Loading...
+ ) : //
+ data ? (
+
+ ) : (
+
+ اطلاعات درخواست در سامانه یافت نشد
+
+ )}
+ >
+ );
+};
+export default ConfirmRoadSafetyDialog;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/ConfirmRoadSafetyFormContext.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/ConfirmRoadSafetyFormContext.jsx
new file mode 100644
index 0000000..41e1139
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/ConfirmRoadSafetyFormContext.jsx
@@ -0,0 +1,92 @@
+import ApplicantRequestDetail from "@/core/components/ApplicantRequestDetail";
+import TabPanel from "@/core/components/TabPanel";
+import { ExitToApp, InsertDriveFile, Route, ThumbUp } from "@mui/icons-material";
+import { Button, DialogActions, DialogContent, Stack, Tab, Tabs } from "@mui/material";
+import { useState } from "react";
+import PrevCartableOpinion from "./PrevCartableOpinion";
+import Questions from "./Questions";
+
+
+
+const ConfirmRoadSafetyFormContext = ({ row, data, rowId, mutate, handleClose }) => {
+ const [tabState, setTabState] = useState(0);
+
+ const handleChangeTab = (event, newValue) => {
+ setTabState(newValue);
+ };
+
+ const handlePrev = () => {
+ if (tabState === 0) {
+ handleClose();
+ } else {
+ setTabState((t) => t - 1);
+ }
+ };
+
+ return (
+ <>
+
+ } label="اطلاعات طرح متقاضی" />
+ } label="جریان فرایند" />
+ } label="تاییدیه ضمانت نامه ها" />
+
+
+
+
+
+
+ }
+ >
+ {"بستن"}
+
+
+
+
+
+
+
+ {data.histories.map((item, index) => (
+
+ ))}
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+};
+export default ConfirmRoadSafetyFormContext;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/PrevCartableOpinion.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/PrevCartableOpinion.jsx
new file mode 100644
index 0000000..37fe672
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/PrevCartableOpinion.jsx
@@ -0,0 +1,16 @@
+import { Card, CardContent, CircularProgress, Stack, Typography } from "@mui/material";
+
+const PrevCartableOpinion = ({ item }) => {
+
+ return (
+
+
+
+ {item.previous_state_name}: {item.action_name}
+ توضیحات: {item.expert_description}
+
+
+
+ );
+};
+export default PrevCartableOpinion;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/DescriptionForm.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/DescriptionForm.jsx
new file mode 100644
index 0000000..a7099e7
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/DescriptionForm.jsx
@@ -0,0 +1,29 @@
+import { Stack, TextField } from "@mui/material";
+import { Controller } from "react-hook-form";
+
+const DescriptionForm = ({ control }) => {
+ return (
+
+ (
+
+ )}
+ />
+
+ );
+};
+export default DescriptionForm;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/QuestionVerifyNeedRoadForm.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/QuestionVerifyNeedRoadForm.jsx
new file mode 100644
index 0000000..a39fdec
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/QuestionVerifyNeedRoadForm.jsx
@@ -0,0 +1,34 @@
+import {
+ Card,
+ CardContent,
+ Stack,
+ Typography
+} from "@mui/material";
+
+const QuestionVerifyNeedRoadForm = () => {
+ return (
+
+
+
+
+ آیا ضمانت نامه ها مورد تایید است؟
+
+
+ دفتر حریم راه :
+
+ بله
+
+
+
+
+
+ );
+};
+export default QuestionVerifyNeedRoadForm;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/QuestionVerifyRoadSafetyForm.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/QuestionVerifyRoadSafetyForm.jsx
new file mode 100644
index 0000000..edd3232
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/QuestionVerifyRoadSafetyForm.jsx
@@ -0,0 +1,34 @@
+import {
+ Card,
+ CardContent,
+ Stack,
+ Typography
+} from "@mui/material";
+
+const QuestionVerifyRoadSafetyForm = ({ row }) => {
+ return (
+
+
+
+
+ آیا ایمنی راه این طرح مورد تایید است؟
+
+
+ دفتر حریم راه :
+
+ {row.original.isSafety ? "بله" : "خیر"}
+
+
+
+
+
+ );
+};
+export default QuestionVerifyRoadSafetyForm;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/Refer/Form.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/Refer/Form.jsx
new file mode 100644
index 0000000..cf2095e
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/Refer/Form.jsx
@@ -0,0 +1,70 @@
+import { REFER_VERIFY_NEADROAD_ROAD_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT } from "@/core/utils/routes";
+import useRequest from "@/lib/hooks/useRequest";
+import { yupResolver } from "@hookform/resolvers/yup";
+import { Button, DialogActions, DialogContent, Stack, TextField } from "@mui/material";
+import { Controller, useForm } from "react-hook-form";
+import { object, string } from "yup";
+const validationSchema = object({
+ description: string().required("وارد کردن توضیحات الزامیست!"),
+});
+
+const defaultValues = {
+ description: "",
+};
+
+const ReferForm = ({ rowId, mutate, handleClose, setOpenReferDialog }) => {
+ const requestServer = useRequest({ notificationSuccess: true });
+ const {
+ control,
+ handleSubmit,
+ formState: { isSubmitting },
+ } = useForm({ defaultValues, resolver: yupResolver(validationSchema), mode: "all" });
+
+ const onSubmit = async (data) => {
+ await requestServer(`${REFER_VERIFY_NEADROAD_ROAD_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT}/${rowId}`, "post", {
+ data: {
+ expert_description: data.description
+ },
+ })
+ .then(() => {
+ handleClose();
+ setOpenReferDialog(false)
+ mutate();
+ })
+ .catch(() => { });
+ };
+
+ return (
+ <>
+
+
+ (
+
+ )}
+ />
+
+
+
+
+
+ >
+ )
+}
+export default ReferForm
\ No newline at end of file
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/Refer/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/Refer/index.jsx
new file mode 100644
index 0000000..1fc664c
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/Refer/index.jsx
@@ -0,0 +1,34 @@
+import { Close } from "@mui/icons-material";
+import { Button, Dialog, DialogTitle, IconButton } from "@mui/material"
+import { useState } from "react";
+import ReferForm from "./Form";
+
+const Refer = ({ rowId, mutate, handleClose, isSubmitting }) => {
+ const [openReferDialog, setOpenReferDialog] = useState(false);
+
+ return (
+ <>
+
+
+ >
+ )
+}
+export default Refer
\ No newline at end of file
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/index.jsx
new file mode 100644
index 0000000..b8b016b
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/Questions/index.jsx
@@ -0,0 +1,65 @@
+import StyledForm from "@/core/components/StyledForm";
+import { CONFIRM_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT, CONFIRM_VERIFY_NEADROAD_ROAD_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT } from "@/core/utils/routes";
+import useRequest from "@/lib/hooks/useRequest";
+import { yupResolver } from "@hookform/resolvers/yup";
+import { Button, DialogActions, DialogContent, Stack } from "@mui/material";
+import { useForm } from "react-hook-form";
+import { object, string } from "yup";
+import QuestionVerifyNeedRoadForm from "./QuestionVerifyNeedRoadForm";
+import QuestionVerifyRoadSafetyForm from "./QuestionVerifyRoadSafetyForm";
+import Refer from "./Refer";
+import DescriptionForm from "./DescriptionForm";
+
+const validationSchema = object({
+ description: string().required("وارد کردن توضیحات الزامیست!"),
+});
+
+const defaultValues = {
+ description: "",
+};
+
+const Questions = ({ row, rowId, mutate, handleClose, handlePrev }) => {
+ const requestServer = useRequest({ notificationSuccess: true });
+
+ const {
+ control,
+ handleSubmit,
+ formState: { isSubmitting },
+ } = useForm({ defaultValues, resolver: yupResolver(validationSchema), mode: "all" });
+
+ const onSubmit = async (data) => {
+ await requestServer(`${CONFIRM_VERIFY_NEADROAD_ROAD_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT}/${rowId}`, "post", {
+ data: {
+ expert_description: data.description
+ },
+ })
+ .then(() => {
+ handleClose();
+ mutate();
+ })
+ .catch(() => { });
+ };
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
+export default Questions
\ No newline at end of file
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/index.jsx
new file mode 100644
index 0000000..d1548ed
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyLicenseForm/index.jsx
@@ -0,0 +1,51 @@
+import { Close, ThumbUp } from "@mui/icons-material";
+import { Dialog, IconButton, Stack, Tooltip } from "@mui/material";
+import { useState } from "react";
+import ConfirmRoadSafetyDialog from "./ConfirmRoadSafetyDialog";
+
+const ConfirmVerifyLicenseForm = ({ row, rowId, mutate }) => {
+ const [openConfirmVerifyLicenseForm, setOpenConfirmVerifyLicenseForm] = useState(false);
+
+ const openConfirmVerifyLicenseFormDialog = () => {
+ setOpenConfirmVerifyLicenseForm(true);
+ };
+
+ const handleClose = () => {
+ setOpenConfirmVerifyLicenseForm(false);
+ };
+
+ return (
+
+
+ {
+ openConfirmVerifyLicenseFormDialog();
+ }}
+ >
+
+
+
+
+
+ );
+};
+export default ConfirmVerifyLicenseForm;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/ConfirmRoadSafetyDialog.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/ConfirmRoadSafetyDialog.jsx
new file mode 100644
index 0000000..f3a693a
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/ConfirmRoadSafetyDialog.jsx
@@ -0,0 +1,43 @@
+import DialogLoading from "@/core/components/DialogLoading";
+import { GET_REQUEST_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT_DETAILS } from "@/core/utils/routes";
+import useRequest from "@/lib/hooks/useRequest";
+import { DialogContent, Typography } from "@mui/material";
+import { useEffect, useState } from "react";
+import ConfirmRoadSafetyFormContext from "./ConfirmRoadSafetyFormContext";
+
+const ConfirmRoadSafetyDialog = ({ row, handleClose, rowId, mutate }) => {
+ const [loading, setLoading] = useState(true);
+ const [data, setData] = useState(null);
+ const request = useRequest();
+
+ useEffect(() => {
+ const fetchData = async () => {
+ try {
+ setLoading(true);
+ const response = await request(`${GET_REQUEST_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT_DETAILS}/${rowId}`);
+ setData(response.data.data);
+ } catch (error) {
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ fetchData();
+ }, [rowId]);
+
+ return (
+ <>
+ {loading ? (
+
+ ) : data ? (
+
+ ) : (
+
+ اطلاعات درخواست در سامانه یافت نشد
+
+ )}
+ >
+ );
+
+}
+export default ConfirmRoadSafetyDialog
\ No newline at end of file
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/ConfirmRoadSafetyFormContext.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/ConfirmRoadSafetyFormContext.jsx
new file mode 100644
index 0000000..7b1fd02
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/ConfirmRoadSafetyFormContext.jsx
@@ -0,0 +1,92 @@
+import ApplicantRequestDetail from "@/core/components/ApplicantRequestDetail";
+import TabPanel from "@/core/components/TabPanel";
+import { DoneAll, ExitToApp, InsertDriveFile, Route } from "@mui/icons-material";
+import { Button, DialogActions, DialogContent, Stack, Tab, Tabs } from "@mui/material";
+import { useState } from "react";
+import PrevCartableOpinion from "./PrevCartableOpinion";
+import Questions from "./Questions";
+
+
+
+const ConfirmRoadSafetyFormContext = ({ row, data, rowId, mutate, handleClose }) => {
+ const [tabState, setTabState] = useState(0);
+
+ const handleChangeTab = (event, newValue) => {
+ setTabState(newValue);
+ };
+
+ const handlePrev = () => {
+ if (tabState === 0) {
+ handleClose();
+ } else {
+ setTabState((t) => t - 1);
+ }
+ };
+
+ return (
+ <>
+
+ } label="اطلاعات طرح متقاضی" />
+ } label="جریان فرایند" />
+ } label="تاییدیه دسترسی راه" />
+
+
+
+
+
+
+ }
+ >
+ {"بستن"}
+
+
+
+
+
+
+
+ {data.histories.map((item, index) => (
+
+ ))}
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+};
+export default ConfirmRoadSafetyFormContext;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/PrevCartableOpinion.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/PrevCartableOpinion.jsx
new file mode 100644
index 0000000..37fe672
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/PrevCartableOpinion.jsx
@@ -0,0 +1,16 @@
+import { Card, CardContent, CircularProgress, Stack, Typography } from "@mui/material";
+
+const PrevCartableOpinion = ({ item }) => {
+
+ return (
+
+
+
+ {item.previous_state_name}: {item.action_name}
+ توضیحات: {item.expert_description}
+
+
+
+ );
+};
+export default PrevCartableOpinion;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/DescriptionForm.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/DescriptionForm.jsx
new file mode 100644
index 0000000..a7099e7
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/DescriptionForm.jsx
@@ -0,0 +1,29 @@
+import { Stack, TextField } from "@mui/material";
+import { Controller } from "react-hook-form";
+
+const DescriptionForm = ({ control }) => {
+ return (
+
+ (
+
+ )}
+ />
+
+ );
+};
+export default DescriptionForm;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/QuestionVerifyNeedRoadForm.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/QuestionVerifyNeedRoadForm.jsx
new file mode 100644
index 0000000..558d200
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/QuestionVerifyNeedRoadForm.jsx
@@ -0,0 +1,34 @@
+import {
+ Card,
+ CardContent,
+ Stack,
+ Typography
+} from "@mui/material";
+
+const QuestionVerifyNeedRoadForm = ({ row }) => {
+ return (
+
+
+
+
+ آیا دسترسی به راه مورد تایید است؟
+
+
+ دفتر حریم راه :
+
+ {row.original.is_file_good == 1 ? "بله" : "خیر"}
+
+
+
+
+
+ );
+};
+export default QuestionVerifyNeedRoadForm;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/Refer/Form.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/Refer/Form.jsx
new file mode 100644
index 0000000..cf2095e
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/Refer/Form.jsx
@@ -0,0 +1,70 @@
+import { REFER_VERIFY_NEADROAD_ROAD_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT } from "@/core/utils/routes";
+import useRequest from "@/lib/hooks/useRequest";
+import { yupResolver } from "@hookform/resolvers/yup";
+import { Button, DialogActions, DialogContent, Stack, TextField } from "@mui/material";
+import { Controller, useForm } from "react-hook-form";
+import { object, string } from "yup";
+const validationSchema = object({
+ description: string().required("وارد کردن توضیحات الزامیست!"),
+});
+
+const defaultValues = {
+ description: "",
+};
+
+const ReferForm = ({ rowId, mutate, handleClose, setOpenReferDialog }) => {
+ const requestServer = useRequest({ notificationSuccess: true });
+ const {
+ control,
+ handleSubmit,
+ formState: { isSubmitting },
+ } = useForm({ defaultValues, resolver: yupResolver(validationSchema), mode: "all" });
+
+ const onSubmit = async (data) => {
+ await requestServer(`${REFER_VERIFY_NEADROAD_ROAD_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT}/${rowId}`, "post", {
+ data: {
+ expert_description: data.description
+ },
+ })
+ .then(() => {
+ handleClose();
+ setOpenReferDialog(false)
+ mutate();
+ })
+ .catch(() => { });
+ };
+
+ return (
+ <>
+
+
+ (
+
+ )}
+ />
+
+
+
+
+
+ >
+ )
+}
+export default ReferForm
\ No newline at end of file
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/Refer/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/Refer/index.jsx
new file mode 100644
index 0000000..1fc664c
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/Refer/index.jsx
@@ -0,0 +1,34 @@
+import { Close } from "@mui/icons-material";
+import { Button, Dialog, DialogTitle, IconButton } from "@mui/material"
+import { useState } from "react";
+import ReferForm from "./Form";
+
+const Refer = ({ rowId, mutate, handleClose, isSubmitting }) => {
+ const [openReferDialog, setOpenReferDialog] = useState(false);
+
+ return (
+ <>
+
+
+ >
+ )
+}
+export default Refer
\ No newline at end of file
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/index.jsx
new file mode 100644
index 0000000..a52b00c
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/Questions/index.jsx
@@ -0,0 +1,64 @@
+import StyledForm from "@/core/components/StyledForm";
+import { CONFIRM_VERIFY_NEADROAD_ROAD_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT } from "@/core/utils/routes";
+import useRequest from "@/lib/hooks/useRequest";
+import { yupResolver } from "@hookform/resolvers/yup";
+import { Button, DialogActions, DialogContent, Stack } from "@mui/material";
+import { useForm } from "react-hook-form";
+import { object, string } from "yup";
+import QuestionVerifyNeedRoadForm from "./QuestionVerifyNeedRoadForm";
+import Refer from "./Refer";
+import DescriptionForm from "./DescriptionForm";
+
+const validationSchema = object({
+ description: string().required("وارد کردن توضیحات الزامیست!"),
+});
+
+const defaultValues = {
+ description: "",
+};
+
+const Questions = ({ row, rowId, mutate, handleClose, handlePrev }) => {
+ const requestServer = useRequest({ notificationSuccess: true });
+
+ const {
+ control,
+ handleSubmit,
+ formState: { isSubmitting },
+ } = useForm({ defaultValues, resolver: yupResolver(validationSchema), mode: "all" });
+
+ const onSubmit = async (data) => {
+ await requestServer(`${CONFIRM_VERIFY_NEADROAD_ROAD_INQUIRY_PRIVACY_ZAMIN_GOV_ASSISTANT}/${rowId}`, "post", {
+ data: {
+ expert_description: data.description
+ },
+ })
+ .then(() => {
+ handleClose();
+ mutate();
+ })
+ .catch(() => { });
+ };
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
+export default Questions
\ No newline at end of file
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/index.jsx
new file mode 100644
index 0000000..213d593
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/ConfirmVerifyRoadSafetyForm/index.jsx
@@ -0,0 +1,51 @@
+import { Close, DoneAll } from "@mui/icons-material";
+import { Dialog, IconButton, Stack, Tooltip } from "@mui/material";
+import { useState } from "react";
+import ConfirmRoadSafetyDialog from "./ConfirmRoadSafetyDialog";
+
+const ConfirmVerifyRoadSafetyForm = ({ row, rowId, mutate }) => {
+ const [openConfirmVerifyRoadSafetyForm, setOpenConfirmVerifyRoadSafetyForm] = useState(false);
+
+ const openConfirmVerifyRoadSafetyDialog = () => {
+ setOpenConfirmVerifyRoadSafetyForm(true);
+ };
+
+ const handleClose = () => {
+ setOpenConfirmVerifyRoadSafetyForm(false);
+ };
+
+ return (
+
+
+ {
+ openConfirmVerifyRoadSafetyDialog();
+ }}
+ >
+
+
+
+
+
+ );
+};
+export default ConfirmVerifyRoadSafetyForm;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/index.jsx
new file mode 100644
index 0000000..58261f4
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/RowActions/index.jsx
@@ -0,0 +1,22 @@
+import { Box } from "@mui/material";
+import ConfirmRoadSafetyForm from "./ConfirmRoadSafetyForm";
+import ConfirmVerifyRoadSafetyForm from "./ConfirmVerifyRoadSafetyForm";
+import ConfirmVerifyLicenseForm from "./ConfirmVerifyLicenseForm";
+
+const RowActions = ({ row, mutate }) => {
+ return (
+ <>>
+ //
+ // {row.original.state_id == 3 && (
+ //
+ // )}
+ // {row.original.state_id == 6 && (
+ //
+ // )}
+ // {row.original.state_id == 14 && (
+ //
+ // )}
+ //
+ );
+};
+export default RowActions;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/ShowPrimaryArea/ShowBound.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/ShowPrimaryArea/ShowBound.jsx
new file mode 100644
index 0000000..24db476
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/ShowPrimaryArea/ShowBound.jsx
@@ -0,0 +1,29 @@
+import { useEffect, useRef } from "react";
+import { FeatureGroup, useMap } from "react-leaflet";
+
+const ShowBound = ({ bound }) => {
+ const map = useMap();
+ const featureRef = useRef(null);
+
+ const safeFitBounds = (layer) => {
+ if (!layer || !map) return;
+ try {
+ const latLngs = layer.getLatLngs();
+ map.fitBounds(latLngs, {
+ paddingTopLeft: [20, 20],
+ paddingBottomRight: [20, 20],
+ });
+ } catch (e) {
+ console.warn("fitBounds failed:", e);
+ }
+ };
+
+ useEffect(() => {
+ bound?.editing?.disable();
+ featureRef.current.addLayer(bound);
+ safeFitBounds(bound);
+ }, []);
+
+ return ;
+};
+export default ShowBound;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/ShowPrimaryArea/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/ShowPrimaryArea/index.jsx
new file mode 100644
index 0000000..e4714de
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/ShowPrimaryArea/index.jsx
@@ -0,0 +1,60 @@
+const { IconButton, Tooltip, Box, Dialog, DialogTitle, Typography, DialogContent } = require("@mui/material");
+import MapLayer from "@/core/components/MapLayer";
+import CloseIcon from "@mui/icons-material/Close";
+import LayersIcon from "@mui/icons-material/Layers";
+import { useMemo, useState } from "react";
+import ShowBound from "./ShowBound";
+import L from "leaflet";
+
+const ShowPrimaryArea = ({ primaryArea }) => {
+ const [openShowAreaDialog, setOpenShowAreaDialog] = useState(false);
+ const bound = useMemo(() => {
+ const latLngCoords = primaryArea.coordinates.map((coord) => [coord[1], coord[0]]);
+ return primaryArea.type === "polygon" ? L.polygon(latLngCoords) : L.polyline(latLngCoords);
+ }, [primaryArea]);
+
+ return (
+
+
+ setOpenShowAreaDialog(true)}>
+
+
+
+
+
+ );
+};
+
+export default ShowPrimaryArea;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/TechnicalDeputyList.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/TechnicalDeputyList.jsx
new file mode 100644
index 0000000..bb3ec27
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/TechnicalDeputyList.jsx
@@ -0,0 +1,190 @@
+"use client";
+
+import DataTableWithAuth from "@/core/components/DataTableWithAuth";
+import { GET_INQUIRY_PRIVACY_TABLE_LIST } from "@/core/utils/routes";
+import { Box, Stack } from "@mui/material";
+import moment from "jalali-moment";
+import { useMemo } from "react";
+import RowActions from "./RowActions";
+import ShowPrimaryArea from "./ShowPrimaryArea";
+
+const TechnicalDeputyList = () => {
+ const columns = useMemo(
+ () => [
+ {
+ accessorKey: "id",
+ header: "کد یکتا",
+ id: "id",
+ enableColumnFilter: false,
+ datatype: "text",
+ filterMode: "notEquals",
+ size: 100,
+ },
+ {
+ accessorKey: "panjare_vahed_id",
+ header: "کدرهگیری پنجره واحد",
+ id: "panjare_vahed_id",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ sortDescFirst: false,
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 150,
+ },
+ {
+ accessorKey: "national_id",
+ header: "کد ملی",
+ id: "national_id",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ sortDescFirst: false,
+ columnFilterModeOptions: ["equals", "contains"],
+ size: 120,
+ },
+ {
+ accessorKey: "phone_number",
+ header: "تلفن",
+ id: "phone_number",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ size: 120,
+ },
+ {
+ accessorKey: "state_name",
+ header: "وضعیت درخواست",
+ id: "state_name",
+ enableColumnFilter: false,
+ datatype: "text",
+ filterMode: "equals",
+ },
+ {
+ accessorKey: "payment_amount",
+ header: "مبلغ پرداختی",
+ id: "payment_amount",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "between",
+ Cell: ({ row }) => <>{row.original.payment_amount || "-"}>,
+ },
+ {
+ accessorKey: "requested_organization",
+ header: "دستگاه صادر کننده",
+ id: "requested_organization",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ sortDescFirst: false,
+ columnFilterModeOptions: ["equals", "contains"],
+ },
+ {
+ accessorKey: "province_name",
+ header: "استان",
+ id: "province_name",
+ enableColumnFilter: false,
+ datatype: "text",
+ filterMode: "equals",
+ },
+ {
+ accessorKey: "city_name",
+ header: "شهر",
+ id: "city_name",
+ enableColumnFilter: false,
+ datatype: "text",
+ filterMode: "equals",
+ },
+ {
+ accessorKey: "plan_group",
+ header: "گروه طرح",
+ id: "plan_group",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ sortDescFirst: false,
+ columnFilterModeOptions: ["equals", "contains"],
+ },
+ {
+ accessorKey: "plan_title",
+ header: "عنوان طرح",
+ id: "plan_title",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ sortDescFirst: false,
+ columnFilterModeOptions: ["equals", "contains"],
+ },
+ {
+ accessorKey: "primary_area",
+ header: "نمایش محدوده طرح",
+ id: "primary_area",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ sortDescFirst: false,
+ columnFilterModeOptions: ["equals", "contains"],
+ grow: false,
+ size: 100,
+ Cell: ({ row }) =>
+ row.original.primary_area ? (
+
+
+
+ ) : (
+ "-"
+ ),
+ },
+ {
+ accessorKey: "worksheet_id",
+ header: "شناسه کاربرگ",
+ id: "worksheet_id",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ sortDescFirst: false,
+ columnFilterModeOptions: ["equals", "contains"],
+ },
+ {
+ accessorKey: "isic",
+ header: "کد آیسیک",
+ id: "isic",
+ enableColumnFilter: true,
+ datatype: "text",
+ filterMode: "equals",
+ sortDescFirst: false,
+ columnFilterModeOptions: ["equals", "contains"],
+ },
+ {
+ accessorFn: (row) => moment(row.request_date).locale("fa").format("YYYY/MM/DD"),
+ header: "تاریخ درخواست",
+ id: "request_date",
+ enableColumnFilter: true,
+ datatype: "date",
+ filterMode: "between",
+ grow: false,
+ size: 120,
+ },
+ ],
+ []
+ );
+
+ return (
+ <>
+
+
+
+ >
+ );
+};
+export default TechnicalDeputyList;
diff --git a/src/components/dashboard/inquiryPrivacy/technical-deputy/index.jsx b/src/components/dashboard/inquiryPrivacy/technical-deputy/index.jsx
new file mode 100644
index 0000000..2b9a26a
--- /dev/null
+++ b/src/components/dashboard/inquiryPrivacy/technical-deputy/index.jsx
@@ -0,0 +1,15 @@
+"use client";
+
+import PageTitle from "@/core/components/PageTitle";
+import { Stack } from "@mui/material";
+import TechnicalDeputyList from "./TechnicalDeputyList";
+
+const TechnicalDeputy = () => {
+ return (
+
+
+
+
+ );
+};
+export default TechnicalDeputy;
diff --git a/src/core/components/TabPanel.jsx b/src/core/components/TabPanel.jsx
new file mode 100644
index 0000000..529fad0
--- /dev/null
+++ b/src/core/components/TabPanel.jsx
@@ -0,0 +1,11 @@
+import { Box } from "@mui/material";
+
+const TabPanel = (props) => {
+ const { children, value, index } = props;
+ return (
+
+ {value === index && {children}}
+
+ );
+};
+export default TabPanel;
diff --git a/src/core/utils/pageMenuDev.js b/src/core/utils/pageMenuDev.js
index 23c42d7..7a68cb6 100644
--- a/src/core/utils/pageMenuDev.js
+++ b/src/core/utils/pageMenuDev.js
@@ -318,7 +318,7 @@ export const pageMenuDev = [
id: "assistant",
label: "کارتابل معاون",
type: "page",
- route: "/dashboard/inquiry-privacy/assistant",
+ route: "/dashboard/inquiry-privacy/technical-deputy",
icon: ,
permissions: ["all"],
},
diff --git a/src/core/utils/routes.js b/src/core/utils/routes.js
index b2bb76d..e9e7119 100644
--- a/src/core/utils/routes.js
+++ b/src/core/utils/routes.js
@@ -241,3 +241,4 @@ export const GET_INQUIRY_PRIVACY_STATE_LIST = api + "/api/v3/harim/detail/states
export const CITY_ADMIN_FEEDBACK = api + "/api/v3/harim/province_office/feedback";
export const GET_PRIVACY_ADMIN_LIST = api + "/api/v3/harim/harim_office";
export const PRIVACY_ADMIN_ACTION_API = api + "/api/v3/harim/harim_office";
+export const GET_INQUIRY_PRIVACY_TABLE_LIST = api + "/api/v3/harim/technical_deputy";