diff --git a/checklist.txt b/checklist.txt index 75795e9..a4a268e 100644 --- a/checklist.txt +++ b/checklist.txt @@ -9,3 +9,7 @@ CREATE TABLE IF NOT EXISTS document_views ( ALTER TABLE interaction_logs ADD COLUMN is_flagged BOOLEAN DEFAULT FALSE; + +ALTER TABLE interaction_logs +ADD COLUMN report_text TEXT AFTER is_flagged; + diff --git a/src/config/initDatabase.js b/src/config/initDatabase.js index eaddc6e..8c64e32 100644 --- a/src/config/initDatabase.js +++ b/src/config/initDatabase.js @@ -221,7 +221,9 @@ async function initializeDatabase() { created_at TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, hospital_code VARCHAR(12) NOT NULL, PRIMARY KEY (id), - KEY session_id (session_id) + KEY session_id (session_id), + report_text TEXT + )`, // QA runtime cache table diff --git a/src/controllers/appUserController.js b/src/controllers/appUserController.js index a124773..30fb82d 100644 --- a/src/controllers/appUserController.js +++ b/src/controllers/appUserController.js @@ -224,7 +224,7 @@ WHERE app_user_id = ? AND session_id = ? AND id = ? message: 'Updated successfully', data: { app_user_id, - session_id + session_id }, }); } else { @@ -242,6 +242,55 @@ WHERE app_user_id = ? AND session_id = ? AND id = ? } }; +exports.addReportText = async (req, res) => { + try { + const { session_id, report_text } = req.body; + const app_user_id = req.user.id; + + // Validate input + if (!app_user_id || !session_id || typeof report_text !== 'string') { + return res.status(400).json({ + status: 'error', + message: 'app_user_id, session_id, logid, and report_text are required', + }); + } + + // Update query + const updateQuery = ` + UPDATE interaction_logs + SET report_text = ? + WHERE app_user_id = ? AND session_id = ? + `; + + // Execute update + const result = await db.query(updateQuery, [report_text, app_user_id, session_id]); + + // Handle response + if (result.affectedRows > 0) { + return res.status(200).json({ + status: 'success', + message: 'Session reported successfully. Admin will review your report', + data: { + app_user_id, + session_id, + report_text + }, + }); + } else { + return res.status(404).json({ + status: 'error', + message: 'No matching record found to update report text', + }); + } + } catch (error) { + console.error('Error updating report text:', error); + return res.status(500).json({ + status: 'error', + message: 'Internal server error', + }); + } +}; + exports.signup = async (req, res) => { try { diff --git a/src/routes/appUsers.js b/src/routes/appUsers.js index c5f9c24..5dfe4c3 100644 --- a/src/routes/appUsers.js +++ b/src/routes/appUsers.js @@ -162,4 +162,7 @@ router.put('/like', upload.none(), authMiddleware.authenticateToken, appUserCont router.put('/flag', upload.none(), authMiddleware.authenticateToken, appUserController.hitFlag); +router.post('/logs/add-report', authMiddleware.authenticateToken, appUserController.addReportText); + + module.exports = router; \ No newline at end of file