diff --git a/src/RouteLinks.js b/src/RouteLinks.js index 2fda297..c51f845 100644 --- a/src/RouteLinks.js +++ b/src/RouteLinks.js @@ -4,7 +4,8 @@ const RouteLinks = { homePage: '/', usersPage: '/users', approvedLoans: '/loans/approved', - apply: '/loans/apply', + applyPage: '/loans/apply', + selectPage: '/loans/select', } export default RouteLinks \ No newline at end of file diff --git a/src/SiteRoutes.jsx b/src/SiteRoutes.jsx index a4cc89f..9142b3d 100644 --- a/src/SiteRoutes.jsx +++ b/src/SiteRoutes.jsx @@ -10,6 +10,7 @@ import HomePage from './pages/HomePage' // Home PAGE import UsersPage from './pages/UsersPage' // Users PAGE import ApprovedLoansPage from './pages/ApprovedLoansPage' // APPROVED LOANS PAGE import ApplyPage from './pages/ApplyPage' // APPLY LOANS PAGE +import SelectPage from './pages/SelectPage' // SELECT LOANS PAGE // const Home = lazy(() => import('./pages/Home')); @@ -23,7 +24,8 @@ export default function SiteRoutes() { } /> {`*/HOME PAGE*/`} } /> {`*/USERS PAGE*/`} } /> {`*/APPROVED LOANS PAGE*/`} - } /> {`*/APPLY LOANS PAGE*/`} + } /> {`*/APPLY LOANS PAGE*/`} + } /> {`*/SELECT LOANS PAGE*/`} {/* ERROR PAGE */} diff --git a/src/components/Icons.jsx b/src/components/Icons.jsx index 0daac3b..4716ec3 100644 --- a/src/components/Icons.jsx +++ b/src/components/Icons.jsx @@ -2,7 +2,7 @@ import React from 'react' import { AiFillProduct, AiOutlineDashboard } from 'react-icons/ai' import { FaRegMoneyBill1 } from 'react-icons/fa6' import { GoDotFill } from 'react-icons/go' -import { IoPeople } from 'react-icons/io5' +import { IoPeople, IoTrash } from 'react-icons/io5' export default function Icons({name, className}) { return ( @@ -17,6 +17,8 @@ export default function Icons({name, className}) { :name.toLowerCase() == 'product' ? + :name.toLowerCase() == 'trash' ? + : null } diff --git a/src/components/applyloancom/ApplyCom.jsx b/src/components/applyloancom/ApplyCom.jsx new file mode 100644 index 0000000..61828f7 --- /dev/null +++ b/src/components/applyloancom/ApplyCom.jsx @@ -0,0 +1,133 @@ +import React from 'react' +import { useQuery } from "@tanstack/react-query"; +import {Link} from 'react-router-dom' + +import BreadcrumbCom from '../breadcrumb/BreadcrumbCom' +import TableWrapper from '../tableWrapper/TableWrapper' +import Icons from '../Icons' + +import Avatar from '../../assets/user_avatar.jpg' +import queryKeys from '../../services/queryKeys' +import { applyLoan } from '../../services/siteServices' + +export default function ApplyCom() { + + const {data, isFetching, isError, error} = useQuery({ + queryKey: queryKeys.apply_loan, + queryFn: () => applyLoan() + }) + + console.log('data', data?.data) + // const appliedUsers = data?.data?.demo_data?.list // APPLY LOAN LIST + + return ( +
+ +

+ coming soon ... +

