Compare commits

..

6 Commits

Author SHA1 Message Date
victorAnumudu 263c6740c5 fixed bug 2024-09-04 00:07:26 +01:00
victor.ebuka 07c1a8ae06 Merge branch 'error-fix' of DigiFi/digifi-www into master 2024-09-03 22:48:41 +00:00
victorAnumudu bc2167e67a build error fixed 2024-09-03 23:47:31 +01:00
ameye 4d6a7380bb Merge branch 'highest-education' of DigiFi/digifi-www into master 2024-09-03 17:00:09 +00:00
victorAnumudu b203c59ff7 highest education added 2024-09-03 17:57:38 +01:00
ameye fe2168ce53 Merge branch 'all-state-added' of DigiFi/digifi-www into master 2024-09-03 16:43:41 +00:00
9 changed files with 112 additions and 93 deletions
@@ -101,7 +101,7 @@ const DashboardHomeIntro: FC<DashboardHomeIntroProps> = ({
const [userLoanList, setUserLoanList] = useState<{
loading: boolean;
data: PendingTableList;
data: Array<PendingTableList>;
}>({ loading: true, data: [] });
useEffect(() => {
@@ -120,6 +120,7 @@ const DashboardHomeIntro: FC<DashboardHomeIntroProps> = ({
})
.catch((err) => {
setUserLoanList({ loading: false, data: [] });
console.log(err)
});
}, []);
@@ -1,4 +1,4 @@
import React, {useState} from 'react'
import {useState} from 'react'
import ModalWrapper from '../modal/ModalWrapper'
import { PendingTableList } from '../../core/models'
import { NewDateTimeFormatter } from '../../lib/NewDateTimeFormatter'
@@ -12,6 +12,7 @@ interface Props<T> {
}
export default function PendingLoanPopout({data, action}:Props<PendingTableList>) {
console.log('MUMU', data)
const [addCardStatus, setAddCardStatus] = useState<{
loading: boolean;
@@ -19,7 +20,7 @@ export default function PendingLoanPopout({data, action}:Props<PendingTableList>
msg: string
}>({ loading: false, status: false, msg: ''});
const handleAddCard = (appID:string) => {
const handleAddCard = (appID:string | undefined) => {
let reqData = {
application_uid: appID
@@ -8,9 +8,9 @@ import { getEmployer } from '../../../core/apiRequest';
import CustomSpinner from '../../CustomSpinner';
import { FormatAmount } from '../../../lib/FormatAmount';
type Props = {
handleNextStep?:(value:{})=>any
}
// type Props = {
// handleNextStep?:(value:{})=>any
// }
// type EmployerProps = {
// loading?: boolean,
@@ -87,7 +87,7 @@ const validationSchema = Yup.object().shape({
}),
});
export default function EmploymentDetail({handleNextStep}:Props) {
export default function EmploymentDetail() {
const [employerList, setEmployerList] = useState<any>({
loading: true,
@@ -96,21 +96,13 @@ export default function EmploymentDetail({handleNextStep}:Props) {
//FUNCTION TO HANDLE SUBMIT
const handleSubmit = (values:any) => {
// if(values.employer_uid){
// let employer_uid = values.employer_uid
// delete values.employer_uid
// handleNextStep({employer_uid, employment: values})
// }else{
// handleNextStep({employment: values})
// }
const handleSubmit = () => {
console.log('good')
};
useEffect(()=>{
getEmployer().then(res => {
setEmployerList({loading:false, data:res?.data?.employer})
// console.log('RES', res)
}).catch(err => {
console.log(err)
setEmployerList({loading:false, data:{}})
@@ -178,7 +170,7 @@ export default function EmploymentDetail({handleNextStep}:Props) {
placeholder="Mr. Mark John"
value={props.values.name}
onChange={props.handleChange}
error={(props.errors.name && props.touched.name) ? props.errors.name : ''}
// error={(props.errors.name && props.touched.name) ? props.errors.name : ''}
/>
<InputCompOne
parentClass="w-full"
@@ -191,7 +183,7 @@ export default function EmploymentDetail({handleNextStep}:Props) {
placeholder="example@gmail.com"
value={props.values.official_email}
onChange={props.handleChange}
error={(props.errors.official_email && props.touched.official_email) ? props.errors.official_email : ''}
// error={(props.errors.official_email && props.touched.official_email) ? props.errors.official_email : ''}
/>
<InputCompOne
parentClass="w-full"
@@ -204,7 +196,7 @@ export default function EmploymentDetail({handleNextStep}:Props) {
selectOptions={props.values.industry}
selectValue={props.values.industry}
onChange={props.handleChange}
error={(props.errors.industry && props.touched.industry) ? props.errors.industry : ''}
// error={(props.errors.industry && props.touched.industry) ? props.errors.industry : ''}
/>
<InputCompOne
parentClass="w-full"
@@ -217,7 +209,7 @@ export default function EmploymentDetail({handleNextStep}:Props) {
selectOptions={props.values.job_sector}
selectValue={props.values.job_sector}
onChange={props.handleChange}
error={(props.errors.job_sector && props.touched.job_sector) ? props.errors.job_sector : ''}
// error={(props.errors.job_sector && props.touched.job_sector) ? props.errors.job_sector : ''}
/>
</div>
</div>
@@ -234,7 +226,7 @@ export default function EmploymentDetail({handleNextStep}:Props) {
placeholder="Software Engineer"
value={props.values.job_title}
onChange={props.handleChange}
error={(props.errors.job_title && props.touched.job_title) ? props.errors.job_title : ''}
// error={(props.errors.job_title && props.touched.job_title) ? props.errors.job_title : ''}
/>
<InputCompOne
parentClass="w-full"
@@ -244,10 +236,10 @@ export default function EmploymentDetail({handleNextStep}:Props) {
select={true}
disabled={true}
selectClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
selectOptions={highestEductaion}
selectOptions={props.values.highest_eductaion}
selectValue={props.values.highest_eductaion}
onChange={props.handleChange}
error={(props.errors.highest_eductaion && props.touched.highest_eductaion) ? props.errors.highest_eductaion : ''}
// error={(props.errors.highest_eductaion && props.touched.highest_eductaion) ? props.errors.highest_eductaion : ''}
/>
<div className="w-full flex flex-col sm:flex-row items-center gap-4">
<InputCompOne
@@ -262,7 +254,7 @@ export default function EmploymentDetail({handleNextStep}:Props) {
placeholder="12/12/2015"
value={props.values.start_date}
onChange={props.handleChange}
error={(props.errors.start_date && props.touched.start_date) ? props.errors.start_date : ''}
// error={(props.errors.start_date && props.touched.start_date) ? props.errors.start_date : ''}
/>
<InputCompOne
parentClass="w-full"
@@ -276,7 +268,7 @@ export default function EmploymentDetail({handleNextStep}:Props) {
placeholder="30th of every month"
value={(props.values.salary_date)}
onChange={props.handleChange}
error={(props.errors.salary_date && props.touched.salary_date) ? props.errors.salary_date : ''}
// error={(props.errors.salary_date && props.touched.salary_date) ? props.errors.salary_date : ''}
/>
</div>
<div className="w-full flex flex-col sm:flex-row items-center gap-4">
@@ -291,7 +283,7 @@ export default function EmploymentDetail({handleNextStep}:Props) {
placeholder="1,200,000"
value={FormatAmount(props.values.annual_salary)}
onChange={props.handleChange}
error={(props.errors.annual_salary && props.touched.annual_salary) ? props.errors.annual_salary : ''}
// error={(props.errors.annual_salary && props.touched.annual_salary) ? props.errors.annual_salary : ''}
/>
<InputCompOne
parentClass="w-full"
@@ -304,7 +296,7 @@ export default function EmploymentDetail({handleNextStep}:Props) {
placeholder="100,000"
value={FormatAmount(props.values.net_montlty)}
onChange={props.handleChange}
error={(props.errors.net_montlty && props.touched.net_montlty) ? props.errors.net_montlty : ''}
// error={(props.errors.net_montlty && props.touched.net_montlty) ? props.errors.net_montlty : ''}
/>
</div>
<InputCompOne
@@ -318,7 +310,7 @@ export default function EmploymentDetail({handleNextStep}:Props) {
placeholder="LS/001/005"
value={props.values.employee_id}
onChange={props.handleChange}
error={(props.errors.employee_id && props.touched.employee_id) ? props.errors.employee_id : ''}
// error={(props.errors.employee_id && props.touched.employee_id) ? props.errors.employee_id : ''}
/>
<div className="hidden w-full">
<Button
@@ -341,33 +333,33 @@ export default function EmploymentDetail({handleNextStep}:Props) {
interface SelectOption {
loading: boolean;
data: {value: string;
label: string}[]
}
// interface SelectOption {
// loading: boolean;
// data: {value: string;
// label: string}[]
// }
const jobSector: SelectOption = {
loading: false,
data: [
{ value: "", label: "Please Select" },
{ value: "private (non academic)", label: "Private (non academic)" },
]
}
// const jobSector: SelectOption = {
// loading: false,
// data: [
// { value: "", label: "Please Select" },
// { value: "private (non academic)", label: "Private (non academic)" },
// ]
// }
const industry: SelectOption = {
loading: false,
data: [
{ value: "", label: "Please Select" },
{ value: "engineering", label: "Engineering" },
]
}
// const industry: SelectOption = {
// loading: false,
// data: [
// { value: "", label: "Please Select" },
// { value: "engineering", label: "Engineering" },
// ]
// }
const highestEductaion: SelectOption = {
loading: false,
data: [
{ value: "", label: "Please Select" },
{ value: "b.sc + professional qualification", label: "B.Sc + Professional Qualification" },
]
}
// const highestEductaion: SelectOption = {
// loading: false,
// data: [
// { value: "", label: "Please Select" },
// { value: "b.sc + professional qualification", label: "B.Sc + Professional Qualification" },
// ]
// }
@@ -7,6 +7,18 @@ import { RouteHandler } from '../../../router/routes';
import { getLoanDetail } from '../../../core/apiRequest';
import CustomSpinner from '../../CustomSpinner';
interface LoanDetail {
loan_amount: string;
payment_month: string;
sales_agent: string;
[key: string]: any; // to accommodate any additional properties
}
// interface InitialValues {
// loan_amount: string;
// payment_month: string;
// sales_agent: string;
// }
const initialValues = {
loan_amount: "",
@@ -29,36 +41,48 @@ const validationSchema = Yup.object().shape({
sales_agent: Yup.string()
});
type LocationState = {
application_uid: string
}
export default function ReferenceDetails() {
const location = useLocation()
const navigate = useNavigate()
const applicationUID = location?.state?.application_uid
// const applicationUID = location?.state?.application_uid
const stateExist = location?.state as LocationState
//FUNCTION TO HANDLE SUBMIT
const handleSubmit = (values:{}) => {
// handleNextStep(values)
console.log(values)
};
const [loanDetail, setLoanDetail] = useState<any>({
const [loanDetail, setLoanDetail] = useState<{loading:boolean, data:LoanDetail}>({
loading: true,
data: {}
data: {
loan_amount: '',
payment_month: '',
sales_agent: '',
},
})
useEffect(()=>{
if(!applicationUID){
navigate(RouteHandler.dashboardHome)
if(!stateExist){
navigate(RouteHandler.dashboardHome)
return
}
getLoanDetail({application_uid:applicationUID}).then(res => {
setLoanDetail({loading:false, data:res?.data?.loan})
getLoanDetail({application_uid:stateExist.application_uid}).then(res => {
setLoanDetail({loading:false, data:res?.data?.loan})
}).catch(err => {
console.log(err)
setLoanDetail({loading:false, data:{}})
setLoanDetail((prev:any) => ({...prev, loading:false}))
})
},[])
const formInitialValue = (loanDetail.loading || Object.keys(loanDetail?.data)?.length < 1) ? 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 (
<>
{loanDetail.loading ?
@@ -86,8 +110,9 @@ export default function ReferenceDetails() {
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem] text-right"
placeholder="350,000"
value={props.values.loan_amount}
disabled={true}
onChange={props.handleChange}
error={(props.errors.loan_amount && props.touched.loan_amount) ? props.errors.loan_amount : ''}
// error={(props.errors.loan_amount && props.touched.loan_amount) ? props.errors.loan_amount : ''}
/>
<InputCompOne
parentClass="w-full sm:max-w-[10rem] flex flex-col gap-4"
@@ -95,11 +120,12 @@ export default function ReferenceDetails() {
label="Months?"
labelClass="font-bold text-[1.125rem]"
select={true}
disabled={true}
selectClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
selectOptions={paymentMonth}
selectOptions={props.values.payment_month}
selectValue={props.values.payment_month}
onChange={props.handleChange}
error={(props.errors.payment_month && props.touched.payment_month) ? props.errors.payment_month : ''}
// error={(props.errors.payment_month && props.touched.payment_month) ? props.errors.payment_month : ''}
/>
<InputCompOne
parentClass="w-full sm:max-w-[10rem] flex flex-col gap-4"
@@ -108,11 +134,12 @@ export default function ReferenceDetails() {
labelClass="font-bold text-[1.125rem]"
floatLabel='Enter agent ID'
input
disabled={true}
inputClass="w-full h-[3.625rem] bg-[#EFEFEF] px-4 rounded-[.375rem]"
placeholder="Agent ID"
value={props.values.sales_agent}
onChange={props.handleChange}
error={(props.errors.sales_agent && props.touched.sales_agent) ? props.errors.sales_agent : ''}
// error={(props.errors.sales_agent && props.touched.sales_agent) ? props.errors.sales_agent : ''}
/>
</div>
<Button
@@ -130,20 +157,20 @@ export default function ReferenceDetails() {
);
}
interface SelectOption {
loading: boolean;
data: {value: string;
label: string}[]
}
// interface SelectOption {
// loading: boolean;
// data: {value: string;
// label: string}[]
// }
const paymentMonth: SelectOption = {
loading: false,
data: [
{ value: "", label: "Please Select" },
{ value: "6", label: "6 Months" },
{ value: "12", label: "12 Months" },
{ value: "18", label: "18 Months" },
{ value: "24", label: "24 Months" },
]
}
// const paymentMonth: SelectOption = {
// loading: false,
// data: [
// { value: "", label: "Please Select" },
// { value: "6", label: "6 Months" },
// { value: "12", label: "12 Months" },
// { value: "18", label: "18 Months" },
// { value: "24", label: "24 Months" },
// ]
// }
-2
View File
@@ -1,5 +1,3 @@
import React from 'react'
export default function Payment() {
return (
<div>Payment Page</div>
@@ -2,7 +2,7 @@ import { ReactNode, useEffect, useState } from "react";
import { PendingTableList } from "../../core/models";
type PaginatedListProps = {
data: PendingTableList,
data: Array<PendingTableList>,
itemsPerPage?: number,
filterItem?: string[],
tableTitle?: string,
@@ -28,12 +28,12 @@ export default function PendingList({
const handlePrev = () => {
if (currentPage != 0) {
setCurrentPage((prev) => prev - numberOfSelection);
setCurrentPage((prev:any) => prev - numberOfSelection);
}
};
const handleNext = () => {
if (currentPage < data.length) {
setCurrentPage((prev) => prev + numberOfSelection);
setCurrentPage((prev:any) => prev + numberOfSelection);
}
};
+3 -3
View File
@@ -17,7 +17,7 @@ export interface InputCompOneProps {
selectValue?: string;
input?: boolean;
select?: boolean;
selectOptions?: {loading:boolean, data:{ [index: string]: string; }[]};
selectOptions?: {loading:boolean, data:{ [index: string]: string; }[]} | any;
inputType?: string;
inputClass?: string;
parentInputClass?: string;
@@ -110,14 +110,14 @@ const InputCompOne = forwardRef<HTMLInputElement, InputCompOneProps>(
: selectOptions.data.length && name == 'employer_uid' ?
<>
<option value=''>Please Select</option>
{selectOptions.data.map(({ uid, name }) => (
{selectOptions.data.map(({ uid, name }:any) => (
<option key={uid} value={uid}>
{name}
</option>
))}
</>
: selectOptions.data.length && name != 'employer_uid' ?
selectOptions.data.map(({ value, label }) => (
selectOptions.data.map(({ value, label }:any) => (
<option key={value} value={value}>
{label}
</option>
+1 -1
View File
@@ -29,4 +29,4 @@ export type PendingTableList = {
button?: boolean
advise?: string
}
}[];
};
+1 -1
View File
@@ -1,4 +1,4 @@
import React, {useEffect} from 'react'
import {useEffect} from 'react'
import {useLocation, useNavigate} from 'react-router-dom'
import Payment from '../components/Payment/Payment'
import { RouteHandler } from '../router/routes'