diff --git a/src/components/Referral/ReferralDisplay.jsx b/src/components/Referral/ReferralDisplay.jsx index 2b514e0..620b5e1 100644 --- a/src/components/Referral/ReferralDisplay.jsx +++ b/src/components/Referral/ReferralDisplay.jsx @@ -2,6 +2,33 @@ 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 @@ -16,7 +43,7 @@ function ReferralDisplay() { data: [] }) - let [error, setError] = useState({message: '', loading: false}) // for displaying error message on the page + let [error, setError] = useState({message: '', loading: false, status: false}) // for displaying error message on the page //function to call referral history API const allReferrals = () => { @@ -38,49 +65,28 @@ function ReferralDisplay() { const sendReferralMsg = (postData) => { apiCall.sendReferralMsg(postData).then((res)=>{ if(res.data.internal_return < 0){ - setError({message:'Email already referred', loading: false}) + setError({message:'Email already referred', loading: false, status: false}) return }else{ - setInputs({ firstname: '', lastname: '', email: '',}) toast.success("Message Sent"); - setError({message:'', loading: false}) + setError({message:'', loading: false, status: true}) setRefHistoryReload(prev => !prev) } }).catch((error)=>{ - setError({message:'Opps! an error occured, try again later', loading: false}) + setError({message:'Opps! an error occured, try again later', loading: false, status: false}) }) } - //STATE FOR CONTROLLED INPUTS - let [inputs, setInputs] = useState({ - firstname: '', - lastname: '', - email: '' - }) - - // FUNCTION TO HANDLE INPUT CHANGE - const handleChange = ({target:{name, value}}) => { - setInputs(prev => ({...prev, [name]:value})) - } - //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 - } + 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, - ref_firstname: firstname, - ref_lastname: lastname, - ref_email: email + ...values }; sendReferralMsg(postData) // FUNCTION TO SEND REFERRAL MESSAGE @@ -95,56 +101,62 @@ function ReferralDisplay() {

Send Referral

-
-
- - + {(props)=>( + + {/* Firstname */} +
+ -
- -
- - -
- -
- - -
-
- {error.message != '' &&

{error.message}

} -
- {error.loading ? -
-
- + {(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 ? + + : + + } +
+ + )} +
@@ -153,14 +165,7 @@ function ReferralDisplay() {

Referral List

{referralList.loading ? ( -
-
- -
-
+ ) : (