const Review = require("../Model/reviewModel"); const AppError = require("../utils/appError"); const catchAsync = require("../utils/catchAsync"); exports.createReviewItem = catchAsync(async (req, res, next) => { const reviewItem = await Review.create({ name: req.body.name, text: req.body.text, email: req.body.email, blog: req.body.blog, }); res.status(201).json({ status: "success", data: reviewItem }); }); exports.getAllReviewItem = catchAsync(async (req, res, next) => { let data = await Review.find(); res.status(201).json({ status: "success", data, }); }); exports.getOneReviewItem = catchAsync(async (req, res, next) => { const data = await Review.findById(req.params.id); res.status(201).json({ status: "success", data, }); }); exports.changeOneReviewItem = catchAsync(async (req, res, next) => { const reviewItem = await Review.findById(req.params.id).select("email"); if (!req.body.email || reviewItem.email !== req.body.email) { return next( new AppError("Please provide correct email to amend the comment", 400) ); } let amendedData = {}; amendedData.name = req.body.name; amendedData.text = req.body.text; const data = await Review.findByIdAndUpdate(req.params.id, amendedData, { new: true, runValidators: true, }); res.status(201).json({ status: "success", data, }); }); exports.deleteOneReviewItem = catchAsync(async (req, res, next) => { const reviewItem = await Review.findById(req.params.id).select("email"); if (!req.body.email || reviewItem.email !== req.body.email) { return next( new AppError("Please provide correct email to amend the comment", 400) ); } await Review.findByIdAndDelete(req.params.id); res.status(201).json({ status: "success", data: null, }); });