diff options
Diffstat (limited to 'admin/src/pages')
-rw-r--r-- | admin/src/pages/EnrollmentRequests/EnrollmentRequests.jsx (renamed from admin/src/pages/UnverifiedUsers/UnverifiedUsers.jsx) | 37 | ||||
-rw-r--r-- | admin/src/pages/EnrollmentRequests/EnrollmentRequests.module.css (renamed from admin/src/pages/UnverifiedUsers/UnverifiedUsers.module.css) | 0 | ||||
-rw-r--r-- | admin/src/pages/Home/Home.jsx | 14 | ||||
-rw-r--r-- | admin/src/pages/UpdateRequests/UpdateRequests.jsx | 72 | ||||
-rw-r--r-- | admin/src/pages/UpdateRequests/UpdateRequests.module.css | 21 |
5 files changed, 122 insertions, 22 deletions
diff --git a/admin/src/pages/UnverifiedUsers/UnverifiedUsers.jsx b/admin/src/pages/EnrollmentRequests/EnrollmentRequests.jsx index 0c3a57d..8423fc0 100644 --- a/admin/src/pages/UnverifiedUsers/UnverifiedUsers.jsx +++ b/admin/src/pages/EnrollmentRequests/EnrollmentRequests.jsx @@ -1,4 +1,4 @@ -import React, {useEffect} from 'react'; +import React from 'react'; import Accordion from '../../components/Accordion/Accordion'; import Button from '../../components/Button/Button'; import Header from '../../components/Header/Header'; @@ -8,29 +8,30 @@ import { updateUser, } from '../../services/apiservice'; import {useQuery, useMutation} from 'react-query'; +import {useNavigate} from 'react-router-dom'; +import BackButton from '../../components/BackButton/BackButton'; -import styles from './UnverifiedUsers.module.css'; -import Spinner from '../../components/Spinner/Spinner'; +import styles from './EnrollmentRequests.module.css'; -const UnverifiedUsers = () => { - const {data, isLoading, isError} = useQuery('unverified', getUnverifiedUsers); - const deleteUse = useMutation((id) => deleteUser(id)); - const updateUse = useMutation((id) => updateUser(id, {verified: true})); - - useEffect(() => {}, [data]); - - if (isLoading) { - return <Spinner heading='Admin' /> - } - - if (isError) { - return <div>Error</div> - } +const EnrollmentRequests = () => { + const navigate = useNavigate(); + const {data, refetch} = useQuery('unverified', getUnverifiedUsers); + const deleteUse = useMutation((id) => deleteUser(id), { + onSuccess: () => { + refetch(); + }, + }); + const updateUse = useMutation((id) => updateUser(id, {verified: true}), { + onSuccess: () => { + refetch(); + }, + }); return ( <div className={styles.unverified_users}> <Header subheading='Admin' /> + <BackButton onClick={() => navigate('/')} /> <h1 className={styles.unverified_users__heading}>Unverified Users</h1> <div className='accordion'> {data?.data.length !== 0 ? ( @@ -57,4 +58,4 @@ const UnverifiedUsers = () => { ); }; -export default UnverifiedUsers; +export default EnrollmentRequests; diff --git a/admin/src/pages/UnverifiedUsers/UnverifiedUsers.module.css b/admin/src/pages/EnrollmentRequests/EnrollmentRequests.module.css index 652fe52..652fe52 100644 --- a/admin/src/pages/UnverifiedUsers/UnverifiedUsers.module.css +++ b/admin/src/pages/EnrollmentRequests/EnrollmentRequests.module.css diff --git a/admin/src/pages/Home/Home.jsx b/admin/src/pages/Home/Home.jsx index b8d556e..bdc01c8 100644 --- a/admin/src/pages/Home/Home.jsx +++ b/admin/src/pages/Home/Home.jsx @@ -12,14 +12,20 @@ const Home = ({page, setPage}) => { <div className={styles.card__container}> <Link to='/verified'> <Card - title='Verified' + title='Verified Users' image={`${process.env.PUBLIC_URL}/assets/images/verified.svg`} /> </Link> - <Link to='/unverified'> + <Link to='/enrollment'> <Card - title='Unverified' - image={`${process.env.PUBLIC_URL}/assets/images/unverified.svg`} + title='Enrollment Requests' + image={`${process.env.PUBLIC_URL}/assets/images/enrollment.svg`} + /> + </Link> + <Link to='/update'> + <Card + title='Update Requests' + image={`${process.env.PUBLIC_URL}/assets/images/update.svg`} /> </Link> </div> diff --git a/admin/src/pages/UpdateRequests/UpdateRequests.jsx b/admin/src/pages/UpdateRequests/UpdateRequests.jsx new file mode 100644 index 0000000..174dbdc --- /dev/null +++ b/admin/src/pages/UpdateRequests/UpdateRequests.jsx @@ -0,0 +1,72 @@ +import React from 'react'; +import Accordion from '../../components/Accordion/Accordion'; +import Button from '../../components/Button/Button'; +import Header from '../../components/Header/Header'; +import { + deleteUser, + getUnverifiedUsers, + updateUser, +} from '../../services/apiservice'; +import {useQuery, useMutation} from 'react-query'; +import {useNavigate} from 'react-router-dom'; +import styles from './UpdateRequests.module.css'; +import BackButton from '../../components/BackButton/BackButton'; +import Spinner from '../../components/Spinner/Spinner'; + +const UpdateRequests = () => { + const navigate = useNavigate(); + const {data, isLoading, isError, refetch} = useQuery( + 'unverified', + getUnverifiedUsers + ); + const deleteUse = useMutation((id) => deleteUser(id), { + onSuccess: () => { + refetch(); + }, + }); + + const updateUse = useMutation((id) => updateUser(id, {verified: true}), { + onSuccess: () => { + refetch(); + }, + }); + + if (isLoading) { + return <Spinner heading='Admin' />; + } + + if (isError) { + return <div>Error</div>; + } + + return ( + <div className={styles.unverified_users}> + <Header subheading='Admin' /> + <BackButton onClick={() => navigate('/')} /> + <h1 className={styles.unverified_users__heading}>Unverified Users</h1> + <div className='accordion'> + {data?.data.length !== 0 ? ( + data?.data.map((item) => ( + <div className={styles.unverified_users__accordion} key={item._id}> + <Accordion name={item.name} user={item} /> + <Button + title='Accept' + color='green' + onClick={() => updateUse.mutate(item._id)} + /> + <Button + title='Reject' + color='red' + onClick={() => deleteUse.mutate(item._id)} + /> + </div> + )) + ) : ( + <div className={styles.unverified_users__nodata}>No Data Found</div> + )} + </div> + </div> + ); +}; + +export default UpdateRequests; diff --git a/admin/src/pages/UpdateRequests/UpdateRequests.module.css b/admin/src/pages/UpdateRequests/UpdateRequests.module.css new file mode 100644 index 0000000..652fe52 --- /dev/null +++ b/admin/src/pages/UpdateRequests/UpdateRequests.module.css @@ -0,0 +1,21 @@ +.unverified_users { + display: flex; + flex-direction: column; + justify-content: center; +} + +.unverified_users__heading { + text-align: center; +} + +.unverified_users__accordion { + display: flex; + justify-content: center; + align-items: center; + width: 80%; +} + +.unverified_users__nodata { + margin: 20px; + text-align: center; +} |