From 7e09ebf2feeb636aae4ddb5b32db7c81d0ad9fc8 Mon Sep 17 00:00:00 2001 From: victorAnumudu Date: Sun, 23 Apr 2023 22:42:12 +0100 Subject: [PATCH] send referral message implemented --- src/components/Referral/ReferralDisplay.jsx | 146 ++++++++++++++++---- src/services/UsersService.js | 18 +++ 2 files changed, 137 insertions(+), 27 deletions(-) diff --git a/src/components/Referral/ReferralDisplay.jsx b/src/components/Referral/ReferralDisplay.jsx index 033b4f7..2b514e0 100644 --- a/src/components/Referral/ReferralDisplay.jsx +++ b/src/components/Referral/ReferralDisplay.jsx @@ -1,14 +1,61 @@ -import React, { useState } from 'react' +import React, { useEffect, useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import { toast } from "react-toastify"; +import usersService from '../../services/UsersService'; function ReferralDisplay() { - let [referralList, setReferralList] = useState([]) // dummy remove later and call from API + const apiCall = new usersService() // GET API CALL + const navigate = useNavigate() + + let [refHistoryReload, setRefHistoryReload] = useState(false) // Determines when referral history reloads + + // STATE TO HOLD REFERRAL HISTORY + let [referralList, setReferralList] = useState({ + loading: true, + error: false, + data: [] + }) + + let [error, setError] = useState({message: '', loading: false}) // for displaying error message on the page + + //function to call referral history API + const allReferrals = () => { + setReferralList({ + loading: true, + error: false, + data: [] + }) + apiCall.getReferralHx().then((res)=>{ + setReferralList((prev)=>{ + return {...prev, loading: false, data:[...res.data.result_list]} + }) + }).catch((error)=>{ + setReferralList(prev => ({...prev, loading: false, error: true})) + }) + } + + //FUNCTION TO SEND REFERRAL MESSAGE + const sendReferralMsg = (postData) => { + apiCall.sendReferralMsg(postData).then((res)=>{ + if(res.data.internal_return < 0){ + setError({message:'Email already referred', loading: false}) + return + }else{ + setInputs({ firstname: '', lastname: '', email: '',}) + toast.success("Message Sent"); + setError({message:'', loading: false}) + setRefHistoryReload(prev => !prev) + } + }).catch((error)=>{ + setError({message:'Opps! an error occured, try again later', loading: false}) + }) + } //STATE FOR CONTROLLED INPUTS let [inputs, setInputs] = useState({ firstname: '', lastname: '', - email: '', - status: 'pending' + email: '' }) // FUNCTION TO HANDLE INPUT CHANGE @@ -19,17 +66,30 @@ function ReferralDisplay() { //FUNCTION TO HANDLE SUBMIT const handleSubmit = (e) => { e.preventDefault(); + setError({message: '', loading: true}) + let {firstname, lastname, email} = inputs + if(!firstname || !lastname || !email){ + setError({message: 'Please fill all fields', loading: false}) + return + } - //valid inputs before submitting. Just for texting remove later - setReferralList(prev => [...prev, inputs]) - setInputs({ - firstname: '', - lastname: '', - email: '', - status: 'pending' - }) + var postData = { + uid: localStorage.getItem("uid"), + member_id: localStorage.getItem("member_id"), + sessionid: localStorage.getItem("session_token"), + action: 11032, + ref_firstname: firstname, + ref_lastname: lastname, + ref_email: email + }; + + sendReferralMsg(postData) // FUNCTION TO SEND REFERRAL MESSAGE } + useEffect(()=>{ + allReferrals() + }, [refHistoryReload]) + return (
@@ -43,7 +103,6 @@ function ReferralDisplay() { name='firstname' type="text" placeholder='Firstname' - required onChange={handleChange} />
@@ -55,7 +114,6 @@ function ReferralDisplay() { name='lastname' type="text" placeholder='Lastname' - required onChange={handleChange} />
@@ -67,46 +125,80 @@ function ReferralDisplay() { name='email' type="email" placeholder='Email' - required onChange={handleChange} />
+ {error.message != '' &&

{error.message}

}
+ {error.loading ? +
+
+ +
+
+ : + }
-
-

Referral List

+
+

Referral List

+ {referralList.loading ? + ( +
+
+ +
+
+ ) + : + ( - - - + + + - {referralList.length ? - referralList.map(item => ( - - - - + {referralList.data.length ? + referralList.data.map((item, index) => ( + + + + )) : - ( + ( + referralList.error ? + + + + : + ( + ) + ) }
Added/NameEmailStatusAdded/NameEmailStatus
{item.firstname} {item.lastname}{item.email}{item.status}
{item.added_date} / {item.firstname} {item.lastname}{item.email}{item.status}
Opps! couldn't get referral history. Try reloading the page
No Item Found on referral List
+ ) + }
diff --git a/src/services/UsersService.js b/src/services/UsersService.js index 1e1dd37..51f60e5 100644 --- a/src/services/UsersService.js +++ b/src/services/UsersService.js @@ -151,6 +151,24 @@ class usersService { return this.postAuxEnd("/couponhx", postData); } + //END POINT CALL FOR REFERRAL HISTORY + getReferralHx(){ + var postData = { + uid: localStorage.getItem("uid"), + member_id: localStorage.getItem("member_id"), + sessionid: localStorage.getItem("session_token"), + offset: 1, + limit :100, + action: 11064 + }; + return this.postAuxEnd("/refferhx", postData); + } + + //END POINT CALL FOR SENDING REFERRAL MESSAGE + sendReferralMsg(postData){ + return this.postAuxEnd("/sendreferral", postData); + } + getCouponRedeem(){ var postData = { uuid: localStorage.getItem("uid"),