import React, { useEffect, useState } from "react"; import { useNavigate } from "react-router-dom"; import usersService from "../../services/UsersService"; import InputCom from "../Helpers/Inputs/InputCom"; import LoadingSpinner from "../Spinners/LoadingSpinner"; import { Form, Formik } from "formik"; import { useSelector } from "react-redux"; import * as Yup from "yup"; import Icons from "../Helpers/Icons"; const validationSchema = Yup.object().shape({ name: Yup.string() .min(3, "3 chars min.") .max(50, "50 chars max.") .required("required"), cardNum: Yup.string() .min(3, "3 chars min.") .max(25, "25 chars max.") .required("required"), code: Yup.string() .min(3, "3 chars min.") .max(25, "25 chars max.") .required("required"), state: Yup.string() .min(3, "3 chars min.") .max(25, "25 chars max.") .required("required"), address: Yup.string() .min(3, "3 chars min.") .max(50, "50 chars max.") .required("required"), expirationYear: Yup.string() .min(4, "4 chars min.") .max(4, "4 chars max.") .required("required"), expirationMonth: Yup.string() .min(1, "1 chars min.") .max(2, "2 chars max.") .required("required"), cvv: Yup.string() .min(3, "3 chars min.") .max(4, "4 chars max.") .required("required"), }); const initialValues = { name: "", cardNum: "", code: "", state: "", address: "", expirationYear: "", expirationMonth: "", cvv: "", }; function AddFundDollars(props) { const navigate = useNavigate(); const apiCall = new usersService(); let countryWallet = props.walletItem.country; const [tab, setTab] = useState("previous"); const [loader, setLoader] = useState(false); const { userDetails } = useSelector((state) => state?.userDetails); const { firstname, lastname } = userDetails; const [prevCardDetails, setPrevCardDetails] = useState({}); const [payListCards, setPayListCards] = useState({ loading: true, data: [] }); const handleInputChange = (event) => { const { name, value } = event.target; setPrevCardDetails((prevState) => ({ ...prevState, [name]: value, })); }; const indexOfFirstItem = 0; const indexOfLastItem = indexOfFirstItem + Number(process.env.REACT_APP_ITEM_PER_PAGE); const currentPreviousCards = payListCards?.data?.slice( indexOfFirstItem, indexOfLastItem ); const handleSubmit = async (values, helpers) => { props.setInputError(""); if (!props.input || props.input === "0") { props.setInputError("Please Enter Amount"); return; } if (isNaN(props.input)) { props.setInputError("Amount must be a Number"); return; } if (tab === "previous") { if (!prevCardDetails) { return; } setLoader(true); let stateData = { amount: Number(props.input) * 100, currency: props.walletItem?.code, }; try { const res = await apiCall.getStartCredit(stateData); if (res.data.internal_return < 0) { setLoader(false); props.setInputError("An Error Occurred"); setTimeout(() => props.setInputError(""), 5000); return; } const _response = res.data; stateData.amount = Number(props.input); stateData.card = prevCardDetails["payment-card"]; stateData.cardType = "prev"; stateData = { ...stateData, ..._response }; setTimeout(() => { setLoader(false); props.setConfirmCredit({ show: true, data: stateData, }); }, 1500); } catch (error) { console.log(error); } return setTimeout(() => { props.setConfirmCredit({ show: true, data: stateData }); setLoader(false); }, 1500); } if (tab === "new") { const stateData = { amount: Number(props.input), currency: props.currency, ...values, }; } }; useEffect(() => { apiCall .payListCard() .then((res) => { setPayListCards({ loading: false, data: res.data.result_list }); }) .catch((err) => { console.log("PAYCARDLIST ERROR", err); setPayListCards({ loading: false, data: [] }); }); }, []); const handleClose = props.onClose; return ( <>
No Previous Card Found!