diff --git a/src/Routers.jsx b/src/Routers.jsx index a5f7f93..47ef7e2 100644 --- a/src/Routers.jsx +++ b/src/Routers.jsx @@ -37,6 +37,7 @@ import StartJob from "./components/MyJobs/StartJob"; import AddJobPage from "./views/AddJobPage"; import MyPendingJobsPage from "./views/MyPendingJobsPage"; import ManageActiveJobs from "./views/ManageActiveJobs"; +import FamilyManagePage from "./views/FamilyManagePage"; export default function Routers() { return ( @@ -83,6 +84,7 @@ export default function Routers() { } /> } /> } /> + } /> } /> } /> new SiteService(), []); + + // This is to make sure it's called once and used everywhere + let memberId = localStorage.getItem("member_id"); + let uid = localStorage.getItem("uid"); + let sessionId = localStorage.getItem("session_token"); + + const popUpHandler = () => { + setPopUp((prev) => !prev); + }; + + // tab handler + const filterHandler = (value) => { + setValue(value); + }; + + // For the age drop down + let startAge = 5; + let endAge = 16; + // creates an array of age values ranging from 16 to 70 + const ageRange = Array.from( + { length: endAge - startAge + 1 }, + (_, index) => startAge + index + ); + // age handler + const handleAgeSelect = (event) => { + setSelectedAge(parseInt(event.target.value)); + }; + // Input handler + const handleInputChange = (event) => { + const { name, value } = event?.target; + setFormData({ ...formData, [name]: value }); + }; + + // Add member + const addMember = async () => { + const { first_name, last_name } = formData; + setLoader(true); + try { + if (first_name !== "" && last_name !== "") { + let reqData = { + member_id: memberId, + uid: uid, + session_id: sessionId, + firstname: first_name, + lastname: last_name, + age: selectedAge, + }; + + let res = await apiCall.addFamily(reqData); + const { data } = res; + + if (data?.internal_return > 0 && data?.status == "OK") { + setLoader(false); + setListReload((prev) => !prev); + } else { + setLoader(false); + setMsgErr("Sorry, something went wrong"); + } + } else { + setLoader(false); + setMsgErr("Please fill in the fields"); + } + } catch (error) { + setLoader(false); + setMsgErr("An error occurred"); + throw new Error(error); + } finally { + setTimeout(() => { + setMsgErr(null); + }, Number(process.env.REACT_APP_LOGIN_ERROR_TIMEOUT)); + setFormData({ + first_name: "", + last_name: "", + }); + } + }; + + // member listing + const memberList = useCallback(async () => { + setLoader(true); + try { + let reqData = { + member_id: memberId, + uid: uid, + session_id: sessionId, + limit: 20, + offset: 0, + action: 22010, + }; + + let res = await apiCall.familyListings(reqData); + const { data } = res; + if (data?.internal_return >= 0 && data?.status == "OK") { + let { result_list } = data; + setFamilyList(result_list); + setLoader(false); + } else return; + } catch (error) { + setLoader(false); + throw new Error(error); + } + }, [apiCall, memberId, sessionId, uid]); + + useEffect(() => { + memberList(); + }, [listReload, memberList]); + + return ( + + {/**/} + + + {/* heading */} + + + + + Manage Family + + + + + filterHandler("today")} + className="relative" + > + + + + + + + + ); +} + +const FamilyForm = ({ + value: { first_name, last_name }, + ageValue, + inputHandler, + ageHandler, + ageRange, + msgErr, + loader, + onClick, + popUpHandler, + }) => { + return ( + + + + Add Members + + + + + + + + + + {/* Age dropdown */} + + + Select your age: + + + + + Select age + {ageRange?.length > 0 && + ageRange?.map((age) => ( + + {age} + + ))} + + + + {msgErr && ( + + {msgErr} + + )} + + + + {loader ? ( + + ) : ( + Add + )} + + + + + + ); +}; + +const CloseIcon = () => ( + + + + +); diff --git a/src/components/FamilyAcc/FamilyManageTabs.jsx b/src/components/FamilyAcc/FamilyManageTabs.jsx new file mode 100644 index 0000000..e05a43b --- /dev/null +++ b/src/components/FamilyAcc/FamilyManageTabs.jsx @@ -0,0 +1,24 @@ +import React, { useState } from "react"; +import LoadingSpinner from "../Spinners/LoadingSpinner"; + +export default function FamilyManageTabs({ className, familyList, loader }) { + return ( + + + {loader ? ( + + + + ) : ( + + + + )} + + + ); +} diff --git a/src/views/FamilyManagePage.jsx b/src/views/FamilyManagePage.jsx new file mode 100644 index 0000000..8305b52 --- /dev/null +++ b/src/views/FamilyManagePage.jsx @@ -0,0 +1,9 @@ +import FamilyManage from "../components/FamilyAcc/FamilyManage"; + +export default function FamilyManagePage() { + return ( + <> + + > + ); +}