From dc2c1e7eaba9cb578a32f426a20c908cc797b426 Mon Sep 17 00:00:00 2001 From: victorAnumudu Date: Mon, 17 Feb 2025 20:36:35 +0100 Subject: [PATCH] loan apply API added --- src/components/loan_screen/Offers.jsx | 4 +- src/components/loan_screen/Pin.jsx | 2 +- src/components/loan_screen/SelectedOffer.jsx | 50 +++++++++++++++++--- src/services/siteServices.js | 8 ++++ 4 files changed, 54 insertions(+), 10 deletions(-) diff --git a/src/components/loan_screen/Offers.jsx b/src/components/loan_screen/Offers.jsx index 1807774..4b8014f 100644 --- a/src/components/loan_screen/Offers.jsx +++ b/src/components/loan_screen/Offers.jsx @@ -27,8 +27,8 @@ export default function Offers({step, handleStep, screens}) { // setError('*') }, onSuccess: (res) => { - const selectedOffer = res.data.loan[0].loan - handleStep({selectedOffer, ...res.data.loan[0]}, screens.selected_offer) + const selectedOffer = res.data.loan + handleStep({selectedOffer, ...res.data}, screens.selected_offer) } }) diff --git a/src/components/loan_screen/Pin.jsx b/src/components/loan_screen/Pin.jsx index bb8ba46..d667c41 100644 --- a/src/components/loan_screen/Pin.jsx +++ b/src/components/loan_screen/Pin.jsx @@ -30,7 +30,7 @@ export default function Pin({step, handleStep, screens}) { onSuccess: (res) => { handleStep(step.details, screens.offers) } - }) + }) const handleContinue = () => { if(!pin){ diff --git a/src/components/loan_screen/SelectedOffer.jsx b/src/components/loan_screen/SelectedOffer.jsx index 1f07596..2c88b2b 100644 --- a/src/components/loan_screen/SelectedOffer.jsx +++ b/src/components/loan_screen/SelectedOffer.jsx @@ -1,28 +1,64 @@ import React, { useState } from 'react' +import { useMutation } from '@tanstack/react-query' import Label from '../Label' import InputText from '../InputText' +import { loanApply } from '../../services/siteServices' export default function SelectedOffer({step, handleStep, screens}) { - const [pin, setPin] = useState('') + const [amount, setAmount] = useState('') - console.log(step) - const handleContinue = () => { - handleStep(step.details, screens.loan_pin) + const [error, setError] = useState('') + + + const handleAmountChange = ({target:{value}}) => { + setError('') + setAmount(value) } + const apply = useMutation({ + mutationFn: () => { + let fields = {amount: Number(amount), bvn:step.activeUser.bvn, loan:step.details.loan} + if(!fields.amount){ + // throw new Error('*') + throw ({message:'Please enter amount'}) + } + if(isNaN(amount)){ + throw ({message:'Amount must be a valid figure'}) + } + return loanApply(fields) + }, + onError: (error) => { + setError(error.message) + setTimeout(()=>{setError('')},3000) + }, + onSuccess: (res) => { + // const selectedOffer = res.data.loan[0].loan + handleStep(step.details, screens.loan_pin) + } + }) + return (

Tenor: 30 Days

-
+ + {error && + <> +
+

{error}

+
+ + }
) } + \ No newline at end of file diff --git a/src/services/siteServices.js b/src/services/siteServices.js index 0784d4a..9ebfeb0 100644 --- a/src/services/siteServices.js +++ b/src/services/siteServices.js @@ -66,6 +66,14 @@ export const loanSelect = (reqData) => { return postAuxEnd('/salary/loanselect', postData, false) } +// FUNCTION TO APPLY FOR LOAN +export const loanApply = (reqData) => { + let postData = { + ...reqData + } + return postAuxEnd('/salary/loanapply', postData, false) +} + // FUNCTION TO GET DEMO USERS export const demoUsersList = (reqData) => { const postData = { ...reqData }