Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5a7adf4537 | |||
| 45d5bd870f | |||
| 263c6740c5 | |||
| 07c1a8ae06 |
@@ -210,7 +210,7 @@ const DashboardHomeIntro: FC<DashboardHomeIntroProps> = ({
|
|||||||
</button>
|
</button>
|
||||||
</td>
|
</td>
|
||||||
<td className="flex justify-end px-1 py-2 text-right">
|
<td className="flex justify-end px-1 py-2 text-right">
|
||||||
<button className="flex flex-nowrap items-center px-2 py-1 border-2 border-black" onClick={()=>navigate(RouteHandler.dashboardPayments, {state:{uid: item?.application_uid}})}>
|
<button className="flex flex-nowrap items-center px-2 py-1 border-2 border-black" onClick={()=>navigate(RouteHandler.dashboardReference, {state:{application_uid: item?.application_uid}})}>
|
||||||
View
|
View
|
||||||
<Icons name="arrow-right" />
|
<Icons name="arrow-right" />
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -1,72 +1,111 @@
|
|||||||
import { InputCompOne } from "..";
|
|
||||||
|
|
||||||
import { useNavigate } from "react-router-dom";
|
import { useNavigate } from "react-router-dom";
|
||||||
|
import { useSelector } from "react-redux";
|
||||||
|
import {Formik, Form} from 'formik'
|
||||||
|
import * as Yup from "yup";
|
||||||
|
|
||||||
import { RouteHandler } from "../../router/routes";
|
import { RouteHandler } from "../../router/routes";
|
||||||
|
|
||||||
|
import { Button, InputCompOne } from "..";
|
||||||
|
|
||||||
|
// To get the validation schema
|
||||||
|
const validationSchema = Yup.object().shape({
|
||||||
|
firstname: Yup.string()
|
||||||
|
.required("Required"),
|
||||||
|
lastname: Yup.string()
|
||||||
|
.required("Required"),
|
||||||
|
internal_email : Yup.string().required("Required").email("Invalid"),
|
||||||
|
});
|
||||||
|
|
||||||
export default function DashboardProfile() {
|
export default function DashboardProfile() {
|
||||||
let navigate = useNavigate();
|
let navigate = useNavigate();
|
||||||
const navigateToProfile = () => navigate(RouteHandler.dashboardHome);
|
const navigateToHome = () => navigate(RouteHandler.dashboardHome);
|
||||||
|
|
||||||
|
|
||||||
|
const { userDetails } = useSelector((state:any) => state?.userDetails); // GETS USER DETAILS
|
||||||
|
|
||||||
|
const initialValues = {
|
||||||
|
firstname: userDetails.firstname,
|
||||||
|
lastname: userDetails.lastname,
|
||||||
|
internal_email: userDetails.internal_email
|
||||||
|
};
|
||||||
|
|
||||||
|
//FUNCTION TO HANDLE SUBMIT
|
||||||
|
const handleSubmit = (values:any) => {
|
||||||
|
console.log('good', values)
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="w-full">
|
<div className="w-full">
|
||||||
|
|
||||||
<div className='my-[2rem] flex items-center'>
|
<div className='my-[2rem] flex items-center'>
|
||||||
<button onClick={navigateToProfile} className='w-6 h-6 text-lg flex justify-center items-center rounded-full bg-gray-500'><</button>
|
<button onClick={navigateToHome} className='py-2 px-4 text-lg text-white flex justify-center items-center bg-[#5C2684]'>< Back</button>
|
||||||
</div>
|
|
||||||
<div className="max-w-[25.875rem] w-full p-4 rounded-xl flex flex-col gap-1 bg-[#FBB700]/30">
|
|
||||||
<InputCompOne
|
|
||||||
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
|
|
||||||
name="applyIshInput"
|
|
||||||
label="Full name"
|
|
||||||
labelClass="font-bold text-[1.125rem]"
|
|
||||||
input
|
|
||||||
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
|
|
||||||
placeholder="John James"
|
|
||||||
/>
|
|
||||||
<InputCompOne
|
|
||||||
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
|
|
||||||
name="applyIshInput"
|
|
||||||
label="Phone number"
|
|
||||||
labelClass="font-bold text-[1.125rem]"
|
|
||||||
input
|
|
||||||
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
|
|
||||||
placeholder="07000000000"
|
|
||||||
/>
|
|
||||||
<InputCompOne
|
|
||||||
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
|
|
||||||
name="applyIshInput"
|
|
||||||
label="Residential address"
|
|
||||||
labelClass="font-bold text-[1.125rem]"
|
|
||||||
input
|
|
||||||
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
|
|
||||||
placeholder="Somewhere in lagos"
|
|
||||||
/>
|
|
||||||
<InputCompOne
|
|
||||||
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
|
|
||||||
name="applyIshInput"
|
|
||||||
label="Select your state"
|
|
||||||
labelClass="font-bold text-[1.125rem]"
|
|
||||||
input
|
|
||||||
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
|
|
||||||
placeholder="Lagos"
|
|
||||||
/>
|
|
||||||
<InputCompOne
|
|
||||||
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
|
|
||||||
name="applyIshInput"
|
|
||||||
label="Email address"
|
|
||||||
labelClass="font-bold text-[1.125rem]"
|
|
||||||
input
|
|
||||||
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
|
|
||||||
placeholder="johndoe@gmail.com"
|
|
||||||
/>
|
|
||||||
<InputCompOne
|
|
||||||
parentClass="max-w-[25.875rem] w-full flex flex-col gap-4"
|
|
||||||
name="applyIshInput"
|
|
||||||
label="Date of birth"
|
|
||||||
labelClass="font-bold text-[1.125rem]"
|
|
||||||
input
|
|
||||||
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
|
|
||||||
placeholder="12/10/1994"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<Formik
|
||||||
|
initialValues={initialValues}
|
||||||
|
validationSchema={validationSchema}
|
||||||
|
onSubmit={handleSubmit}
|
||||||
|
>
|
||||||
|
{(props)=>(
|
||||||
|
<Form>
|
||||||
|
<div className="flex flex-col lg:flex-row items-start gap-[2rem]">
|
||||||
|
<div className='w-full lg:max-w-[30rem] flex flex-col gap-[2rem]'>
|
||||||
|
<InputCompOne
|
||||||
|
parentClass="w-full"
|
||||||
|
name="firstname"
|
||||||
|
floatLabel="Firstname"
|
||||||
|
// labelClass="font-bold text-[1.125rem]"
|
||||||
|
input
|
||||||
|
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
|
||||||
|
placeholder="Mr. Mark John"
|
||||||
|
value={props.values.firstname}
|
||||||
|
onChange={props.handleChange}
|
||||||
|
// error={(props.errors.firstname && props.touched.firstname) ? props.errors.firstname : ''}
|
||||||
|
/>
|
||||||
|
<InputCompOne
|
||||||
|
parentClass="w-full"
|
||||||
|
name="internal_email"
|
||||||
|
floatLabel="Email"
|
||||||
|
// labelClass="font-bold text-[1.125rem]"
|
||||||
|
input
|
||||||
|
// disabled={true}
|
||||||
|
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
|
||||||
|
placeholder="Mr. Mark John"
|
||||||
|
value={props.values.internal_email}
|
||||||
|
onChange={props.handleChange}
|
||||||
|
// error={(props.errors.internal_email && props.touched.internal_email) ? props.errors.internal_email : ''}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className='w-full lg:max-w-[30rem] flex flex-col gap-[2rem]'>
|
||||||
|
<InputCompOne
|
||||||
|
parentClass="w-full"
|
||||||
|
name="lastname"
|
||||||
|
floatLabel="Lastname"
|
||||||
|
// labelClass="font-bold text-[1.125rem]"
|
||||||
|
input
|
||||||
|
// disabled={true}
|
||||||
|
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
|
||||||
|
placeholder="Mr. Mark John"
|
||||||
|
value={props.values.lastname}
|
||||||
|
onChange={props.handleChange}
|
||||||
|
// error={(props.errors.lastname && props.touched.lastname) ? props.errors.lastname : ''}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className='hidden w-full lg:max-w-[416px] flex flex-col gap-[2rem]'>
|
||||||
|
<div className="w-full">
|
||||||
|
<Button
|
||||||
|
className="my-4 btn-Y text-black w-full h-11"
|
||||||
|
text="Update"
|
||||||
|
type="submit"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Form>
|
||||||
|
)}
|
||||||
|
</Formik>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ interface Props<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default function PendingLoanPopout({data, action}:Props<PendingTableList>) {
|
export default function PendingLoanPopout({data, action}:Props<PendingTableList>) {
|
||||||
console.log('MUMU', data)
|
|
||||||
|
|
||||||
const [addCardStatus, setAddCardStatus] = useState<{
|
const [addCardStatus, setAddCardStatus] = useState<{
|
||||||
loading: boolean;
|
loading: boolean;
|
||||||
|
|||||||
@@ -59,9 +59,13 @@ export default function ReferenceDetails() {
|
|||||||
console.log(values)
|
console.log(values)
|
||||||
};
|
};
|
||||||
|
|
||||||
const [loanDetail, setLoanDetail] = useState<{loading:Boolean, data:any}>({
|
const [loanDetail, setLoanDetail] = useState<{loading:boolean, data:LoanDetail}>({
|
||||||
loading: true,
|
loading: true,
|
||||||
data: {},
|
data: {
|
||||||
|
loan_amount: '',
|
||||||
|
payment_month: '',
|
||||||
|
sales_agent: '',
|
||||||
|
},
|
||||||
})
|
})
|
||||||
useEffect(()=>{
|
useEffect(()=>{
|
||||||
if(!stateExist){
|
if(!stateExist){
|
||||||
@@ -72,11 +76,12 @@ export default function ReferenceDetails() {
|
|||||||
setLoanDetail({loading:false, data:res?.data?.loan})
|
setLoanDetail({loading:false, data:res?.data?.loan})
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
console.log(err)
|
console.log(err)
|
||||||
setLoanDetail({loading:false, data:{}})
|
setLoanDetail((prev:any) => ({...prev, loading:false}))
|
||||||
})
|
})
|
||||||
},[])
|
},[])
|
||||||
|
|
||||||
const formInitialValue:LoanDetail = (loanDetail.loading) ? initialValues : loanDetail?.data
|
// const formInitialValue:LoanDetail = (loanDetail.loading) ? initialValues : loanDetail?.data
|
||||||
|
const formInitialValue = (loanDetail.loading || Object.keys(loanDetail?.data)?.length < 1) ? initialValues : {...initialValues, ...loanDetail?.data}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@@ -1,5 +1,64 @@
|
|||||||
export default function Payment() {
|
import {useEffect, useState} from 'react'
|
||||||
return (
|
import { getPaymentDetails } from '../../core/apiRequest'
|
||||||
<div>Payment Page</div>
|
|
||||||
)
|
type Props = {
|
||||||
|
reference: string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// type PaymentPayloads = {
|
||||||
|
// uid?: string
|
||||||
|
// event?: string
|
||||||
|
// customer_code?: string
|
||||||
|
// plan_name?: string
|
||||||
|
// plan_code?: string
|
||||||
|
// subscription_code?: string | null,
|
||||||
|
// amount?: string
|
||||||
|
// authorization_code?: string
|
||||||
|
// gateway_response?: string
|
||||||
|
// gateway_status?: string
|
||||||
|
// reference?: string
|
||||||
|
// added?: string
|
||||||
|
// }
|
||||||
|
|
||||||
|
export default function Payment({reference}:Props) {
|
||||||
|
|
||||||
|
const [paymentDetails, setPaymentDetails] = useState<any>({
|
||||||
|
loading: true,
|
||||||
|
data: {}
|
||||||
|
})
|
||||||
|
|
||||||
|
useEffect(()=>{
|
||||||
|
getPaymentDetails({reference}).then(res => {
|
||||||
|
setPaymentDetails({loading:false, data:res?.data?.payment})
|
||||||
|
console.log(res?.data?.payment)
|
||||||
|
}).catch(err => {
|
||||||
|
setPaymentDetails({loading:false, data:{}})
|
||||||
|
console.log(err)
|
||||||
|
})
|
||||||
|
},[])
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className='w-full'>
|
||||||
|
<div className='p-4'>
|
||||||
|
<h1 className='p-2 mb-3 text-2xl'>Confirmation</h1>
|
||||||
|
<div className='p-8 w-full max-w-2xl bg-white shadow-md rounded-md'>
|
||||||
|
{paymentDetails.loading ?
|
||||||
|
<p>Loading...</p>
|
||||||
|
:
|
||||||
|
(paymentDetails?.data && Object.keys(paymentDetails?.data).length > 0) ?
|
||||||
|
<>
|
||||||
|
{Object.keys(paymentDetails?.data).map((item) => (
|
||||||
|
<div key={item} className='p-2 flex gap-1'>
|
||||||
|
<p className='w-64 font-semibold'>{item}</p>
|
||||||
|
<p className=''>{paymentDetails?.data[item]}</p>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</>
|
||||||
|
:
|
||||||
|
<p className='p-2'>No Payment Found!</p>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -67,6 +67,15 @@ export const getLoanDetail = (postData:any) => {
|
|||||||
return getAuxEnd(`/loan/loandetail?uid=${reqData?.uid}&application_uid=${reqData?.application_uid}`, null)
|
return getAuxEnd(`/loan/loandetail?uid=${reqData?.uid}&application_uid=${reqData?.application_uid}`, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FUNCTION TO GET PAYMENT DETAILS
|
||||||
|
export const getPaymentDetails = (postData:any) => {
|
||||||
|
let reqData = {
|
||||||
|
uid: localStorage.getItem('uid'),
|
||||||
|
...postData
|
||||||
|
}
|
||||||
|
return getAuxEnd(`/payment/status?uid=${reqData?.uid}&reference=${reqData?.reference}`, null)
|
||||||
|
}
|
||||||
|
|
||||||
// FUNCTION TO ADD CARD
|
// FUNCTION TO ADD CARD
|
||||||
export const addCard = (postData:any) => {
|
export const addCard = (postData:any) => {
|
||||||
let reqData = {
|
let reqData = {
|
||||||
|
|||||||
@@ -207,7 +207,7 @@ const asideLinks: AsideLinksType = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Reference Details',
|
name: 'Reference Details',
|
||||||
link: '/dashboard/payments',
|
link: "/dashboard/reference",
|
||||||
icon: 'dash-icon',
|
icon: 'dash-icon',
|
||||||
nestedLink: [],
|
nestedLink: [],
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import ReferenceDetails from "../components/Dashboard/referenceDetails/ReferenceDetails";
|
import ReferenceDetails from "../components/Dashboard/referenceDetails/ReferenceDetails";
|
||||||
|
|
||||||
export default function DashboardpaymentsPage() {
|
export default function DashboardReferencePage() {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<ReferenceDetails />
|
<ReferenceDetails />
|
||||||
@@ -9,7 +9,7 @@ export default function PaymentPage() {
|
|||||||
const queryParams = new URLSearchParams(location?.search);
|
const queryParams = new URLSearchParams(location?.search);
|
||||||
const trxRef = queryParams.get("trxref");
|
const trxRef = queryParams.get("trxref");
|
||||||
const reference = queryParams.get("reference");
|
const reference = queryParams.get("reference");
|
||||||
console.log('LOC', trxRef, reference)
|
// console.log('TEST', trxRef, reference)
|
||||||
|
|
||||||
useEffect(()=>{
|
useEffect(()=>{
|
||||||
if(!trxRef || !reference){
|
if(!trxRef || !reference){
|
||||||
@@ -18,7 +18,7 @@ export default function PaymentPage() {
|
|||||||
},[])
|
},[])
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Payment />
|
<Payment reference={reference} />
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -5,7 +5,7 @@ import DashboardHomePage from "./DashboardHomePage";
|
|||||||
import DashboardLegalsPage from "./DashboardLegalsPage";
|
import DashboardLegalsPage from "./DashboardLegalsPage";
|
||||||
import DashboardProfilePage from "./DashboardProfilePage";
|
import DashboardProfilePage from "./DashboardProfilePage";
|
||||||
import DashboardVerificationPage from "./DashboardVerificationPage";
|
import DashboardVerificationPage from "./DashboardVerificationPage";
|
||||||
import DashboardpaymentsPage from "./DashboardPaymentsPage";
|
import DashboardReferencePage from "./DashboardReferencePage";
|
||||||
import TermsAndConditionPage from "./TermsAndConditionPage";
|
import TermsAndConditionPage from "./TermsAndConditionPage";
|
||||||
import PersonalBankingPage from "./PersonalBankingPage";
|
import PersonalBankingPage from "./PersonalBankingPage";
|
||||||
import BusinessBankingPage from "./BusinessBankingPage";
|
import BusinessBankingPage from "./BusinessBankingPage";
|
||||||
@@ -21,7 +21,7 @@ export {
|
|||||||
DashboardLegalsPage,
|
DashboardLegalsPage,
|
||||||
DashboardProfilePage,
|
DashboardProfilePage,
|
||||||
DashboardVerificationPage,
|
DashboardVerificationPage,
|
||||||
DashboardpaymentsPage,
|
DashboardReferencePage,
|
||||||
TermsAndConditionPage,
|
TermsAndConditionPage,
|
||||||
PersonalBankingPage,
|
PersonalBankingPage,
|
||||||
BusinessBankingPage,
|
BusinessBankingPage,
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import {
|
|||||||
DashboardLegalsPage,
|
DashboardLegalsPage,
|
||||||
DashboardProfilePage,
|
DashboardProfilePage,
|
||||||
DashboardVerificationPage,
|
DashboardVerificationPage,
|
||||||
DashboardpaymentsPage,
|
DashboardReferencePage,
|
||||||
TermsAndConditionPage,
|
TermsAndConditionPage,
|
||||||
BusinessBankingPage,
|
BusinessBankingPage,
|
||||||
CooperateBankingPage,
|
CooperateBankingPage,
|
||||||
@@ -60,8 +60,8 @@ const Routers = () => {
|
|||||||
element={<DashboardVerificationPage />}
|
element={<DashboardVerificationPage />}
|
||||||
/>
|
/>
|
||||||
<Route
|
<Route
|
||||||
path={RouteHandler.dashboardPayments}
|
path={RouteHandler.dashboardReference}
|
||||||
element={<DashboardpaymentsPage />}
|
element={<DashboardReferencePage />}
|
||||||
/>
|
/>
|
||||||
<Route
|
<Route
|
||||||
path={RouteHandler.dashboardLegals}
|
path={RouteHandler.dashboardLegals}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ export class RouteHandler {
|
|||||||
static dashboardHome = "/dashboard/home";
|
static dashboardHome = "/dashboard/home";
|
||||||
static dashboardProfile = "/dashboard/profile";
|
static dashboardProfile = "/dashboard/profile";
|
||||||
static dashboardVerification = "/dashboard/verification";
|
static dashboardVerification = "/dashboard/verification";
|
||||||
static dashboardPayments = "/dashboard/payments";
|
static dashboardReference = "/dashboard/reference";
|
||||||
static dashboardLegals = "/dashboard/legals";
|
static dashboardLegals = "/dashboard/legals";
|
||||||
static termsAndConditions = "/terms-and-conditions";
|
static termsAndConditions = "/terms-and-conditions";
|
||||||
static paymentpage = "/payment";
|
static paymentpage = "/payment";
|
||||||
|
|||||||
Reference in New Issue
Block a user