Pull request
Plain TextAuthor: ahambridge
14 days ago │ 2,201 B
# Quiz Management – AJAX Question CRUD (PAIR PROGRAMMING EB+AH)
## Overview
This pull request introduces a fully interactive **Quiz Management** page for lecturers, allowing them to:
- View quiz metadata (Quiz Name, Subject, Created Date, Last Updated)
- View all questions in a structured Bootstrap table
- Add new questions via SweetAlert2 modal (AJAX)
- Edit existing questions via SweetAlert2 modal (AJAX)
- Delete questions via SweetAlert2 modal (AJAX)
- Automatically update `quiz.lastUpdated` via stored procedures
All database interactions have been refactored to use **stored procedures** to maintain consistency across the project.
---
## What’s Been Implemented
### Quiz Header Metadata
- Uses `GetQuizMetaByUUID`
- Displays:
- Quiz name
- Subject title
- Creation date
- Last updated date
### Question Table
- Uses `GetQuizQuestionsByID`
- Bootstrap styled
- Highlights correct answer (based on full-text match from `correctAnswer`)
- Displays difficulty points
- Scrollable container for better UX on large quizzes
### Add Question (AJAX + SweetAlert2)
- Uses `AddQuestion` procedure
- Validates:
- All fields required
- Correct answer must match one of A–D
- Points must be ≥ 1
- Updates `quiz.lastUpdated`
- Reloads view after successful insert
### Edit Question (AJAX + SweetAlert2)
- Uses:
- `GetQuestionByUUID`
- `EditQuestion`
- Pre-fills modal with existing data
- Updates `quiz.lastUpdated`
- Maintains correct answer mapping logic
### Delete Question (AJAX + SweetAlert2)
- Confirmation dialog
- Uses `DeleteQuestion`
- Removes row dynamically on success
- Updates `quiz.lastUpdated`
---
## Database Changes
New stored procedures added:
- `AddQuestion`
- `EditQuestion`
- `DeleteQuestion`
- `GetQuestionByUUID`
- `GetQuizMetaByUUID`
All procedures:
- Use UUIDs
- Return affected rows / new UUID where appropriate
- Keep logic consistent across operations
---
## Testing Notes
Tested:
- Add question
- Edit question
- Delete question
- Metadata updates (`lastUpdated`)
---
Please can you review the code as is, any suggestions will be appreciated.