7fife-backend/controllers/review.controller.js

137 lines
3.7 KiB
JavaScript
Raw Permalink Normal View History

2024-03-07 13:01:44 +00:00
const User = require('../models/user.model');
const Review = require('../models/Review.model');
const constant = require('../util/review.constant')
const createReview = async(req,res)=> {
try{
const user = await User.findById(req.userId);
let obj = {
userName : user.userName,
review : req.body.review ? req.body.review : undefined,
}
await Review.create(obj);
return res.status(200).send({
error_code : 200,
message :'Review got Created'
})
}catch(err){
console.log('Error inside createReview Controller',err);
return res.status(500).send({
error_code : 500,
message : 'Internal Server Error'
})
}
}
const getReview = async (req, res) => {
try {
let query = {};
let pageNumber = req.query.pageNumber || 1; // Default to page 1 if pageNumber is not provided
let pageSize = req.query.pageSize || 10; // Default page size to 10 if pageSize is not provided
if (req.query.userName) {
query.userName = req.query.userName;
}
const totalReviews = await Review.countDocuments(query);
const totalPages = Math.ceil(totalReviews / pageSize);
const reviews = await Review.find(query)
.skip((pageNumber - 1) * pageSize)
.limit(pageSize);
return res.status(200).send({
total_reviews: totalReviews,
total_pages: totalPages,
current_page: pageNumber,
reviews: constant.objectConverter(reviews)
});
} catch (err) {
console.log('Error inside getReview controller', err);
return res.status(500).send({
error_code: 500,
message: "Internal Server Error"
});
}
};
const updateReview = async(req,res) => {
try{
const review = await Review.findById(req.params.id);
let obj = {
reply : req.body.reply ? req.body.reply : undefined,
status : req.body.status? req.body.status :undefined
}
await review.updateOne(obj);
await review.save();
return res.status(201).send({
error_code : 200,
message : 'Review got updated'
})
}catch(err){
console.log('Error inside updateReview Controller',err);
res.status(500).send({
error_code : 500,
message : 'Internal Server Error'
})
}
}
const deletereview = async(req,res) => {
try{
let id = req.params.id;
await Review.deleteOne({_id :id});
return res.status(201).send({
error_code : 200,
message : 'review got deleted'
})
}catch(err){
console.log('Error Occured inside deletereview of Review Controller',err);
return res.status(500).send({
error_code : 500,
message : 'Internal Server Error'
})
}
}
const changeReviewStatus = async(req,res) =>{
try{
const { id}=req.params;
const review = await Review.findById(id);
if(!review){
return res.status(400).send({
error_code : 400,
message : 'Review not found'
})
}
review.status = review.status === 'publish'? 'unpublish' : 'publish';
await review.save();
return res.status(200).send({
error_code : 200,
message : 'Review status changed'
})
}catch(error){
return res.status(500).send({
error_code : 500,
message : 'Internal Server Error'
})
}
}
module.exports = {
createReview,
changeReviewStatus,
getReview,
updateReview,
deletereview
}