From 0592a4c69111b1594dc1b06f62e8cba811023dea Mon Sep 17 00:00:00 2001 From: Gentille Ernestine Manirakiza <117815089+Gentille-dev@users.noreply.github.com> Date: Fri, 20 Oct 2023 16:03:59 +0300 Subject: [PATCH] fix admin dashboard (#328) --- src/Mutations/manageStudentMutations.tsx | 12 +- src/components/Calendar.tsx | 2 +- src/components/Docs/OthersDocs.tsx | 2 +- src/containers/DashRoutes.tsx | 9 +- src/containers/Routes.tsx | 2 +- src/pages/AdminDashboard.tsx | 7 +- src/pages/AdminTraineeDashboard.tsx | 331 +++++------------------ src/pages/InvitationConfirm.tsx | 2 +- src/pages/Organization/AdminLogin.tsx | 21 +- 9 files changed, 102 insertions(+), 286 deletions(-) diff --git a/src/Mutations/manageStudentMutations.tsx b/src/Mutations/manageStudentMutations.tsx index 7f0da0a3..d79cf9d5 100644 --- a/src/Mutations/manageStudentMutations.tsx +++ b/src/Mutations/manageStudentMutations.tsx @@ -1,7 +1,6 @@ // import { gql } from '@apollo/client'; import { gql, ApolloClient, InMemoryCache } from '@apollo/client'; -import GET_PROFILE from './User'; export const GET_USERS_QUERY = gql` query GetUsers($orgToken: String) { @@ -12,13 +11,6 @@ export const GET_USERS_QUERY = gql` } `; - export const DROP_TRAINEE = gql` - mutation DropTrainee($traineeId: String!, $reason: String!, $date: DateTime!) { - dropTrainee(traineeId: $traineeId, reason: $reason, date: $date) - } -`; - - export const GET_TRAINEES_QUERY = gql` query GetTrainees($orgToken: String) { getTrainees(orgToken: $orgToken) { @@ -71,8 +63,6 @@ export const GET_TRAINEES_QUERY = gql` } } `; - - export const GET_COHORT_TRAINEES_QUERY = gql` query GetCohortTrainees($cohort: String, $orgToken: String) { getCohortTrainees(cohort: $cohort, orgToken: $orgToken) { @@ -417,4 +407,4 @@ export const GET_TEAM_TRAINEE_QUERY = gql` } } } -`; +`; \ No newline at end of file diff --git a/src/components/Calendar.tsx b/src/components/Calendar.tsx index 28e1b079..c823c900 100644 --- a/src/components/Calendar.tsx +++ b/src/components/Calendar.tsx @@ -475,7 +475,7 @@ const Calendar = () => { }; /* istanbul ignore next */ - + const handleAddEvent = (e: any) => { e.preventDefault(); const updatedNewEvent = { diff --git a/src/components/Docs/OthersDocs.tsx b/src/components/Docs/OthersDocs.tsx index f8d81057..61bde822 100644 --- a/src/components/Docs/OthersDocs.tsx +++ b/src/components/Docs/OthersDocs.tsx @@ -408,4 +408,4 @@ function TraineeDocs() { ); } -export default TraineeDocs; +export default TraineeDocs; \ No newline at end of file diff --git a/src/containers/DashRoutes.tsx b/src/containers/DashRoutes.tsx index c77cb659..e1bee326 100644 --- a/src/containers/DashRoutes.tsx +++ b/src/containers/DashRoutes.tsx @@ -37,13 +37,12 @@ const AdminManageRoles = React.lazy( const AdminTraineeDashboard = React.lazy( () => import('../pages/AdminTraineeDashboard'), ); -const ViewTraineeRatings = React.lazy( - () => import('../pages/ratings/ViewTraineeRatings'), -); const TtlTraineeDashboard = React.lazy( () => import('../pages/ttlTraineeDashboard'), ); - +const ViewTraineeRatings = React.lazy( + () => import('../pages/ratings/ViewTraineeRatings'), +); const TraineeRatingDashboard = React.lazy( () => import('../pages/TraineeRatingDashboard'), ); @@ -166,4 +165,4 @@ function DashRoutes() { ); } -export default DashRoutes; +export default DashRoutes; \ No newline at end of file diff --git a/src/containers/Routes.tsx b/src/containers/Routes.tsx index c6369735..b5ee4839 100644 --- a/src/containers/Routes.tsx +++ b/src/containers/Routes.tsx @@ -101,4 +101,4 @@ function MainRoutes() { ); } -export default MainRoutes; +export default MainRoutes; \ No newline at end of file diff --git a/src/pages/AdminDashboard.tsx b/src/pages/AdminDashboard.tsx index b6c1112d..4fa21d81 100644 --- a/src/pages/AdminDashboard.tsx +++ b/src/pages/AdminDashboard.tsx @@ -23,6 +23,7 @@ function SupAdDashboard() { const inviteModel = () => { const newState = !inviteTraineeModel; setInviteTraineeModel(newState); + // this is true }; const [inviteUser] = useMutation(INVITE_USER_MUTATION, { @@ -137,7 +138,7 @@ function SupAdDashboard() {
{/*
*/} -
+ {/*
{user?.role === 'coordinator' || undefined ? ( '' ) : ( @@ -151,7 +152,7 @@ function SupAdDashboard() { {t('Invite an organization')} )} -
+
*/}
{/*
@@ -165,4 +166,4 @@ function SupAdDashboard() { ); } -export default SupAdDashboard; +export default SupAdDashboard; \ No newline at end of file diff --git a/src/pages/AdminTraineeDashboard.tsx b/src/pages/AdminTraineeDashboard.tsx index 516fa5f3..dfc701ec 100644 --- a/src/pages/AdminTraineeDashboard.tsx +++ b/src/pages/AdminTraineeDashboard.tsx @@ -23,7 +23,6 @@ import { GET_TRAINEES_QUERY, GET_COHORTS_QUERY, REMOVE_MEMBER_FROM_COHORT_MUTATION, - DROP_TRAINEE, EDIT_MEMBER_MUTATION, INVITE_USER_MUTATION, GET_TEAM_QUERY, @@ -57,20 +56,18 @@ function AdminTraineeDashboard() { const [traineeDetails, setTraineeDetails] = useState({}); const [selectedOption, setSelectedOption] = useState([]); const [selectedOptionUpdate, setSelectedOptionUpdate] = useState({}); - const [dropTraineeModel, setDropTraineeModel] = useState(false); - const [dropTraineeID, setdropTraineeID] = useState(''); const [selectedTeamOptionUpdate, setSelectedTeamOptionUpdate] = useState( {}, ); const [selectedTeamOption, setSelectedTeamOption] = useState([]); const [deleteEmail, setDeleteEmail] = useState(''); + const [deleteFromCohort, setDeleteFromCohort] = useState(''); const [editEmail, setEditEmail] = useState(''); const [editCohort, setEditCohort] = useState(''); const [editTeam, setEditTeam] = useState(''); const [inviteEmail, setInviteEmail] = useState(''); const [buttonLoading, setButtonLoading] = useState(false); const [toggle, setToggle] = useState(false); - const [showOptions, setShowOptions] = useState(false); const options: any = []; const teamsOptions: any = []; const traineeOptions: any = []; @@ -90,23 +87,9 @@ function AdminTraineeDashboard() { ); } - const [deleteFromCohort, setDeleteFromCohort] = useState(''); - //const [status, setStatus] = useState(row.original?.Status?.status); - // Define state variables to store reason and date - const [reason, setReason] = useState(''); - // const [date, setDate] = useState(''); - const currentDate = new Date().toISOString().split('T')[0]; // Get the current date - - // Function to handle the reason input change - const handleReasonChange = (event: { - target: { value: React.SetStateAction }; - }) => { - const newReason = event.target.value; - setReason(newReason); - }; - const [getGitHubStatistics] = useLazyQuery(GET_GITHUB_STATISTICS, { onCompleted: (data) => { + console.log(data); setGitHubStatistics(data.gitHubActivity); setIsLoaded(false); }, @@ -147,28 +130,6 @@ function AdminTraineeDashboard() { setRegisterTraineeModel(newState); }; - const dropModel = async (rowData: any) => { - const filteredUser = traineeData.filter( - (item: any) => item.email == rowData, - ); - if (filteredUser.length > 0) { - const user = filteredUser[0]; - if ( - user.profile && - user.profile.user && - user.profile.user.status && - user.profile.user.status.status - ) { - if (user.profile.user.status.status !== 'drop') { - let newState = !dropTraineeModel; - setDropTraineeModel(newState); - } else { - toast.success('Trainee is already dropped'); - } - } - } - }; - /* istanbul ignore next */ const removeEditModel = () => { const newState = !editTraineeModel; @@ -218,32 +179,24 @@ function AdminTraineeDashboard() { { Header: t('cohort'), accessor: 'cohort' }, { Header: t('program'), accessor: 'program' }, { - Header: t('Status'), - accessor: 'status', - - Cell: ({ row }: any) => { - return ( -
0 ? ' flex' : ' hidden') - } + Header: t('View'), + accessor: '', + Cell: ({ row }: any) => ( +
0 ? ' flex' : ' hidden') + } + > + -
- ); - }, + {t('View')} + +
+ ), }, { @@ -251,79 +204,55 @@ function AdminTraineeDashboard() { accessor: '', Cell: ({ row }: any) => (
0 ? ' flex' : ' hidden' }`} > - {showOptions ? ( - <> - { - setSelectedOptionUpdate({ - value: row.original.cohort, - label: row.original.cohort, - }); - setSelectedTeamOptionUpdate({ - value: row.original.team, - label: row.original.team, - }); - removeEditModel(); - setEditEmail(row.original.email); - setEditCohort(row.original.cohort); - setEditTeam(row.original.team); - }} - /> - { - removeTraineeMod(); - setDeleteEmail(row.original.email); - setDeleteFromCohort(row.original.team); - }} - /> - { - dropModel(row.original.email); - setdropTraineeID(row.original.userId); - setReason(row.original.reason); - }} - /> - handleClickOpen(row.original.email)} - /> - - ) : ( - setShowOptions(true)} - /> - )} + { + setSelectedOptionUpdate({ + value: row.original.cohort, + label: row.original.cohort, + }); + setSelectedTeamOptionUpdate({ + value: row.original.team, + label: row.original.team, + }); + removeEditModel(); + setEditEmail(row.original.email); + setEditCohort(row.original.cohort); + setEditTeam(row.original.team); + }} + /> + { + removeTraineeMod(); + setDeleteEmail(row.original.email); + setDeleteFromCohort(row.original.team); + }} + /> + + handleClickOpen(row.original.email)} + />
), }, @@ -375,7 +304,6 @@ function AdminTraineeDashboard() { }, }); } - /* istanbul ignore if */ if (traineeData && traineeData.length > 0) { @@ -383,12 +311,11 @@ function AdminTraineeDashboard() { datum[index] = {}; datum[index].name = data.profile ? data.profile.name : 'undefined'; datum[index].email = data.email; - datum[index].rating = '2'; + datum[index].rating = data?.ratings?.at(-1)?.average || 0; datum[index].team = data.team?.name; datum[index].cohort = data.team?.cohort?.name; datum[index].program = data.team?.cohort?.program?.name; datum[index].userId = data.profile?.user?.id; - datum[index].Status = data.profile?.user?.status; }); } @@ -439,34 +366,6 @@ function AdminTraineeDashboard() { }, }); - const [dropMemberFromCohort] = useMutation(DROP_TRAINEE, { - variables: { - traineeId: dropTraineeID, - reason: reason, - date: currentDate, - }, - onCompleted: (data) => { - setTimeout(() => { - setButtonLoading(false); - if (data.dropTrainee) { - // Check the response structure - refetch(); - toast.success('Trainee dropped successfully'); - setDropTraineeModel(false); - } else { - toast.error('Failed to drop trainee'); - } - }, 1000); - }, - onError: (err) => { - setTimeout(() => { - setButtonLoading(false); - console.error('Mutation error:', err); // Log the error - toast.error(err.message); - }, 500); - }, - }); - const [removeMemberFromCohort] = useMutation( REMOVE_MEMBER_FROM_COHORT_MUTATION, { @@ -579,8 +478,9 @@ function AdminTraineeDashboard() {
{/* =========================== End:: RemoveTraineeModel =============================== */} - {/* =========================== start:: deleteTraineeModel =============================== */} -
-
-
-

- {t('Drop Trainee')} -

-
-
-
-
- {/* ... (rest of your form) */} - - {/* Reason Field */} -
- - -
- - {/* Date Field */} -
- - -
- -
- - - -
-
-
-
-
- - {/* =========================== End:: deleteTraineeModel =============================== */} - {/* =========================== Start:: AddTraineeModel =============================== */}
{ userInput.orgToken = orgToken; + try { setLoading(true); const redirect = searchParams.get('redirect'); @@ -89,6 +90,24 @@ function AdminLogin() { } else { navigate('/dashboard'); } + /* istanbul ignore if */ + if (data.loginUser) { + //navigate to ${state},in case you want to make it default (/dashboard), + /* istanbul ignore next */ + { + data.loginUser.user.role === 'superAdmin' + ? navigate(`/organizations`) + : data.loginUser.user.role === 'admin' + ? navigate(`/trainees`) + : data.loginUser.user.role === 'coordinator' + ? navigate(`/trainees`) + : data.loginUser.user.role === 'manager' + ? navigate(`/coordinators`) + : navigate('/performance'); + } + } + /* istanbul ignore next */ + return; }, onError: (err) => { /* istanbul ignore next */ @@ -104,7 +123,7 @@ function AdminLogin() { } }, }); - } catch (error: any) { + } catch (error) { /* istanbul ignore next */ setError('password', { type: 'custom',