import React, { useEffect, useState } from 'react' import ModalCom from '../../../Helpers/ModalCom' import InputCom from '../../../Helpers/Inputs/InputCom' import { Form, Formik } from "formik"; import * as Yup from "yup"; import {AmountTo2DP} from '../../../Helpers/PriceFormatter' import usersService from '../../../../services/UsersService'; import LoadingSpinner from '../../../Spinners/LoadingSpinner'; import { PriceFormatter } from '../../../Helpers/PriceFormatter'; import { tableReload } from '../../../../store/TableReloads'; import { useDispatch } from 'react-redux'; const validationSchema = Yup.object().shape({ // amount: Yup.string() // .typeError("Invalid number") // .min(1, "Price must be greater than 0") // .test("no-e", "Invalid number", (value) => { // if (value && /\d+e/.test(value)) { // return false; // } // return true; // }) // .required("Amount is required"), amount: Yup.number('Please enter a number') .min(1, "Price must be greater than 0") .required("Amount is required"), comment: Yup.string() .required("Comment is required"), }); function FamilyAddFundPopout({action, situation, wallet, familyData}) { const dispatch = useDispatch() const apiUrl = new usersService() const [startTransfer, setStartTransfer] = useState({loading:true, data: {}}) const [requestStatus, setRequestStatus] = useState({loading:false, status:false, message:''}) // initial values for formik let initialValues = { amount: '', from : AmountTo2DP(startTransfer?.data?.origing_current_balance*0.01), to: `${familyData.firstname} ${familyData.lastname}`, comment: '' }; // FUNCTION TO PERFORM FAMILY TRANSFER const handleAddFund = (values) => { setRequestStatus({loading:true, status:false, message:''}) let senderBal = startTransfer?.data?.origing_current_balance || '' // SENDER'S ACCOUNT BALANCE let senderLimit = startTransfer?.data?.origing_transfer_limit || '' // SENDER'S TRANSFER LIMIT let reqData = { // API REQUEST DATA family_uid : familyData.uid, wallet_uid : wallet.wallet_uid, origing_wallet_uid : startTransfer?.data?.origing_wallet_uid, currency : startTransfer?.data?.currency, amount : values.amount*100, description : values.comment, family_transfer_mode : 100, action : 22014 } if(!senderBal || !senderLimit){ // RETURNS UNAUTHORIZED, IF SENDER BAL OR LIMIT IS NOT AVAILABLE setRequestStatus({loading:false, status:false, message:'Unauthorized, try again later'}) return setTimeout(()=>{ setRequestStatus({loading:false, status:false, message:''}) }, 5000) } if(values.amount > senderBal*0.01){ // CHECKS TO SEE IF SENDER IS SENDING MORE THAN HIS BALANCE setRequestStatus({loading:false, status:false, message:'You cannot send more than your balance'}) return setTimeout(()=>{ setRequestStatus({loading:false, status:false, message:''}) }, 5000) } if(values.amount > senderLimit*0.01){ // CHECKS TO SEE IF SENDER IS SENDING MORE THAN HIS LIMIT setRequestStatus({loading:false, status:false, message:`You cannot exceed ${senderLimit*0.01} ${startTransfer?.data?.origing_currency.charAt(0).toUpperCase() + startTransfer?.data?.origing_currency.slice(1).toLowerCase()}`}) return setTimeout(()=>{ setRequestStatus({loading:false, status:false, message:''}) }, 5000) } apiUrl.familyTransfer(reqData).then(({data}) => { if(data.internal_return < 0 || data.credit_confirm == '' || data.pay_confirm == ''){ setRequestStatus({loading:false, status:false, message:'Transfer Failed'}) return setTimeout(()=>{ setRequestStatus({loading:false, status:false, message:''}) }, 5000) } setRequestStatus({loading:false, status:true, message:'Transfer Successful'}) setTimeout(()=>{ setRequestStatus({loading:false, status:false, message:''}) dispatch(tableReload({ type: "WALLETTABLE" })); // UPDATES PARENT WALLET ACCOUNT action() // TO CLOSE THE MODAL }, 5000) }).catch(error => { setRequestStatus({loading:false, status:false, message:'Network Error, try again'}) setTimeout(()=>{ setRequestStatus({loading:false, status:false, message:''}) }, 5000) }) } // LOAD FAMILY START TRANSFER useEffect(()=>{ let reqData = { family_uid: familyData.uid, wallet_uid: wallet.wallet_uid, action: 22013 } apiUrl.familyTransferStart(reqData).then(response => { setStartTransfer({loading:false, data:response?.data }) }).catch(err => { setStartTransfer({loading:false, data: {}}) }) },[]) return (

Add Fund

{startTransfer.loading && } { !startTransfer.loading && {(props) => (
{/* AMOUNT */}
{/* FROM */}
{/* TO */}
{/* COMMENT */}