Compare commits

...

4 Commits

Author SHA1 Message Date
Elias de5cb74241 restored logout 2024-05-15 19:00:39 +01:00
ameye c711e000b3 Merge branch 'route-update' of DigiFi/digifi-bko into master 2024-05-15 17:01:19 +00:00
victorAnumudu 0a28d478d8 correct loan route added 2024-05-15 17:41:41 +01:00
ameye 0d9318ddd9 Merge branch 'remove_extra_backoffice_menu' of DigiFi/digifi-bko into master 2024-05-15 08:55:29 +00:00
14 changed files with 200 additions and 75 deletions
@@ -60,13 +60,9 @@ const Navbar = () => {
data-kt-menu-attach="parent" data-kt-menu-attach="parent"
data-kt-menu-placement="bottom-end" data-kt-menu-placement="bottom-end"
> >
<img <img src={toAbsoluteUrl('media/avatars/300-3.jpg')} alt="" />
src={toAbsoluteUrl('media/avatars/300-3.jpg')}
alt=""
style={{ cursor: 'auto' }}
/>
</div> </div>
{/* <HeaderUserMenu /> */} <HeaderUserMenu />
</div> </div>
{config.app?.header?.default?.menu?.display && ( {config.app?.header?.default?.menu?.display && (
@@ -1,83 +1,82 @@
import { FC } from 'react';
import {FC} from 'react' import { Link } from 'react-router-dom';
import {Link} from 'react-router-dom' import { useAuth } from '../../../../app/modules/auth';
import {useAuth} from '../../../../app/modules/auth' import { Languages } from './Languages';
import {Languages} from './Languages' import { toAbsoluteUrl } from '../../../helpers';
import {toAbsoluteUrl} from '../../../helpers'
const HeaderUserMenu: FC = () => { const HeaderUserMenu: FC = () => {
const {currentUser, logout} = useAuth() const { currentUser, logout } = useAuth();
return ( return (
<div <div
className='menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-600 menu-state-bg menu-state-primary fw-bold py-4 fs-6 w-275px' className="menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-600 menu-state-bg menu-state-primary fw-bold py-4 fs-6 w-275px"
data-kt-menu='true' data-kt-menu="true"
> >
<div className='menu-item px-3'> <div className="menu-item px-3">
<div className='menu-content d-flex align-items-center px-3'> <div className="menu-content d-flex align-items-center px-3">
<div className='symbol symbol-50px me-5'> <div className="symbol symbol-50px me-5">
<img alt='Logo' src={toAbsoluteUrl('media/avatars/300-3.jpg')} /> <img alt="Logo" src={toAbsoluteUrl('media/avatars/300-3.jpg')} />
</div> </div>
<div className='d-flex flex-column'> <div className="d-flex flex-column">
<div className='fw-bolder d-flex align-items-center fs-5'> <div className="fw-bolder d-flex align-items-center fs-5">
{currentUser?.first_name} {currentUser?.first_name} {currentUser?.first_name} {currentUser?.first_name}
{/*<span className='badge badge-light-success fw-bolder fs-8 px-2 py-1 ms-2'>Pro</span>*/} {/*<span className='badge badge-light-success fw-bolder fs-8 px-2 py-1 ms-2'>Pro</span>*/}
</div> </div>
<a href='#' className='fw-bold text-muted text-hover-primary fs-7'> <a href="#" className="fw-bold text-muted text-hover-primary fs-7">
{currentUser?.email} {currentUser?.email}
</a> </a>
</div> </div>
</div> </div>
</div> </div>
<div className='separator my-2'></div> <div className="separator my-2"></div>
<div className='menu-item px-5'> {/* <div className='menu-item px-5'>
<Link to={'/crafted/pages/profile'} className='menu-link px-5'> <Link to={'/crafted/pages/profile'} className='menu-link px-5'>
My Profile My Profile
</Link> </Link>
</div> </div> */}
<div className='menu-item px-5'> {/* <div className='menu-item px-5'>
<a href='#' className='menu-link px-5'> <a href='#' className='menu-link px-5'>
<span className='menu-text'>My Projects</span> <span className='menu-text'>My Projects</span>
<span className='menu-badge'> <span className='menu-badge'>
<span className='badge badge-light-danger badge-circle fw-bolder fs-7'>3</span> <span className='badge badge-light-danger badge-circle fw-bolder fs-7'>3</span>
</span> </span>
</a> </a>
</div> </div> */}
<div <div
className='menu-item px-5' className="menu-item px-5"
data-kt-menu-trigger='hover' data-kt-menu-trigger="hover"
data-kt-menu-placement='left-start' data-kt-menu-placement="left-start"
data-kt-menu-flip='bottom' data-kt-menu-flip="bottom"
> >
<a href='#' className='menu-link px-5'> {/* <a href='#' className='menu-link px-5'>
<span className='menu-title'>My Subscription</span> <span className='menu-title'>My Subscription</span>
<span className='menu-arrow'></span> <span className='menu-arrow'></span>
</a> </a> */}
<div className='menu-sub menu-sub-dropdown w-175px py-4'> <div className="menu-sub menu-sub-dropdown w-175px py-4">
<div className='menu-item px-3'> {/* <div className='menu-item px-3'>
<a href='#' className='menu-link px-5'> <a href='#' className='menu-link px-5'>
Referrals Referrals
</a> </a>
</div> </div> */}
<div className='menu-item px-3'> {/* <div className='menu-item px-3'>
<a href='#' className='menu-link px-5'> <a href='#' className='menu-link px-5'>
Billing Billing
</a> </a>
</div> </div> */}
<div className='menu-item px-3'> {/* <div className='menu-item px-3'>
<a href='#' className='menu-link px-5'> <a href='#' className='menu-link px-5'>
Payments Payments
</a> </a>
</div> </div> */}
<div className='menu-item px-3'> {/* <div className='menu-item px-3'>
<a href='#' className='menu-link d-flex flex-stack px-5'> <a href='#' className='menu-link d-flex flex-stack px-5'>
Statements Statements
<i <i
@@ -86,11 +85,11 @@ const HeaderUserMenu: FC = () => {
title='View your statements' title='View your statements'
></i> ></i>
</a> </a>
</div> </div> */}
<div className='separator my-2'></div> <div className="separator my-2"></div>
<div className='menu-item px-3'> {/* <div className='menu-item px-3'>
<div className='menu-content px-3'> <div className='menu-content px-3'>
<label className='form-check form-switch form-check-custom form-check-solid'> <label className='form-check form-switch form-check-custom form-check-solid'>
<input <input
@@ -103,33 +102,33 @@ const HeaderUserMenu: FC = () => {
<span className='form-check-label text-muted fs-7'>Notifications</span> <span className='form-check-label text-muted fs-7'>Notifications</span>
</label> </label>
</div> </div>
</div> </div> */}
</div> </div>
</div> </div>
<div className='menu-item px-5'> {/* <div className='menu-item px-5'>
<a href='#' className='menu-link px-5'> <a href='#' className='menu-link px-5'>
My Statements My Statements
</a> </a>
</div> </div> */}
<div className='separator my-2'></div> <div className="separator my-2"></div>
<Languages /> {/* <Languages /> */}
<div className='menu-item px-5 my-1'> {/* <div className='menu-item px-5 my-1'>
<Link to='/crafted/account/settings' className='menu-link px-5'> <Link to='/crafted/account/settings' className='menu-link px-5'>
Account Settings Account Settings
</Link> </Link>
</div> </div> */}
<div className='menu-item px-5'> <div className="menu-item px-5">
<a onClick={logout} className='menu-link px-5'> <a onClick={logout} className="menu-link px-5">
Sign Out Sign Out
</a> </a>
</div> </div>
</div> </div>
) );
} };
export {HeaderUserMenu} export { HeaderUserMenu };
+43
View File
@@ -0,0 +1,43 @@
import { ID, Response } from "../../../../_digifi/helpers"
export type User = {
id?: ID
name?: string
avatar?: string
// email?: string
position?: string
role?: string
last_login?: string
two_steps?: boolean
joined_day?: string
online?: boolean
initials?: {
label: string
state: string
}
firstname?: string,
lastname?: string
uid?: string
loan_amount?: string
payment_month?: string
sales_agent?: string
gender?: string | null
marital_status?: string
email?: string
address?: string
state?: string
country?: string
status?: string
added?: string
updated?: string
}
export type UsersQueryResponse = Response<Array<User>>
export const initialUser: User = {
avatar: 'avatars/300-6.jpg',
position: 'Art Director',
role: 'Administrator',
name: '',
email: '',
}
+87
View File
@@ -0,0 +1,87 @@
import axios, { AxiosResponse } from "axios";
import { ID, Response } from "../../../../_digifi/helpers"
import { User, UsersQueryResponse } from "./_models";
const API_URL = import.meta.env.VITE_APP_THEME_API_URL;
const USER_URL = `${API_URL}/user`;
// const GET_USERS_URL = `${API_URL}/users/query`;
const NEW_USER_ENDPOINT = import.meta.env.VITE_APP_USER_ENDPOINT
// const getStartedUsers = (query: string): Promise<UsersQueryResponse> => {
// return axios
// .get(`${GET_USERS_URL}?${query}`)
// .then((d: AxiosResponse<UsersQueryResponse>) => d.data);
// };
const getStartedUsers = (query: string): Promise<UsersQueryResponse> => { // FUNCTION TO GET USERS THAT HAVE STARTED LOAN APPLICATION
return axios
.get(`${NEW_USER_ENDPOINT}/loan/started`)
.then((d: AxiosResponse<UsersQueryResponse>) => d.data);
};
const getRejectedUsers = (query: string): Promise<UsersQueryResponse> => { // FUNCTION TO GET USERS THAT HAVE REJECTED LOAN APPLICATION
return axios
.get(`${NEW_USER_ENDPOINT}/loan/rejected`)
.then((d: AxiosResponse<UsersQueryResponse>) => d.data);
};
const getPendingUsers = (query: string): Promise<UsersQueryResponse> => { // FUNCTION TO GET USERS THAT HAVE PENDING LOAN APPLICATION
return axios
.get(`${NEW_USER_ENDPOINT}/loan/pending`)
.then((d: AxiosResponse<UsersQueryResponse>) => d.data);
};
const getReadyUsers = (query: string): Promise<UsersQueryResponse> => { // FUNCTION TO GET USERS THAT HAVE READY LOAN APPLICATION
return axios
.get(`${NEW_USER_ENDPOINT}/loan/ready`)
.then((d: AxiosResponse<UsersQueryResponse>) => d.data);
};
const getApprovedUsers = (query: string): Promise<UsersQueryResponse> => { // FUNCTION TO GET USERS THAT HAVE APPROVED LOAN APPLICATION
return axios
.get(`${NEW_USER_ENDPOINT}/loan/approved`)
.then((d: AxiosResponse<UsersQueryResponse>) => d.data);
};
const getUserById = (id: ID): Promise<User | undefined> => {
return axios
.get(`${USER_URL}/${id}`)
.then((response: AxiosResponse<Response<User>>) => response.data)
.then((response: Response<User>) => response.data);
};
const createUser = (user: User): Promise<User | undefined> => {
return axios
.put(USER_URL, user)
.then((response: AxiosResponse<Response<User>>) => response.data)
.then((response: Response<User>) => response.data);
};
const updateUser = (user: User): Promise<User | undefined> => {
return axios
.post(`${USER_URL}/${user.id}`, user)
.then((response: AxiosResponse<Response<User>>) => response.data)
.then((response: Response<User>) => response.data);
};
const deleteUser = (userId: ID): Promise<void> => {
return axios.delete(`${USER_URL}/${userId}`).then(() => {});
};
const deleteSelectedUsers = (userIds: Array<ID>): Promise<void> => {
const requests = userIds.map((id) => axios.delete(`${USER_URL}/${id}`));
return axios.all(requests).then(() => {});
};
export {
getStartedUsers,
getRejectedUsers,
getPendingUsers,
getReadyUsers,
getApprovedUsers,
deleteUser,
deleteSelectedUsers,
getUserById,
createUser,
updateUser,
};
@@ -11,8 +11,8 @@ import {
stringifyRequestQuery, stringifyRequestQuery,
WithChildren, WithChildren,
} from '../../../../../../_digifi/helpers' } from '../../../../../../_digifi/helpers'
import {getStartedUsers} from './_requests' import {getApprovedUsers} from '../../../core/_requests'
import {User} from './_models' import {User} from '../../../core/_models'
import {useQueryRequest} from './QueryRequestProvider' import {useQueryRequest} from './QueryRequestProvider'
const QueryResponseContext = createResponseContext<User>(initialQueryResponse) const QueryResponseContext = createResponseContext<User>(initialQueryResponse)
@@ -34,7 +34,7 @@ const QueryResponseProvider: FC<WithChildren> = ({children}) => {
} = useQuery( } = useQuery(
`${QUERIES.USERS_LIST}-${query}`, `${QUERIES.USERS_LIST}-${query}`,
() => { () => {
return getStartedUsers(query) return getApprovedUsers(query)
}, },
{cacheTime: 0, keepPreviousData: true, refetchOnWindowFocus: false} {cacheTime: 0, keepPreviousData: true, refetchOnWindowFocus: false}
) )
@@ -4,7 +4,7 @@ import {CustomHeaderColumn} from './columns/CustomHeaderColumn'
import {CustomRow} from './columns/CustomRow' import {CustomRow} from './columns/CustomRow'
import {useQueryResponseData, useQueryResponseLoading} from '../core/QueryResponseProvider' import {useQueryResponseData, useQueryResponseLoading} from '../core/QueryResponseProvider'
import {usersColumns} from './columns/_columns' import {usersColumns} from './columns/_columns'
import {User} from '../core/_models' import {User} from '../../../core/_models'
import {UsersListLoading} from '../components/loading/UsersListLoading' import {UsersListLoading} from '../components/loading/UsersListLoading'
import {UsersListPagination} from '../components/pagination/UsersListPagination' import {UsersListPagination} from '../components/pagination/UsersListPagination'
import {KTCardBody} from '../../../../../../_digifi/helpers' import {KTCardBody} from '../../../../../../_digifi/helpers'
@@ -11,8 +11,8 @@ import {
stringifyRequestQuery, stringifyRequestQuery,
WithChildren, WithChildren,
} from '../../../../../../_digifi/helpers' } from '../../../../../../_digifi/helpers'
import {getStartedUsers} from './_requests' import {getPendingUsers} from '../../../core/_requests'
import {User} from './_models' import {User} from '../../../core/_models'
import {useQueryRequest} from './QueryRequestProvider' import {useQueryRequest} from './QueryRequestProvider'
const QueryResponseContext = createResponseContext<User>(initialQueryResponse) const QueryResponseContext = createResponseContext<User>(initialQueryResponse)
@@ -34,7 +34,7 @@ const QueryResponseProvider: FC<WithChildren> = ({children}) => {
} = useQuery( } = useQuery(
`${QUERIES.USERS_LIST}-${query}`, `${QUERIES.USERS_LIST}-${query}`,
() => { () => {
return getStartedUsers(query) return getPendingUsers(query)
}, },
{cacheTime: 0, keepPreviousData: true, refetchOnWindowFocus: false} {cacheTime: 0, keepPreviousData: true, refetchOnWindowFocus: false}
) )
@@ -4,7 +4,7 @@ import {CustomHeaderColumn} from './columns/CustomHeaderColumn'
import {CustomRow} from './columns/CustomRow' import {CustomRow} from './columns/CustomRow'
import {useQueryResponseData, useQueryResponseLoading} from '../core/QueryResponseProvider' import {useQueryResponseData, useQueryResponseLoading} from '../core/QueryResponseProvider'
import {usersColumns} from './columns/_columns' import {usersColumns} from './columns/_columns'
import {User} from '../core/_models' import {User} from '../../../core/_models'
import {UsersListLoading} from '../components/loading/UsersListLoading' import {UsersListLoading} from '../components/loading/UsersListLoading'
import {UsersListPagination} from '../components/pagination/UsersListPagination' import {UsersListPagination} from '../components/pagination/UsersListPagination'
import {KTCardBody} from '../../../../../../_digifi/helpers' import {KTCardBody} from '../../../../../../_digifi/helpers'
@@ -11,8 +11,8 @@ import {
stringifyRequestQuery, stringifyRequestQuery,
WithChildren, WithChildren,
} from '../../../../../../_digifi/helpers' } from '../../../../../../_digifi/helpers'
import {getStartedUsers} from './_requests' import {getReadyUsers} from '../../../core/_requests'
import {User} from './_models' import {User} from '../../../core/_models'
import {useQueryRequest} from './QueryRequestProvider' import {useQueryRequest} from './QueryRequestProvider'
const QueryResponseContext = createResponseContext<User>(initialQueryResponse) const QueryResponseContext = createResponseContext<User>(initialQueryResponse)
@@ -34,7 +34,7 @@ const QueryResponseProvider: FC<WithChildren> = ({children}) => {
} = useQuery( } = useQuery(
`${QUERIES.USERS_LIST}-${query}`, `${QUERIES.USERS_LIST}-${query}`,
() => { () => {
return getStartedUsers(query) return getReadyUsers(query)
}, },
{cacheTime: 0, keepPreviousData: true, refetchOnWindowFocus: false} {cacheTime: 0, keepPreviousData: true, refetchOnWindowFocus: false}
) )
@@ -4,7 +4,7 @@ import {CustomHeaderColumn} from './columns/CustomHeaderColumn'
import {CustomRow} from './columns/CustomRow' import {CustomRow} from './columns/CustomRow'
import {useQueryResponseData, useQueryResponseLoading} from '../core/QueryResponseProvider' import {useQueryResponseData, useQueryResponseLoading} from '../core/QueryResponseProvider'
import {usersColumns} from './columns/_columns' import {usersColumns} from './columns/_columns'
import {User} from '../core/_models' import {User} from '../../../core/_models'
import {UsersListLoading} from '../components/loading/UsersListLoading' import {UsersListLoading} from '../components/loading/UsersListLoading'
import {UsersListPagination} from '../components/pagination/UsersListPagination' import {UsersListPagination} from '../components/pagination/UsersListPagination'
import {KTCardBody} from '../../../../../../_digifi/helpers' import {KTCardBody} from '../../../../../../_digifi/helpers'
@@ -11,8 +11,8 @@ import {
stringifyRequestQuery, stringifyRequestQuery,
WithChildren, WithChildren,
} from '../../../../../../_digifi/helpers' } from '../../../../../../_digifi/helpers'
import {getStartedUsers} from './_requests' import {getRejectedUsers} from '../../../core/_requests'
import {User} from './_models' import {User} from '../../../core/_models'
import {useQueryRequest} from './QueryRequestProvider' import {useQueryRequest} from './QueryRequestProvider'
const QueryResponseContext = createResponseContext<User>(initialQueryResponse) const QueryResponseContext = createResponseContext<User>(initialQueryResponse)
@@ -34,7 +34,7 @@ const QueryResponseProvider: FC<WithChildren> = ({children}) => {
} = useQuery( } = useQuery(
`${QUERIES.USERS_LIST}-${query}`, `${QUERIES.USERS_LIST}-${query}`,
() => { () => {
return getStartedUsers(query) return getRejectedUsers(query)
}, },
{cacheTime: 0, keepPreviousData: true, refetchOnWindowFocus: false} {cacheTime: 0, keepPreviousData: true, refetchOnWindowFocus: false}
) )
@@ -4,7 +4,7 @@ import {CustomHeaderColumn} from './columns/CustomHeaderColumn'
import {CustomRow} from './columns/CustomRow' import {CustomRow} from './columns/CustomRow'
import {useQueryResponseData, useQueryResponseLoading} from '../core/QueryResponseProvider' import {useQueryResponseData, useQueryResponseLoading} from '../core/QueryResponseProvider'
import {usersColumns} from './columns/_columns' import {usersColumns} from './columns/_columns'
import {User} from '../core/_models' import {User} from '../../../core/_models'
import {UsersListLoading} from '../components/loading/UsersListLoading' import {UsersListLoading} from '../components/loading/UsersListLoading'
import {UsersListPagination} from '../components/pagination/UsersListPagination' import {UsersListPagination} from '../components/pagination/UsersListPagination'
import {KTCardBody} from '../../../../../../_digifi/helpers' import {KTCardBody} from '../../../../../../_digifi/helpers'
@@ -11,8 +11,8 @@ import {
stringifyRequestQuery, stringifyRequestQuery,
WithChildren, WithChildren,
} from '../../../../../../_digifi/helpers' } from '../../../../../../_digifi/helpers'
import {getStartedUsers} from './_requests' import {getStartedUsers} from '../../../core/_requests'
import {User} from './_models' import {User} from '../../../core/_models'
import {useQueryRequest} from './QueryRequestProvider' import {useQueryRequest} from './QueryRequestProvider'
const QueryResponseContext = createResponseContext<User>(initialQueryResponse) const QueryResponseContext = createResponseContext<User>(initialQueryResponse)
@@ -4,7 +4,7 @@ import {CustomHeaderColumn} from './columns/CustomHeaderColumn'
import {CustomRow} from './columns/CustomRow' import {CustomRow} from './columns/CustomRow'
import {useQueryResponseData, useQueryResponseLoading} from '../core/QueryResponseProvider' import {useQueryResponseData, useQueryResponseLoading} from '../core/QueryResponseProvider'
import {usersColumns} from './columns/_columns' import {usersColumns} from './columns/_columns'
import {User} from '../core/_models' import {User} from '../../../core/_models'
import {UsersListLoading} from '../components/loading/UsersListLoading' import {UsersListLoading} from '../components/loading/UsersListLoading'
import {UsersListPagination} from '../components/pagination/UsersListPagination' import {UsersListPagination} from '../components/pagination/UsersListPagination'
import {KTCardBody} from '../../../../../../_digifi/helpers' import {KTCardBody} from '../../../../../../_digifi/helpers'