+ {isFetching ? + <> +
+

Loading...

+
+ + : isError ? +
+

{error.message}

+
+ : + + {({ data }) => ( + <> + + + + + + + + + + + + + {(data && data.length > 0) ? data?.map((item, index) => ( + + + + + + + + + )) + : + + + + } + +
+
+ + +
+
+ Name + + To + + From + + Ticket Number + + Action +
+
+ + +
+
+ Jese image +
+
{item?.name || ''}
+
{!item?.email || 'neil.sims@flowbite12345.com'}
+
+
+ {item?.to || ''} + +
+ {item?.from || ''} +
+
+
+ {item?.ticket || ''} +
+
+ {/* */} + {/* + + */} + {/* */} + {/* */} + + + +
+
+ No Record Found +
+
+ + )} +
+ } +
+ ) +} + + +const dummy = [ + {name:'ok'} +] \ No newline at end of file diff --git a/src/components/approvedloancom/ApprovedLoanCom.jsx b/src/components/approvedloancom/ApprovedLoanCom.jsx new file mode 100644 index 0000000..945d071 --- /dev/null +++ b/src/components/approvedloancom/ApprovedLoanCom.jsx @@ -0,0 +1,133 @@ +import React from 'react' +import { useQuery } from "@tanstack/react-query"; +import {Link} from 'react-router-dom' + +import BreadcrumbCom from '../breadcrumb/BreadcrumbCom' +import TableWrapper from '../tableWrapper/TableWrapper' +import Icons from '../Icons' + +import Avatar from '../../assets/user_avatar.jpg' +import queryKeys from '../../services/queryKeys' +import { applyLoan } from '../../services/siteServices' + +export default function ApprovedLoanCom() { + + const {data, isFetching, isError, error} = useQuery({ + queryKey: queryKeys.apply_loan, + queryFn: () => applyLoan() + }) + + console.log('data', data?.data) + // const approvedUsers = data?.data?.demo_data?.list // APPLY LOAN LIST + + return ( +
+ +

+ coming soon ... +

+ {isFetching ? + <> +
+

Loading...

+
+ + : isError ? +
+

{error.message}

+
+ : + + {({ data }) => ( + <> + + + + + + + + + + + + + {(data && data.length > 0) ? data?.map((item, index) => ( + + + + + + + + + )) + : + + + + } + +
+
+ + +
+
+ Name + + To + + From + + Ticket Number + + Action +
+
+ + +
+
+ Jese image +
+
{item?.name || ''}
+
{!item?.email || 'neil.sims@flowbite12345.com'}
+
+
+ {item?.to || ''} + +
+ {item?.from || ''} +
+
+
+ {item?.ticket || ''} +
+
+ {/* */} + {/* + + */} + {/* */} + {/* */} + + + +
+
+ No Record Found +
+
+ + )} +
+ } +
+ ) +} + + +const dummy = [ + {name:'ok'} +] \ No newline at end of file diff --git a/src/components/layouts/aside/DashboardAside.jsx b/src/components/layouts/aside/DashboardAside.jsx index bb397de..0fc85c0 100644 --- a/src/components/layouts/aside/DashboardAside.jsx +++ b/src/components/layouts/aside/DashboardAside.jsx @@ -93,8 +93,8 @@ export default function DashboardAside({shrinkAside=false}) { const asideNavLinks = [ {name:'Dashboard', status:1, icon: 'dashboard', to: RouteLinks.homePage}, {name:'Salary Loan', title:'Loan', status:1, icon: 'money', subLinks: [ - {name: 'Select', status:1, icon: 'dot', to: '#'}, - {name: 'Apply', status:1, icon: 'dot', to: RouteLinks.apply}, + {name: 'Select', status:1, icon: 'dot', to: RouteLinks.selectPage}, + {name: 'Apply', status:1, icon: 'dot', to: RouteLinks.applyPage}, {name: 'Approved', status:1, icon: 'dot', to: RouteLinks.approvedLoans}, {name: 'Payments', status:1, icon: 'dot', to: '#'}, {name: 'Configuration', status:1, icon: 'dot', to: '#'}, diff --git a/src/components/selectloancom/SelectLoanCom.jsx b/src/components/selectloancom/SelectLoanCom.jsx new file mode 100644 index 0000000..95afe99 --- /dev/null +++ b/src/components/selectloancom/SelectLoanCom.jsx @@ -0,0 +1,133 @@ +import React from 'react' +import { useQuery } from "@tanstack/react-query"; +import {Link} from 'react-router-dom' + +import BreadcrumbCom from '../breadcrumb/BreadcrumbCom' +import TableWrapper from '../tableWrapper/TableWrapper' +import Icons from '../Icons' + +import Avatar from '../../assets/user_avatar.jpg' +import queryKeys from '../../services/queryKeys' +import { applyLoan } from '../../services/siteServices' + +export default function SelectLoanCom() { + + const {data, isFetching, isError, error} = useQuery({ + queryKey: queryKeys.apply_loan, + queryFn: () => applyLoan() + }) + + console.log('data', data?.data) + // const selectLoanUsers = data?.data?.demo_data?.list // APPLY LOAN LIST + + return ( +
+ +

+ coming soon ... +

+ {isFetching ? + <> +
+

Loading...

+
+ + : isError ? +
+

{error.message}

+
+ : + + {({ data }) => ( + <> + + + + + + + + + + + + + {(data && data.length > 0) ? data?.map((item, index) => ( + + + + + + + + + )) + : + + + + } + +
+
+ + +
+
+ Name + + To + + From + + Ticket Number + + Action +
+
+ + +
+
+ Jese image +
+
{item?.name || ''}
+
{!item?.email || 'neil.sims@flowbite12345.com'}
+
+
+ {item?.to || ''} + +
+ {item?.from || ''} +
+
+
+ {item?.ticket || ''} +
+
+ {/* */} + {/* + + */} + {/* */} + {/* */} + + + +
+
+ No Record Found +
+
+ + )} +
+ } +
+ ) +} + + +const dummy = [ + {name:'ok'} +] \ No newline at end of file diff --git a/src/components/tableWrapper/TableWrapper.jsx b/src/components/tableWrapper/TableWrapper.jsx index f84b2ba..f51420f 100644 --- a/src/components/tableWrapper/TableWrapper.jsx +++ b/src/components/tableWrapper/TableWrapper.jsx @@ -90,13 +90,13 @@ export default function TableWrapper({ = data.length ? 'bg-sky-600/50 pointer-events-none' : 'bg-sky-600'} text-white-light`} + className={`${currentPage + numberOfSelection >= data.length ? 'bg-primary/50 pointer-events-none' : 'bg-primary'} text-white-light`} disabled={isLoading} /> diff --git a/src/pages/ApplyPage.jsx b/src/pages/ApplyPage.jsx index db5b57e..415ec1a 100644 --- a/src/pages/ApplyPage.jsx +++ b/src/pages/ApplyPage.jsx @@ -1,13 +1,8 @@ import React from 'react' -import BreadcrumbCom from '../components/breadcrumb/BreadcrumbCom' +import ApplyCom from '../components/applyloancom/ApplyCom' export default function ApplyPage() { return ( -
- -

- coming soon ... -

-
+ ) } diff --git a/src/pages/SelectPage.jsx b/src/pages/SelectPage.jsx new file mode 100644 index 0000000..e5b6fa0 --- /dev/null +++ b/src/pages/SelectPage.jsx @@ -0,0 +1,13 @@ +import React from 'react' +import BreadcrumbCom from '../components/breadcrumb/BreadcrumbCom' + +export default function SelectPage() { + return ( +
+ +

+ coming soon ... +

+
+ ) +} \ No newline at end of file diff --git a/src/services/queryKeys.js b/src/services/queryKeys.js index 1c6d36d..00a0ab9 100644 --- a/src/services/queryKeys.js +++ b/src/services/queryKeys.js @@ -1,5 +1,7 @@ const queryKeys = { - dummy: [''] + apply_loan: ['apply'], + select_loan: ['select-loan'], + approved_loan: ['approved-loan'], } export default queryKeys \ No newline at end of file diff --git a/src/services/siteServices.js b/src/services/siteServices.js index 6084d35..d064855 100644 --- a/src/services/siteServices.js +++ b/src/services/siteServices.js @@ -50,8 +50,20 @@ export const loginUser = (reqData) => { return postAuxEnd('/salary/login', postData, false) } -// FUNCTION TO GET DEMO USERS -export const demoUsersList = (reqData) => { +// FUNCTION TO GET APPLIED LOANS TABLE +export const applyLoan = (reqData) => { const postData = { ...reqData } - return getAuxEnd(`/salary/demousers`, postData) + return getAuxEnd(`/office/loan/apply`, postData) +} + +// FUNCTION TO GET APPLIED LOANS TABLE +export const selectLoan = (reqData) => { + const postData = { ...reqData } + return getAuxEnd(`/office/loan/select`, postData) +} + +// FUNCTION TO GET APPLIED LOANS TABLE +export const approvedLoan = (reqData) => { + const postData = { ...reqData } + return getAuxEnd(`/office/loan/approved`, postData) } \ No newline at end of file