import { useState } from "react"; import SearchBar from "../search"; import SortList from "../sortlist"; import { Button } from "@mui/material"; import { useParams, useRouter, useSearchParams } from "next/navigation"; import LocationD from "../../icons/LocationD"; import specialties from "@/data/specialties.json"; import ModalSearchCity from "@/app/component/modalSearchCity"; // Data import states from "@/data/state.json"; import cities from "@/data/city.json"; import { QueryForDoctorsFilter, QueryForDoctorsReq } from "@/helper"; import { request } from "@/services/response"; function Head({ matchedCity, matchedState, setDoctors }) { const params = useParams(); const searchParams = useSearchParams(); const router = useRouter(); const fieldName = searchParams.get("specialty"); const [open, setOpen] = useState(false); const findItem = (key, name) => specialties.find((item) => item[key] === name); const isParent = findItem("name", fieldName) && findItem("name", fieldName).parent; const defaultData = { category: isParent ? findItem("id", isParent) : findItem("name", fieldName), specialties: isParent && findItem("name", fieldName), turn: params && params.hasOwnProperty("turn") ? JSON.parse(params.turn) : 1, gender: params.gender || "هر دو", degree: params.degree || "همه موارد", }; const selectedState = searchParams.get("state") || matchedState?.name; const selectedCity = searchParams.get("city") || (matchedCity?.name && matchedCity?.id !== "63" ? matchedCity?.name : false); const defaultFilter = { state: selectedState && states.find((item) => item.name === selectedState), city: selectedCity && cities.find((item) => item.name === selectedCity), category: isParent ? findItem("id", isParent) : findItem("name", fieldName), specialty: isParent && findItem("name", fieldName), active: searchParams.get("active") || 0, gender: searchParams.get("gender") || "هر دو", degree: searchParams.get("degree") || "همه موارد", sort: (searchParams.get("sort") && Number(searchParams.get("sort"))) || "", name: searchParams.get("name") || "", }; const [data, setData] = useState(defaultData); const [filter, setFilter] = useState(defaultFilter); const setDataInURL = (newFilter) => { const query = QueryForDoctorsFilter(newFilter); const searchParams = new URLSearchParams(query).toString(); router.push(`?${searchParams}`); }; const updateData = (name, value, isReq) => { const newFilter = { ...filter, [name]: value }; setDataInURL(newFilter); setFilter(newFilter); isReq && sendReq(newFilter); }; const sendReq = (newFilter) => { const params = QueryForDoctorsReq(newFilter || filter); return request .getDoctors(params) .then((res) => { setDoctors(res.data); return res; }) .catch((err) => { throw err; }); }; return (
); } export default Head;