diff --git a/src/components/projectStatus/ProjectTable.tsx b/src/components/projectStatus/ProjectTable.tsx index 0d814f3..44c6557 100644 --- a/src/components/projectStatus/ProjectTable.tsx +++ b/src/components/projectStatus/ProjectTable.tsx @@ -22,6 +22,11 @@ const columns = [ dataIndex: "deleteScore", key: "deleteScore", }, + { + title: "Delete Judge", + dataIndex: "deleteJudge", + key: "deleteJudge", + }, ]; type ProjectTableType = { diff --git a/src/components/projectStatus/ProjectTableContainer.tsx b/src/components/projectStatus/ProjectTableContainer.tsx index 45bb5f9..5ee9f7c 100644 --- a/src/components/projectStatus/ProjectTableContainer.tsx +++ b/src/components/projectStatus/ProjectTableContainer.tsx @@ -80,6 +80,28 @@ const ProjectTableContainer: React.FC = props => { } }; + const deleteJudge = async (judgeName: string, project: Project) => { + const ballotIds = project.ballots + .filter((ballot: Ballot) => ballot.user.name === judgeName) + .map((ballot: Ballot) => ballot.id); + + const ids = { ids: ballotIds }; + + try { + const response = await axios.delete(apiUrl(Service.EXPO, `/ballots/batch/delete`), { data: ids }); + + if (response.data.error) { + message.error(response.data.message, 2); + } else { + message.success(`Successfully deleted scores for judge ${judgeName}`, 2); + props.refetch(); + } + } catch (error) { + console.error("Error deleting judge:", error); + message.error("Error: Please ask for help", 2); + } + }; + const openModal = (values: any) => { setModalState({ visible: true, @@ -147,11 +169,24 @@ const ProjectTableContainer: React.FC = props => { ); + const deleteJudgeButton = ( + + ); + return { judge: e[0], total: e[1], editScore: editButton, deleteScore: deleteButton, + deleteJudge: deleteJudgeButton, }; }); @@ -160,6 +195,7 @@ const ProjectTableContainer: React.FC = props => { total: Math.round((total / newData.length) * 10) / 10, editScore: <>, deleteScore: <>, + deleteJudge: <>, }); return newData; };