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')}
-
-
-
-
-
-
-
- {/* =========================== 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',