import React,{useEffect, useState} from 'react' import { useNavigate } from 'react-router-dom' import InputCom from '../Helpers/Inputs/InputCom'; import PaginatedList from '../Pagination/PaginatedList'; import { handlePagingFunc } from '../Pagination/HandlePagination'; import LoadingSpinner from '../Spinners/LoadingSpinner'; import usersService from '../../services/UsersService'; import { Form, Formik } from "formik"; import * as Yup from "yup"; const validationSchema = Yup.object().shape({ name: Yup.string() .min(3, "Minimum 3 characters") .max(50, "Maximum 50 characters") .required("Name is required"), cardNum: Yup.string() .min(3, "Minimum 3 characters") .max(25, "Maximum 25 characters") .required("Card Number is required"), code: Yup.string() .min(3, "Minimum 3 characters") .max(25, "Maximum 25 characters") .required("Postal Code is required"), state: Yup.string() .min(3, "Minimum 3 characters") .max(25, "Maximum 25 characters") .required("State is required"), address: Yup.string() .min(3, "Minimum 3 characters") .max(50, "Maximum 50 characters") .required("Address is required"), expirationYear: Yup.string() .min(4, "Minimum 4 characters") .max(4, "Maximum 4 characters") .required("Expiration Year is required"), expirationMonth: Yup.string() .min(1, "Minimum 1 characters") .max(2, "Maximum 2 characters") .required("Expiration Month is required"), cvv: Yup.string() .min(3, "Minimum 3 characters") .max(4, "Maximum 4 characters") .required("CVV Year is required"), }); const initialValues = { name: '', cardNum: '', code: '', state: '', address: '', expirationYear: '', expirationMonth: '', cvv: '' }; function AddFundDollars(props) { const navigate = useNavigate() let apiCall = new usersService() let [tab, setTab] = useState("previous"); //STATE FOR SWITCHING BETWEEN TABS let [prevCardDetails, setPrevCardDetails] = useState(null) // STATE TO HOLD PREVIOUS CARD SELECTED let [payListCard, setPayListCard] = useState({loading: true, data:[]}) //USER PREVIOUS CARDS const [currentPage, setCurrentPage] = useState(0); const indexOfFirstItem = Number(currentPage); const indexOfLastItem = Number(indexOfFirstItem)+Number(process.env.REACT_APP_ITEM_PER_PAGE); const currentPreviousCards = payListCard?.data?.slice(indexOfFirstItem, indexOfLastItem); const handlePagination = (e) => { handlePagingFunc(e,setCurrentPage) } // FUNCTION TO SUBMIT const handleSubmit = (values, helpers) => { props.setInputError('') if(!props.input || props.input == '0'){ props.setInputError('Please Enter Amount') return setTimeout(()=>{props.setInputError('')}, 5000) } if(isNaN(props.input)){ props.setInputError('Amount must be a Number') return setTimeout(()=>{props.setInputError('')}, 5000) } if(tab == 'previous'){ const stateData = {amount: Number(props.input), currency: 'dollars'} navigate('confirm-add-fund', {state: stateData}) // State will change later dummy for now } if(tab == 'new'){ const stateData = {amount: Number(props.input), currency: 'dollars', ...values} navigate('confirm-add-fund', {state: stateData}) // State will change later dummy for now } props.setInput('') } useEffect(()=>{ apiCall.payListCard().then(res => { setPayListCard({loading: false, data: res.data.result_list}) }).catch(err => { console.log('PAYCARDLIST ERROR', err) setPayListCard({loading: false, data: []}) }) }, []) return ( <>

Payment Method

{/* switch button */}
{/* END OF switch button */} {/* previous tab */} {tab == 'previous' ?
{ payListCard.loading ? : payListCard?.data?.length ? {currentPreviousCards.map((item, index)=>( )) }

{item.description} Card

Bank **************{item.digits}

{item.added}

Verified

:

No Previous Card Found!

} {/* PAGINATION BUTTON */}
= payListCard?.data?.length ? true : false} data={payListCard?.data} start={indexOfFirstItem} stop={indexOfLastItem} />
{/* END OF PAGINATION BUTTON */}
:
{(props) => { return (
{/* inputs starts here */} {/* Name */}
{props.errors.name && props.touched.name && (

{props.errors.name}

)}
{/* CARD NUMBER */}
{props.errors.cardNum && props.touched.cardNum && (

{props.errors.cardNum}

)}
{/* EXPIRE YEAR, YEAR AND CVV */}
{props.errors.expirationMonth && props.touched.expirationMonth && (

{props.errors.expirationMonth}

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

{props.errors.expirationYear}

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

{props.errors.cvv}

)}
{/* Address */}
{props.errors.address && props.touched.address && (

{props.errors.address}

)}
{/* postal code and state */}
{props.errors.code && props.touched.code && (

{props.errors.code}

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

{props.errors.state}

)}
{/*
{requestStatus.message != "" && (

{requestStatus.message}

)}
{" "} Cancel {requestStatus.loading ? ( ) : ( )}
*/}
); }}
}
{ tab == 'previous' &&
} ) } export default AddFundDollars // FORMS ARRAY OF EXPIRATION YEAR FOR CARD const expireYear = [] let currentYear = new Date().getFullYear() for(let i=0; i<=6; i++){ expireYear.push(currentYear + i) } // FORMS ARRAY OF EXPIRATION MONTH FOR CARD let month = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] const expireMonth = [] for(let i=0; i