import React from "react"; import { useForm } from "react-hook-form"; import { yupResolver } from "@hookform/resolvers/yup"; import * as yup from "yup"; import MkdSDK from "@/utils/MkdSDK"; import { useNavigate } from "react-router-dom"; import { tokenExpireError, AuthContext } from "@/authContext"; import { GlobalContext, showToast } from "@/globalContext"; import AddAdminPageLayout from "@/layouts/AddAdminPageLayout"; import SmartSearch from "@/components/SmartSearch"; const AddAdminPropertySpacesAmenititesPage = () => { let sdk = new MkdSDK(); const { dispatch: globalDispatch } = React.useContext(GlobalContext); const [selectedSpace, setSelectedSpace] = React.useState(); const [propertySpaces, setPropertySpaces] = React.useState([]); const [amenities, setAmenities] = React.useState([]); const schema = yup .object({ property_spaces_id: yup.string(), amenity_id: yup.number().required().positive().integer().typeError("Please select an amenity"), }) .required(); const { dispatch } = React.useContext(AuthContext); const navigate = useNavigate(); const { register, handleSubmit, setError, formState: { errors }, } = useForm({ resolver: yupResolver(schema), }); async function getPropertySpacesData(pageNum, limit, data) { try { const result = await sdk.callRawAPI( "/v2/api/custom/ergo/property-spaces/PAGINATE", { where: [data?.property_name ? `ergo_property.name LIKE '%${data.property_name}%' OR ergo_spaces.category LIKE '%${data.property_name}%'` : 1], page: pageNum, limit: limit, }, "POST", ); const { list } = result; setPropertySpaces(list); } catch (error) { console.log("ERROR", error); tokenExpireError(dispatch, error.message); } } const getAllAmenities = async () => { try { sdk.setTable("amenity"); const result = await sdk.callRestAPI({}, "GETALL"); if (!result.error) { setAmenities(result.list); } } catch (error) { console.log("Error", error); setError("amenity_id", { type: "manual", message: error.message, }); tokenExpireError(dispatch, error.message); } }; const onSubmit = async (data) => { if (selectedSpace?.id) { data.property_spaces_id = selectedSpace.id; try { sdk.setTable("property_spaces_amenitites"); const result = await sdk.callRestAPI( { property_spaces_id: data.property_spaces_id, amenity_id: data.amenity_id, }, "POST", ); if (!result.error) { showToast(globalDispatch, "Added"); navigate("/admin/property_spaces_amenitites"); } else { if (result.validation) { const keys = Object.keys(result.validation); for (let i = 0; i < keys.length; i++) { const field = keys[i]; setError(field, { type: "manual", message: result.validation[field], }); } } } } catch (error) { console.log("Error", error); setError("property_spaces_id", { type: "manual", message: error.message, }); tokenExpireError(dispatch, error.message); } } else { setError("property_spaces_id", { type: "manual", message: "Please Select a property space", }); } }; const onError = () => { if (!selectedSpace?.id) { setError("property_spaces_id", { type: "manual", message: "Please Select a property space", }); } }; React.useEffect(() => { globalDispatch({ type: "SETPATH", payload: { path: "property_spaces_amenitites", }, }); getAllAmenities(); }, []); return (

{errors.property_spaces_id?.message}

{errors.amenity_id?.message}

); }; export default AddAdminPropertySpacesAmenititesPage;