forked from rohit/spurrin-backend
documents and views
This commit is contained in:
parent
7c8185b8f3
commit
150276ecb4
@ -447,3 +447,54 @@ exports.deleteDocument = async (req, res) => {
|
|||||||
res.status(500).json({ error: 'Internal server error' });
|
res.status(500).json({ error: 'Internal server error' });
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Update document views
|
||||||
|
exports.updateDocumentViews = async (req, res) => {
|
||||||
|
try {
|
||||||
|
const { id } = req.params;
|
||||||
|
const { views } = req.body;
|
||||||
|
|
||||||
|
if (!id) {
|
||||||
|
return res.status(400).json({ error: 'Document ID is required' });
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fetch the document to validate ownership
|
||||||
|
const documentQuery = 'SELECT * FROM documents WHERE id = ?';
|
||||||
|
const documentResult = await db.query(documentQuery, [id]);
|
||||||
|
|
||||||
|
if (documentResult.length === 0) {
|
||||||
|
return res.status(404).json({ error: 'Document not found' });
|
||||||
|
}
|
||||||
|
|
||||||
|
const document = documentResult[0];
|
||||||
|
|
||||||
|
// Authorization check (reuse delete logic)
|
||||||
|
if (!['Admin', 'Superadmin', 8, 7].includes(req.user.role)) {
|
||||||
|
return res.status(403).json({ error: 'You are not authorized to update document views' });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (req.user.hospital_id !== document.hospital_id) {
|
||||||
|
return res.status(403).json({ error: 'You are not authorized to update documents for this hospital' });
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update views (set to provided value or increment by 1 if not provided)
|
||||||
|
let updateQuery, updateParams;
|
||||||
|
if (typeof views === 'number') {
|
||||||
|
updateQuery = 'UPDATE documents SET views = ? WHERE id = ?';
|
||||||
|
updateParams = [views, id];
|
||||||
|
} else {
|
||||||
|
updateQuery = 'UPDATE documents SET views = views + 1 WHERE id = ?';
|
||||||
|
updateParams = [id];
|
||||||
|
}
|
||||||
|
const result = await db.query(updateQuery, updateParams);
|
||||||
|
|
||||||
|
if (result.affectedRows === 0) {
|
||||||
|
return res.status(404).json({ message: 'Document not found or no changes made' });
|
||||||
|
}
|
||||||
|
|
||||||
|
res.status(200).json({ message: 'Document views updated successfully!' });
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error updating document views:', error.message);
|
||||||
|
res.status(500).json({ error: 'Internal server error' });
|
||||||
|
}
|
||||||
|
};
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
const db = require('../../config/database');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
async up() {
|
||||||
|
// Add 'views' column as BIGINT, default 0
|
||||||
|
await db.query(`
|
||||||
|
ALTER TABLE documents
|
||||||
|
ADD COLUMN views BIGINT DEFAULT 0
|
||||||
|
`);
|
||||||
|
},
|
||||||
|
|
||||||
|
async down() {
|
||||||
|
// Remove 'views' column
|
||||||
|
await db.query(`
|
||||||
|
ALTER TABLE documents
|
||||||
|
DROP COLUMN views
|
||||||
|
`);
|
||||||
|
}
|
||||||
|
};
|
||||||
@ -58,6 +58,13 @@ router.put(
|
|||||||
documentController.updateDocumentStatus
|
documentController.updateDocumentStatus
|
||||||
);
|
);
|
||||||
|
|
||||||
|
router.put(
|
||||||
|
'/update-views/:id',
|
||||||
|
authMiddleware.authenticateToken,
|
||||||
|
roleMiddleware.authorizeRoles(['Superadmin', 'Admin',8,7]),
|
||||||
|
documentController.updateDocumentViews
|
||||||
|
);
|
||||||
|
|
||||||
router.delete(
|
router.delete(
|
||||||
'/delete/:id',
|
'/delete/:id',
|
||||||
authMiddleware.authenticateToken,
|
authMiddleware.authenticateToken,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user