diff --git a/controllers/users.controller.js b/controllers/users.controller.js index 05a3fa8..aef8858 100644 --- a/controllers/users.controller.js +++ b/controllers/users.controller.js @@ -68,6 +68,17 @@ class UserController { return res.status(response.statusCode).json(response); } + // Reject user + static async reject(req, res) { + const { id } = req.params; + const approverId = req.user.user_id; + + const updatedUser = await UserService.rejectUser(id, approverId); + const response = await setResponse(updatedUser, 'User rejected successfully'); + + return res.status(response.statusCode).json(response); + } + // Soft delete user static async delete(req, res) { const { id } = req.params; diff --git a/routes/users.route.js b/routes/users.route.js index 388e567..2b7abbb 100644 --- a/routes/users.route.js +++ b/routes/users.route.js @@ -20,4 +20,7 @@ router.route('/change-password/:id') router.route('/:id/approve') .put(verifyToken.verifyAccessToken, verifyAccess(), UserController.approve); +router.route('/:id/reject') + .put(verifyToken.verifyAccessToken, verifyAccess(), UserController.reject); + module.exports = router; diff --git a/services/user.service.js b/services/user.service.js index dc187af..b5f25cd 100644 --- a/services/user.service.js +++ b/services/user.service.js @@ -6,6 +6,7 @@ const { createUserDb, updateUserDb, approveUserDb, + rejectUserDb, deleteUserDb, changeUserPasswordDb } = require('../db/user.db'); @@ -114,10 +115,14 @@ class UserService { throw new ErrorHandler(404, 'User not found'); } - if (existingUser.is_approve) { + if (existingUser.is_approve === 2) { throw new ErrorHandler(400, 'User is already approved'); } + if (existingUser.is_approve === 0) { + throw new ErrorHandler(400, 'User is already rejected'); + } + const updatedUser = await approveUserDb(userId, approverId); return updatedUser; } catch (error) { @@ -125,6 +130,33 @@ class UserService { } } + // Reject user + static async rejectUser(userId, approverId) { + try { + if (!userId) { + throw new ErrorHandler(400, 'User ID is required'); + } + + const existingUser = await getUserByIdDb(userId); + if (!existingUser) { + throw new ErrorHandler(404, 'User not found'); + } + + if (existingUser.is_approve === 2) { + throw new ErrorHandler(400, 'User is already approved'); + } + + if (existingUser.is_approve === 0) { + throw new ErrorHandler(400, 'User is already rejected'); + } + + const updatedUser = await rejectUserDb(userId, approverId); + return updatedUser; + } catch (error) { + throw new ErrorHandler(error.statusCode || 500, error.message); + } + } + // Soft delete user static async deleteUser(id, userId) { try {