diff --git a/src/app/(withAuth)/dashboard/test/page.js b/src/app/(withAuth)/dashboard/azmayesh/page.js
similarity index 55%
rename from src/app/(withAuth)/dashboard/test/page.js
rename to src/app/(withAuth)/dashboard/azmayesh/page.js
index 7baafa7..eca1b9d 100644
--- a/src/app/(withAuth)/dashboard/test/page.js
+++ b/src/app/(withAuth)/dashboard/azmayesh/page.js
@@ -1,4 +1,4 @@
-import TestPage from "@/components/dashboard/test";
+import TestPage from "@/components/dashboard/azmayesh";
const Page = () => {
return ;
diff --git a/src/components/dashboard/test/Actions/create/CreateDialog/TestGeneralInfo.jsx b/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/AzmayeshGeneralInfo.jsx
similarity index 97%
rename from src/components/dashboard/test/Actions/create/CreateDialog/TestGeneralInfo.jsx
rename to src/components/dashboard/azmayesh/Actions/Create/CreateDialog/AzmayeshGeneralInfo.jsx
index d424a1a..f8e9345 100644
--- a/src/components/dashboard/test/Actions/create/CreateDialog/TestGeneralInfo.jsx
+++ b/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/AzmayeshGeneralInfo.jsx
@@ -14,7 +14,7 @@ import {
TextField,
Typography
} from "@mui/material";
-import useTest from "@/lib/hooks/useTest";
+import useAzmayesh from "@/lib/hooks/useAzmayesh";
import useProvinces from "@/lib/hooks/useProvince";
import {LocalizationProvider, MobileDatePicker} from "@mui/x-date-pickers";
import {AdapterDateFnsJalali} from "@mui/x-date-pickers/AdapterDateFnsJalali";
@@ -22,8 +22,8 @@ import {faIR} from "@mui/x-date-pickers/locales";
import ClearIcon from "@mui/icons-material/Clear";
import React from "react";
-const TestGeneralInfo = ({control, register, setValue, errors}) => {
- const {tests, errorTests, loadingTests} = useTest();
+const AzmayeshGeneralInfo = ({control, register, setValue, errors}) => {
+ const {azmayeshes, errorAzmayeshes, loadingAzmayeshes} = useAzmayesh();
const {provinces, errorProvinces, loadingProvinces} = useProvinces();
return (
@@ -37,12 +37,12 @@ const TestGeneralInfo = ({control, register, setValue, errors}) => {
- {errorTests ? (
+ {errorAzmayeshes ? (
خطایی در دریافت لیست آزمایش ها رخ داده است!
- ) : loadingTests ? (
+ ) : loadingAzmayeshes ? (
درحال دریافت لیست آزمایش ها
@@ -51,10 +51,10 @@ const TestGeneralInfo = ({control, register, setValue, errors}) => {
test.id === value) || null}
+ value={azmayeshes.find((azmayesh) => azmayesh.id === value) || null}
disablePortal
- options={tests}
- getOptionLabel={(test) => test.name}
+ options={azmayeshes}
+ getOptionLabel={(azmayesh) => azmayesh.name}
isOptionEqualToValue={(option, value) => option.id === value?.id}
onChange={(event, newValue) => {
onChange(newValue ? newValue.id : "");
@@ -384,4 +384,4 @@ const TestGeneralInfo = ({control, register, setValue, errors}) => {
);
};
-export default TestGeneralInfo;
\ No newline at end of file
+export default AzmayeshGeneralInfo;
\ No newline at end of file
diff --git a/src/components/dashboard/test/Actions/create/CreateDialog/ChooseLocation.jsx b/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/ChooseLocation.jsx
similarity index 84%
rename from src/components/dashboard/test/Actions/create/CreateDialog/ChooseLocation.jsx
rename to src/components/dashboard/azmayesh/Actions/Create/CreateDialog/ChooseLocation.jsx
index 433543e..724de0f 100644
--- a/src/components/dashboard/test/Actions/create/CreateDialog/ChooseLocation.jsx
+++ b/src/components/dashboard/azmayesh/Actions/Create/CreateDialog/ChooseLocation.jsx
@@ -3,8 +3,8 @@
import {Marker, useMapEvents} from "react-leaflet";
import {useEffect, useRef} from "react";
import L from "leaflet";
-import TestIcon from "@/assets/images/examine_marker.png";
-import TestActiveIcon from "@/assets/images/examine_marker_active.png";
+import AzmayeshIcon from "@/assets/images/examine_marker.png";
+import AzmayeshActiveIcon from "@/assets/images/examine_marker_active.png";
import {
Box,
Button,
@@ -25,7 +25,7 @@ const ChooseLocation = ({mapBoxData, setMapBoxData}) => {
const theme = useTheme();
const isMobile = useMediaQuery(theme.breakpoints.down("sm"));
- const mapTestMarker = useRef();
+ const mapAzmayeshMarker = useRef();
const defaultIconSize = [35, 35];
const createCustomIcon = (size, iconUrl) => {
return L.icon({
@@ -39,37 +39,40 @@ const ChooseLocation = ({mapBoxData, setMapBoxData}) => {
const map = useMapEvents({
move(e) {
if (!mapBoxData) {
- mapTestMarker.current.setLatLng(e.target.getCenter());
+ mapAzmayeshMarker.current.setLatLng(e.target.getCenter());
}
},
movestart() {
if (!mapBoxData) {
- mapTestMarker.current.setIcon(createCustomIcon([45, 45], TestIcon.src));
+ mapAzmayeshMarker.current.setIcon(createCustomIcon([45, 45], AzmayeshIcon.src));
}
},
moveend() {
if (!mapBoxData) {
- mapTestMarker.current.setIcon(createCustomIcon(defaultIconSize, TestIcon.src));
+ mapAzmayeshMarker.current.setIcon(createCustomIcon(defaultIconSize, AzmayeshIcon.src));
}
}
});
useEffect(() => {
- if (mapTestMarker.current) {
+ if (mapAzmayeshMarker.current) {
const newIcon = mapBoxData
- ? createCustomIcon([45, 45], TestActiveIcon.src)
- : createCustomIcon(defaultIconSize, TestIcon.src);
- mapTestMarker.current.setIcon(newIcon);
+ ? createCustomIcon([45, 45], AzmayeshActiveIcon.src)
+ : createCustomIcon(defaultIconSize, AzmayeshIcon.src);
+ mapAzmayeshMarker.current.setIcon(newIcon);
}
if (mapBoxData) {
- mapTestMarker.current.setLatLng(mapBoxData);
+ mapAzmayeshMarker.current.setLatLng(mapBoxData);
map.flyTo(mapBoxData, 14);
}
}, [mapBoxData]);
const handleMarkerClick = () => {
if (!mapBoxData) {
- setMapBoxData({lat: mapTestMarker.current.getLatLng().lat, lng: mapTestMarker.current.getLatLng().lng});
+ setMapBoxData({
+ lat: mapAzmayeshMarker.current.getLatLng().lat,
+ lng: mapAzmayeshMarker.current.getLatLng().lng
+ });
}
};
@@ -81,9 +84,9 @@ const ChooseLocation = ({mapBoxData, setMapBoxData}) => {
<>
{
+const CreateDialog = ({open, setOpen, mutate}) => {
const theme = useTheme();
const isMobile = useMediaQuery(theme.breakpoints.down("sm"));
const [tabState, setTabState] = useState(0);
@@ -99,7 +99,6 @@ const CreateDialog = ({open, setOpen}) => {
} = useForm({defaultValues, resolver: yupResolver(validationSchema), mode: "onBlur"});
const onSubmit = async (data) => {
- console.log("data", data);
const formData = new FormData();
formData.append("lat", mapBoxData.lat);
formData.append("lng", mapBoxData.lng);
@@ -117,14 +116,11 @@ const CreateDialog = ({open, setOpen}) => {
formData.append("request_date", moment(data.request_date).format("YYYY-MM-DD"));
formData.append("report_date", moment(data.report_date).format("YYYY-MM-DD"));
- for (var pair of formData.entries()) {
- console.log(pair[0] + ', ' + pair[1]);
- }
-
- requestServer(POST_TEST, "post", {
+ requestServer(POST_AZMAYESH, "post", {
data: formData,
})
.then(() => {
+ mutate();
handleClose();
})
.catch(() => {
@@ -151,7 +147,8 @@ const CreateDialog = ({open, setOpen}) => {
-
+
{!isMobile && (
diff --git a/src/components/dashboard/test/Actions/create/index.jsx b/src/components/dashboard/azmayesh/Actions/Create/index.jsx
similarity index 91%
rename from src/components/dashboard/test/Actions/create/index.jsx
rename to src/components/dashboard/azmayesh/Actions/Create/index.jsx
index 9d59d00..1dae100 100644
--- a/src/components/dashboard/test/Actions/create/index.jsx
+++ b/src/components/dashboard/azmayesh/Actions/Create/index.jsx
@@ -6,7 +6,7 @@ import {useState} from "react";
import {AddCircle} from "@mui/icons-material";
import CreateDialog from "./CreateDialog";
-const TestCreate = () => {
+const AzmayeshCreate = ({mutate}) => {
const theme = useTheme();
const isMobile = useMediaQuery(theme.breakpoints.down("sm"));
const [open, setOpen] = useState(false);
@@ -26,8 +26,8 @@ const TestCreate = () => {
ثبت آزمایش
)}
- {open && }
+ {open && }
>
);
};
-export default TestCreate;
+export default AzmayeshCreate;
diff --git a/src/components/dashboard/test/TestList.jsx b/src/components/dashboard/azmayesh/AzmayeshList.jsx
similarity index 98%
rename from src/components/dashboard/test/TestList.jsx
rename to src/components/dashboard/azmayesh/AzmayeshList.jsx
index 2c735f4..8fd735f 100644
--- a/src/components/dashboard/test/TestList.jsx
+++ b/src/components/dashboard/azmayesh/AzmayeshList.jsx
@@ -8,7 +8,7 @@ import {GET_AZMAYESH_LIST} from "@/core/utils/routes";
import moment from "jalali-moment";
import ShowLocation from "./ShowLocation";
-const TestList = () => {
+const AzmayeshList = () => {
const columns = useMemo(
() => [
{
@@ -132,4 +132,4 @@ const TestList = () => {
>
);
};
-export default TestList;
+export default AzmayeshList;
diff --git a/src/components/dashboard/test/ShowLocation/ShowLocationMarker.jsx b/src/components/dashboard/azmayesh/ShowLocation/ShowLocationMarker.jsx
similarity index 93%
rename from src/components/dashboard/test/ShowLocation/ShowLocationMarker.jsx
rename to src/components/dashboard/azmayesh/ShowLocation/ShowLocationMarker.jsx
index 6b65250..ea9ed7b 100644
--- a/src/components/dashboard/test/ShowLocation/ShowLocationMarker.jsx
+++ b/src/components/dashboard/azmayesh/ShowLocation/ShowLocationMarker.jsx
@@ -1,9 +1,9 @@
"use client";
import {Marker, useMap} from "react-leaflet";
-import {useEffect, useRef} from "react";
+import {useEffect} from "react";
import L from "leaflet";
-import TestActiveIcon from "@/assets/images/examine_marker_active.png";
+import AzmayeshActiveIcon from "@/assets/images/examine_marker_active.png";
import {Box, FormControl, InputAdornment, InputLabel, OutlinedInput, Stack, useMediaQuery} from "@mui/material";
import VerifiedIcon from '@mui/icons-material/Verified';
import {useTheme} from "@emotion/react";
@@ -13,7 +13,6 @@ const ShowLocationMarker = ({lat, lng}) => {
const theme = useTheme();
const isMobile = useMediaQuery(theme.breakpoints.down("sm"));
- const mapTestMarker = useRef();
const defaultIconSize = [35, 35];
const createCustomIcon = (size, iconUrl) => {
return L.icon({
@@ -33,8 +32,7 @@ const ShowLocationMarker = ({lat, lng}) => {
<>
{
return (
<>
-
+
>
);
};
diff --git a/src/components/dashboard/test/index.jsx b/src/components/dashboard/azmayesh/index.jsx
similarity index 79%
rename from src/components/dashboard/test/index.jsx
rename to src/components/dashboard/azmayesh/index.jsx
index d2503a0..da7eb79 100644
--- a/src/components/dashboard/test/index.jsx
+++ b/src/components/dashboard/azmayesh/index.jsx
@@ -2,13 +2,13 @@
import PageTitle from "@/core/components/PageTitle";
import {Stack} from "@mui/material";
-import TestList from "./TestList";
+import AzmayeshList from "./AzmayeshList";
const TestPage = () => {
return (
-
+
);
};
diff --git a/src/core/utils/routes.js b/src/core/utils/routes.js
index 0e60709..4fcfff2 100644
--- a/src/core/utils/routes.js
+++ b/src/core/utils/routes.js
@@ -12,6 +12,6 @@ export const GET_CITY_LISTS = "/v3/api/fake-cities";
export const GET_PROVINCE_LISTS = "/v3/api/fake-provinces";
export const GET_PREV_STATE_OPINION = "/v3/api/fake-prev-state-opinion";
export const SUBMIT_ROAD_SAFETY_FORM = "/v3/api/fake-submit";
-export const POST_TEST = api + "/api/v3/azmayeshes/store";
-export const GET_TESTS_LIST = api + "/api/v3/azmayesh_types";
+export const POST_AZMAYESH = api + "/api/v3/azmayeshes/store";
+export const GET_AZMAYESH_TYPE_LIST = api + "/api/v3/azmayesh_types";
export const GET_AZMAYESH_LIST = api + "/api/v3/azmayeshes";
diff --git a/src/lib/hooks/useAzmayesh.js b/src/lib/hooks/useAzmayesh.js
new file mode 100644
index 0000000..5650a14
--- /dev/null
+++ b/src/lib/hooks/useAzmayesh.js
@@ -0,0 +1,30 @@
+import {useEffect, useState} from "react";
+import {GET_AZMAYESH_TYPE_LIST} from "@/core/utils/routes";
+import useRequest from "@/lib/hooks/useRequest";
+
+const useAzmayesh = () => {
+ const requestServer = useRequest();
+ const [azmayeshes, setAzmayeshes] = useState([]);
+ const [loadingAzmayeshes, setLoadingAzmayeshes] = useState(true);
+ const [errorAzmayeshes, setErrorAzmayeshes] = useState(null);
+
+ useEffect(() => {
+ const fetchTests = async () => {
+ try {
+ const response = await requestServer(`${GET_AZMAYESH_TYPE_LIST}`);
+ setAzmayeshes(response.data.data);
+ setLoadingAzmayeshes(false);
+ } catch (e) {
+ console.error("Error fetching tests types:", e);
+ setErrorAzmayeshes(e);
+ setLoadingAzmayeshes(false);
+ }
+ };
+
+ fetchTests();
+ }, []);
+
+ return {azmayeshes, loadingAzmayeshes, errorAzmayeshes};
+};
+
+export default useAzmayesh;
diff --git a/src/lib/hooks/useTest.js b/src/lib/hooks/useTest.js
deleted file mode 100644
index ea1a386..0000000
--- a/src/lib/hooks/useTest.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import {useEffect, useState} from "react";
-import {GET_TESTS_LIST} from "@/core/utils/routes";
-import useRequest from "@/lib/hooks/useRequest";
-
-const useTest = () => {
- const requestServer = useRequest();
- const [tests, setTests] = useState([]);
- const [loadingTests, setLoadingTests] = useState(true);
- const [errorTests, setErrorTests] = useState(null);
-
- useEffect(() => {
- const fetchTests = async () => {
- try {
- const response = await requestServer(`${GET_TESTS_LIST}`);
- setTests(response.data.data);
- setLoadingTests(false);
- } catch (e) {
- console.error("Error fetching tests types:", e);
- setErrorTests(e);
- setLoadingTests(false);
- }
- };
-
- fetchTests();
- }, []);
-
- return {tests, loadingTests, errorTests};
-};
-
-export default useTest;