import React, { useEffect, useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { toast } from "react-toastify"; import usersService from '../../services/UsersService'; import InputCom from '../Helpers/Inputs/InputCom'; import LoadingSpinner from '../Spinners/LoadingSpinner'; import {Formik, Form} from 'formik' import * as Yup from 'yup' const validationSchema = Yup.object().shape({ email: Yup.string() .email('Wrong email format') .min(3, 'Minimum 3 characters') .max(50, 'Maximum 50 characters') .required('Email is required'), firstname: Yup.string() .min(3, 'Minimum 3 characters') .max(25, 'Maximum 25 characters') .required('Firstname is required'), lastname: Yup.string() .min(3, 'Minimum 3 characters') .max(25, 'Maximum 25 characters') .required('Lastname is required'), }) const initialValues = { firstname: '', lastname: '', email: '' } function ReferralDisplay() { 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, status: 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, status: false}) return }else{ toast.success("Message Sent"); setError({message:'', loading: false, status: true}) setRefHistoryReload(prev => !prev) } }).catch((error)=>{ setError({message:'Opps! an error occured, try again later', loading: false, status: false}) }) } //FUNCTION TO HANDLE SUBMIT const handleSubmit = (values, helpers) => { setError({message: '', loading: true, status: false}) var postData = { uid: localStorage.getItem("uid"), member_id: localStorage.getItem("member_id"), sessionid: localStorage.getItem("session_token"), action: 11032, ...values }; sendReferralMsg(postData) // FUNCTION TO SEND REFERRAL MESSAGE } useEffect(()=>{ allReferrals() }, [refHistoryReload]) return (

Send Referral

{(props)=>(
{/* Firstname */}
{(props.errors.firstname && props.touched.firstname) &&

{props.errors.firstname}

}
{/* Lastname */}
{(props.errors.lastname && props.touched.lastname) &&

{props.errors.lastname}

}
{(props.errors.email && props.touched.email) &&

{props.errors.email}

}

{error.message != '' &&

{error.message}

}
{error.loading ? : }
)}

Referral List

{referralList.loading ? ( ) : ( {referralList.data.length ? referralList.data.map((item, index) => ( )) : ( referralList.error ? : ( ) ) }
Added/Name Email 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
) }
) } export default ReferralDisplay