137 lines
3.7 KiB
JavaScript
137 lines
3.7 KiB
JavaScript
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
|
|
|
|
} |