Fixed student deletion bug

main
jolatime 5 months ago
parent 9ba9f13576
commit 60e2e4cc99

@ -29,6 +29,7 @@ export class AdminProfileService {
}
async deleteUser(email: string): Promise<any> {
await this.deleteSubsFromStudent(email);
try {
const response = await fetch('api/users/DeleteStudent', {
method: 'POST',
@ -48,6 +49,26 @@ export class AdminProfileService {
}
}
async deleteSubsFromStudent(email: String): Promise<any> {
try {
const response = await fetch('api/submissions//DeleteSubsFromStudent', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ email: email })
});
if (!response.ok) {
throw new Error('Failed to delete flags');
}
return await response.json();
} catch (error) {
console.error('Error deleting flags:', error);
throw error;
}
}
async getContests(email: string): Promise<any> {
try {
const response = await fetch('api/contests/getContests', {

@ -10,6 +10,16 @@ export async function getSubmissions(userID, flagID){
});
}
export async function getUserSubmissions(userID){
return new Promise((resolve, reject) => {
const query = 'SELECT * FROM Submissions WHERE UserID = ?';
con.query(query, [userID], (err, result) => {
if(err) reject(err);
else resolve(result);
});
});
}
export async function insertSubmission(userID, flagID, isCorrect, attempts){
return new Promise((resolve, reject) => {
const query = 'INSERT INTO Submissions (UserID, FlagID, IsCorrect, Attempts) VALUES (?, ?, ?, ?)';
@ -40,6 +50,20 @@ export async function updateSubmissionAttempts(userID, flagID){
});
}
// delete flags attempts from submissions
export async function DeleteSubsFromStudent(userID) {
return new Promise((resolve, reject) => {
const query = 'DELETE FROM Submissions WHERE UserID = ?';
con.query(query, [userID], (err, result) => {
if (err) {
console.error(err.message);
return reject(err);
}
resolve(result);
});
});
}
// get all of the submissions
export async function getAllSubs() {
return new Promise((resolve,reject) => {

@ -14,7 +14,6 @@ export function getUserByEmail(table, email) {
});
}
// get all users from an AdminID
export async function getUsersFromAdmin(AdminID) {
return new Promise((resolve,reject) => {
@ -39,7 +38,6 @@ export async function setUserName(name, email){
});
}
export async function addStudent(name, email, password, admin){
return new Promise((resolve, reject) => {
const query = `INSERT INTO Users (Name, Email, Password, Flags, AdminID) VALUES (?,?,?,0,?)`;

@ -1,7 +1,7 @@
import { Router } from "express";
import { getFlagHash } from "../server.js"
import { getUserID } from "../queries/userQueries.js";
import { getSubmissions, insertSubmission, updateSubmissionAttempts, getAllSubs } from "../queries/submissionQueries.js";
import { getSubmissions, insertSubmission, updateSubmissionAttempts, getAllSubs, getUserSubmissions, DeleteSubsFromStudent} from "../queries/submissionQueries.js";
import { updateUserFlags } from "../queries/userQueries.js";
const router = Router();
@ -40,6 +40,21 @@ router.post('/checkFlagSubmission', async (req, res) => {
}
});
// delete all submissions from a specific user
router.post('/DeleteSubsFromStudent', async (req,res) => {
const { email } = req.body;
try{
const studentID = await getUserID(email);
const result = await DeleteSubsFromStudent(studentID);
if(result.affectedRows === 0)
return res.status(200).json({ success: true, message: "User had no submissions"});
return res.status(200).json({success: true});
} catch(err){
console.error("Error deleting submissions from student:", err.message);
return res.status(500).json({error: "COULD NOT DELETE Submissions"});
}
});
router.post('/checkPracSubmission', async (req, res) => {
const { email, flagID, submittedFlag } = req.body;
const correctFlag = getFlagHash(email, flagID);

Loading…
Cancel
Save