From 5a97e9a185e85421d1acc6f97522fca64310dbbd Mon Sep 17 00:00:00 2001 From: victorAnumudu Date: Tue, 23 Jul 2024 19:34:15 +0100 Subject: [PATCH] relative settings and edit API added --- .../FamilySettings/Tabs/RelativePopout.jsx | 53 +++++- .../Tabs/RelativeReminderPopout.jsx | 173 ++++++++++++++++++ .../FamilySettings/Tabs/RelativeTable.jsx | 29 +++ src/lib/apiConst.js | 4 + src/services/UsersService.js | 33 ++++ 5 files changed, 286 insertions(+), 6 deletions(-) create mode 100644 src/components/FamilyAcc/FamilySettings/Tabs/RelativeReminderPopout.jsx diff --git a/src/components/FamilyAcc/FamilySettings/Tabs/RelativePopout.jsx b/src/components/FamilyAcc/FamilySettings/Tabs/RelativePopout.jsx index bdb5864..de17b6a 100644 --- a/src/components/FamilyAcc/FamilySettings/Tabs/RelativePopout.jsx +++ b/src/components/FamilyAcc/FamilySettings/Tabs/RelativePopout.jsx @@ -21,14 +21,45 @@ const RelativePopout = ({ const {userDetails} = useSelector((state) => state?.userDetails); // CHECKS IF USER Details are avaliable, to determine if user is active + const [relativeSettings, setRelativeSettings] = useState({loading:true, data:[]}) + const [reloadSettings, setReloadSettings] = useState(false) + + const [relativeEditKids, setRelativeEditKids] = useState({loading:false, family_uid: ''}) + const apiCall = new usersService(); let { pathname, state } = useLocation(); const dispatch = useDispatch(); - useEffect(()=>{ - },[]) + const handleUncheck = (e, family_uid) => { // FUNCTION TO EDIT RELATIVE KIDS + let isChecked = e.target.checked + const reqData = { + family_uid: family_uid, + relative_uid: relativeSelected.relative_uid, + add: isChecked ? '1' : '0' + } + // console.log('family_uid', isChecked) + setRelativeEditKids({loading:true, family_uid:family_uid}) + apiCall.getRelativeEditKids(reqData).then(res => { + setReloadSettings(prev => !prev) // MAKE RELATIVE SETTINGS TO RELOAD IN ORDER TO SET RELATIVE EDIT KIDS LOADING TO FALSE + // setRelativeEditKids({loading:false, family_uid:''}) + }).catch((err)=>{ + setRelativeEditKids({loading:false, family_uid:''}) + console.log(err) + }) + } + + useEffect(()=>{ // FUNCTION TO GET RELATIVE KIDS SETTINGS + apiCall.getRelativeSettings({relative_uid: relativeSelected.relative_uid}).then(res => { + setRelativeSettings({loading:false, data:res?.data?.kids_list || []}) + }).catch((err)=>{ + setRelativeSettings({loading:false, data:[]}) + console.log(err) + }).finally(()=>{ // SET RELATIVE EDIT KIDS TO FALSE + setRelativeEditKids({loading:false, family_uid:''}) + }) + },[reloadSettings]) return ( <> @@ -65,17 +96,27 @@ const RelativePopout = ({
-
+
- {familyList.loader ? - + {familyList.loader || relativeSettings.loading ? + : (!familyList.loader && familyList?.familyList?.result_list?.length > 0) ? familyList?.familyList?.result_list?.map(item => { + const isChecked = relativeSettings?.data?.filter(value => value?.family_uid == item?.family_uid) const image = localStorage.getItem("session_token") ? `${familyList?.imageServer}${localStorage.getItem("session_token")}/family/${item?.family_uid}` : ""; return (
- + {relativeEditKids.loading && relativeEditKids.family_uid == item.family_uid? + + : + 0} + type="checkbox" + className='w-4 h-4 border-2 border-blue-500 rounded-sm bg-white cursor-pointer' + onChange={(e) => handleUncheck(e, item.family_uid)} + /> + }
diff --git a/src/components/FamilyAcc/FamilySettings/Tabs/RelativeReminderPopout.jsx b/src/components/FamilyAcc/FamilySettings/Tabs/RelativeReminderPopout.jsx new file mode 100644 index 0000000..814740b --- /dev/null +++ b/src/components/FamilyAcc/FamilySettings/Tabs/RelativeReminderPopout.jsx @@ -0,0 +1,173 @@ +import React, { Suspense, useEffect, useState } from "react"; +import { useDispatch, useSelector } from "react-redux"; +import { useLocation, useOutletContext } from "react-router-dom"; +import usersService from "../../../../services/UsersService"; +import ModalCom from '../../../Helpers/ModalCom'; +import LoadingSpinner from "../../../Spinners/LoadingSpinner"; +import localImgLoad from '../../../../lib/localImgLoad' + +// import { tableReload } from "../../../store/TableReloads"; +// import { PriceFormatter } from "../../Helpers/PriceFormatter"; + + +const RelativeReminderPopout = ({ + relativeSelected, + action, + situation, + familyList +}) => { + + const { walletDetails } = useSelector((state) => state?.walletDetails); // WALLET STORE + + const {userDetails} = useSelector((state) => state?.userDetails); // CHECKS IF USER Details are avaliable, to determine if user is active + + const [relativeReminder, setRelativeReminder] = useState({loading:false, status:false, msg:''}) + + const apiCall = new usersService(); + + let { pathname, state } = useLocation(); + + const dispatch = useDispatch(); + + const cancelInvite = (family_uid) => { // FUNCTION TO EDIT RELATIVE KIDS + const reqData = { + relative_uid: relativeSelected.relative_uid, + reminder: 'PENDING_ACCOUNT' + } + } + + const sendRelativeReminder = ()=>{ // FUNCTION TO SEND REMINDER + setRelativeReminder({loading:true, status:false, msg:''}) + const reqData = { + relative_uid: relativeSelected.relative_uid, + reminder: 'PENDING_ACCOUNT' + } + apiCall.sendRelativeReminder(reqData).then(res => { + if(res?.data?.internal_return < 0){ + setRelativeReminder({loading:false, status:false, msg:'failed to send'}) + return + } + setRelativeReminder({loading:false, status:true, msg:'Reminder Sent'}) + setTimeout(()=>{ + action() // CLOSE MODAL + }, 3000) + }).catch((err)=>{ + setRelativeReminder({loading:false, status:false, msg:'Network error'}) + console.log(err) + }).finally(()=>{ + setTimeout(()=>{ + setRelativeReminder({loading:false, status:false, msg:''}) + }, 3000) + }) + } + + return ( + <> + +
+
+

+ {relativeSelected.firstname && relativeSelected.firstname} {relativeSelected.lastname && relativeSelected.lastname} +

+ +
+
+
+
+
+
+

First name :

+ {/*

{'Dummy'}

*/} +
+
+

Last name :

+ {/*

{'Dummy'}

*/} +
+
+

Email :

+ {/*

{'Dummy'}

*/} +
+
+

Family Type :

+ {/*

{'Dummy'}

*/} +
+
+
+
+ <> + {relativeReminder.loading ? + + : + + } + + <> + {relativeReminder.msg && +

{relativeReminder.msg}

+ } + + <> + {/* */} + + +
+
+ <> + {relativeReminder.msg && +

{relativeReminder.msg}

+ } + +
+
+ +
+
+
+ + ); +}; + +export default RelativeReminderPopout; diff --git a/src/components/FamilyAcc/FamilySettings/Tabs/RelativeTable.jsx b/src/components/FamilyAcc/FamilySettings/Tabs/RelativeTable.jsx index 29ced1a..e8ab268 100644 --- a/src/components/FamilyAcc/FamilySettings/Tabs/RelativeTable.jsx +++ b/src/components/FamilyAcc/FamilySettings/Tabs/RelativeTable.jsx @@ -3,6 +3,7 @@ import { handlePagingFunc } from '../../../Pagination/HandlePagination'; import PaginatedList from '../../../Pagination/PaginatedList'; import RelativePopout from './RelativePopout'; +import RelativeReminderPopout from './RelativeReminderPopout'; export default function RelativeTable({relativeList, familyList}) { @@ -15,9 +16,15 @@ export default function RelativeTable({relativeList, familyList}) { const [relativePopout, setRelativePopout] = useState({show:false, data:null}) + const [reminderPopout, setReminderPopout] = useState({show:false, data:null}) + const closePopout = () => { setRelativePopout({show:false, data:null}) } + + const closeReminderPopout = () => { + setReminderPopout({show:false, data:null}) + } const handlePagination = (e) => { handlePagingFunc(e, setCurrentPage); @@ -56,9 +63,21 @@ export default function RelativeTable({relativeList, familyList}) { {/* Family Type */} {value.family_type && value.family_type.toUpperCase()} + {value.status_action ? + + + + : {value.status && value.status} + } {value.kid_count && value.kid_count} @@ -120,6 +139,16 @@ export default function RelativeTable({relativeList, familyList}) { familyList={familyList} /> } + + {reminderPopout.show && + + } + ); }; diff --git a/src/lib/apiConst.js b/src/lib/apiConst.js index f8c0ff2..bb779c0 100644 --- a/src/lib/apiConst.js +++ b/src/lib/apiConst.js @@ -190,6 +190,10 @@ export const apiConst = { WRENCHBOARD_INTEREST_STATS: 13048, + WRENCHBOARD_RELATIVE_SETTINGS: 22033, + WRENCHBOARD_RELATIVE_EDIT_KIDS: 22034, + WRENCHBOARD_RELATIVE_REMINDER: 22035, + WRENCHBOARD_GROUP_START: 12000, WRENCHBOARD_GROUP_CREATEGROUP: 12010, WRENCHBOARD_GROUP_INVITEGROUP: 12015, diff --git a/src/services/UsersService.js b/src/services/UsersService.js index 45a9e27..007fd72 100644 --- a/src/services/UsersService.js +++ b/src/services/UsersService.js @@ -655,6 +655,39 @@ class usersService { return this.postAuxEnd("/familylist", postData); } + getRelativeSettings(reqData) { + var postData = { + uid: localStorage.getItem("uid"), + member_id: localStorage.getItem("member_id"), + sessionid: localStorage.getItem("session_token"), + action: apiConst.WRENCHBOARD_RELATIVE_SETTINGS, + ...reqData + }; + return this.postAuxEnd("/relativesettings", postData); + } + + sendRelativeReminder(reqData) { + var postData = { + uid: localStorage.getItem("uid"), + member_id: localStorage.getItem("member_id"), + sessionid: localStorage.getItem("session_token"), + action: apiConst.WRENCHBOARD_RELATIVE_REMINDER, + ...reqData + }; + return this.postAuxEnd("/relativereminder", postData); + } + + getRelativeEditKids(reqData) { + var postData = { + uid: localStorage.getItem("uid"), + member_id: localStorage.getItem("member_id"), + sessionid: localStorage.getItem("session_token"), + action: apiConst.WRENCHBOARD_RELATIVE_EDIT_KIDS, + ...reqData + }; + return this.postAuxEnd("/relativeeditkids", postData); + } + getFamilyAdd() { var postData = { uuid: localStorage.getItem("uid"), -- 2.34.1