diff --git a/backend-services/comment-service/src/controllers/Comment.ts b/backend-services/comment-service/src/controllers/Comment.ts index f34a73e9c17153fae920da8523f8c4fa6ec840dd..66b17ded12516609b15652abe1a3d208be2a25fa 100644 --- a/backend-services/comment-service/src/controllers/Comment.ts +++ b/backend-services/comment-service/src/controllers/Comment.ts @@ -150,6 +150,137 @@ const readAllComments = async (req: Request, res: Response, next: NextFunction) } -export default { createComment, readAllComments} +const toggleLike = async ( req: Request, res: Response, next: NextFunction,) => { + + + + const { _id, user_id, } = req.body; + + + + if (_id == null || _id === 'undefined') { + return res.status(400).send({ message: 'Bad Request' }); + } + + if (user_id == null || user_id === 'undefined') { + return res.status(400).send({ message: 'Bad Request' }); + } + + + + + + /* + const query = {_id : new mongoose.Types.ObjectId(_id)}; + const comment = await Comment.findOne(query) + + + + + + try{ + + if (!comment?.users_liked.length) { + let update = {$push: {users_liked : [user_id]}}; + await Comment.findOneAndUpdate(query, update); + } + else{ + let likedByUser = false + for (var val of comment.users_liked) { + if(val == user_id){ + console.log("Already Liked") + likedByUser = true + } + } + if(likedByUser){ + let update = {$pull: {users_liked : user_id}}; + console.log("Removed Like"); + Comment.findOneAndUpdate(query, update); + await Comment.findOneAndUpdate(query, update); + + }else{ + let update = {$push: {users_liked : [user_id]}}; + console.log("Added Like"); + await Comment.findOneAndUpdate(query, update); + } + } + + + + } + catch{ + Logging.error("Incorrect") + } + */ + + + const token = req.headers.authorization?.split(' ')[1]; + if (!token) { + return res.status(401).send({ message: 'Unauthorised' }); + } + + + + try { + const decodedToken = jwt.verify(token, config.server.token.secret ); + const decodeTokenToString = decodedToken; + const tokenString = JSON.stringify(decodeTokenToString); + const JSobj = JSON.parse(tokenString).user_id; + + if(JSobj == user_id){ + const query = {_id : new mongoose.Types.ObjectId(_id)}; + const comment = await Comment.findOne(query) + try{ + + if (!comment?.users_liked.length) { + console.log(!comment?.users_liked.length) + let update = {$push: {users_liked : [user_id]}}; + await Comment.findOneAndUpdate(query, update); + return res.status(201).send({ message: 'Likes Updated'}); + } + else{ + let likedByUser = false + for (var val of comment.users_liked) { + if(val == user_id){ + console.log("Already Liked") + likedByUser = true + } + } + if(likedByUser){ + let update = {$pull: {users_liked : user_id}}; + console.log("Removed Like"); + Comment.findOneAndUpdate(query, update); + await Comment.findOneAndUpdate(query, update); + return res.status(201).send({ message: 'Likes Updated'}); + + }else{ + let update = {$push: {users_liked : [user_id]}}; + console.log("Added Like"); + await Comment.findOneAndUpdate(query, update); + return res.status(201).send({ message: 'Likes Updated'}); + } + } + + + + } + catch{ + Logging.error("Incorrect") + return res.status(400).send({message: 'Bad Request'}) + } + + } + else{ + return res.status(401).send({ message: 'Unauthorised' }); + } + + + } catch (error) { + return res.status(400).send({ message: 'Bad Request' }); + } + +}; + +export default { createComment, readAllComments, toggleLike} diff --git a/backend-services/comment-service/src/routes/Comment.ts b/backend-services/comment-service/src/routes/Comment.ts index 4078f4ca92e2a12e7a910f32c9067e8b40a1d10c..e681275b4c6fdb7aae3c4128599c10dfa3a82c01 100644 --- a/backend-services/comment-service/src/routes/Comment.ts +++ b/backend-services/comment-service/src/routes/Comment.ts @@ -4,6 +4,8 @@ import controller from '../controllers/Comment'; const router = express.Router(); router.post('/create', controller.createComment); +router.put('/toggle-like', controller.toggleLike); + router.get('/:post_id', controller.readAllComments); router.get('/', controller.readAllComments); export = router;