Skip to content

Commit

Permalink
adding reviews sysytem
Browse files Browse the repository at this point in the history
  • Loading branch information
himanshusachan112 committed Oct 23, 2024
1 parent 2211054 commit 5fd5f8b
Show file tree
Hide file tree
Showing 9 changed files with 249 additions and 4 deletions.
23 changes: 22 additions & 1 deletion Backend/controllers/category.js
Original file line number Diff line number Diff line change
Expand Up @@ -89,4 +89,25 @@ catch(err){
})
}

}
}




exports.getcategories=async (req,res)=>{
try{
const data=await Category.find();
return res.json({
success:true,
message:"Fetched categories successfully",
data:data
})
}
catch(err){
return res.json({
success:false,
message:err.message
})
}
}

2 changes: 1 addition & 1 deletion Backend/controllers/conversation.js
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ exports.shedulemeet=async (req,res)=>{
const saveshedule=await Shedule.create({
requestid:requestid,
venue:venue,
date:date,
date:date,
time:time
})

Expand Down
180 changes: 180 additions & 0 deletions Backend/controllers/ratingandreviews.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
const Category = require("../models/Category");
const Product = require("../models/Product");
const User=require("../models/User");
const Ratingandreviews=require("../models/Ratingandreviews");


require("dotenv").config()

exports.createreview=async (req,res)=>{
try{
const {id,email}=req.user;
const {rating,comment,productid}=req.body;
if(!id || !email || !rating || !comment || !productid ){
return res.json({
success:false,
message:"All fields are required"
})
}

const user=await User.findById(id);
if(!user){
return res.json({
success:false,
message:"User Not Registered",
})
}

const ratedetails=await Ratingandreviews.create({
rating,
comment,
})

const userupdate=await User.findByIdAndUpdate(id,
{$push:{ratingandreviews:ratedetails._id}}
)

const productupdate=await Product.findByIdAndUpdate(productid,
{$push:{ratingandreviews:ratedetails._id}}
)
console.log("This is product update ",productupdate)

return res.json({
success:true,
message: "Review Created Successfully"
})


}
catch(err){
return res.json({
success:false,
message:err.message,
})
}
}


exports.deletereview=async (req,res)=>{
try{


const {id,email}=req.user;
const {reviewid, productid}=req.body;
if(!id || !email || !productid){
return res.json({
success:false,
message:"All fields are required"
})
}

const user=await User.findById(id);
if(!user){
return res.json({
success:false,
message:"User Not Registered",
})
}

const prodel=await Ratingandreviews.findByIdAndDelete(reviewid);

await User.findByIdAndUpdate(id,
{$pull:{ratingandreviews:prodel._id}}
)

await Product.findByIdAndUpdate(productid,
{$pull:{ratingandreviews:prodel._id}}
)

return res.json({
success:true,
message:"Deleted Review Successfully"
})




}
catch(err){
return res.json({
success:false,
message:err.message,
})
}
}





exports.getproductreviews=async (req,res)=>{
try{

const {productid}=req.body;
const data=await Product.findById(productid).populate("ratingandreviews");
return res.json({
success:true,
message:"Product reivews fetched successfully",
data:data
})

}
catch(err){
return res.json({
success:false,
message:err.message,
})
}
}



exports.getcategoryreviews=async (req,res)=>{
try{
const {cateid}=req.body;
const data=await Category.findById(cateid).populate({
path: 'products',
populate: {
path: 'ratingandreviews',
model: 'Ratingandreviews'
}
});

return res.json({
success:true,
message:"fetched category wise rating successfully",
data:data
})





}
catch(err){
return res.json({
success:false,
message:err.message,
})
}
}

exports.getuserreviews=async (req,res)=>{
try{
console.log('comming')
const {email}=req.body;
const data=await User.findOne({email:email}).populate("ratingandreviews");
return res.json({
success:true,
message:"User reviews fetched successfully",
data:data
})

}
catch(err){
return res.json({
success:false,
message:err.message,
})
}
}
2 changes: 2 additions & 0 deletions Backend/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ const productroutes=require("./routes/product");
const categoryroutes=require("./routes/category");
const conversationroutes=require("./routes/conversation");
const transactionroutes=require("./routes/checktransaction");
const ratingandreviewsroutes=require("./routes/ratingandreviews");
//
app.use(express.json())
app.use(cookieparser());
Expand All @@ -35,6 +36,7 @@ app.use("/api/v1/product",productroutes);
app.use("/api/v1/category",categoryroutes);
app.use("/api/v1/conversation",conversationroutes);
app.use("/api/v1/transaction",transactionroutes);
app.use("/api/v1/ratingandreviews", ratingandreviewsroutes);

//
app.get("/",(req,res)=>{
Expand Down
4 changes: 4 additions & 0 deletions Backend/models/Product.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ const productschema=new mongoose.Schema({
type:Date,
default:Date.now,
},
ratingandreviews:[{
type:mongoose.Schema.Types.ObjectId,
ref:"Ratingandreviews",
}],

})

Expand Down
16 changes: 16 additions & 0 deletions Backend/models/Ratingandreviews.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
const mongoose=require("mongoose");


const ratingandreivewsschema=new mongoose.Schema({
rating:{
type:Number,
required:true
},
comment:{
type:String,
required:true
},

});

module.exports=mongoose.model("Ratingandreviews",ratingandreivewsschema);
6 changes: 5 additions & 1 deletion Backend/models/User.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,11 @@ const userschema=new mongoose.Schema({
additionaldetails:{
type:mongoose.Schema.Types.ObjectId,
ref:"Profile",
}
},
ratingandreviews:[{
type:mongoose.Schema.Types.ObjectId,
ref:"Ratingandreviews",
}],
})

module.exports=mongoose.model("User",userschema);
3 changes: 2 additions & 1 deletion Backend/routes/category.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
const express=require("express");
const { createcategory,deletecategory} = require("../controllers/category");
const { createcategory,deletecategory,getcategories} = require("../controllers/category");
const {auth}=require("../middlewares/auth");

const router=express.Router();

router.post("/createcategory",auth,createcategory);
router.post("/deletecategory",auth,deletecategory);
router.post("/getcategories",getcategories);


module.exports = router
17 changes: 17 additions & 0 deletions Backend/routes/ratingandreviews.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
const express=require("express");
const router=express.Router();


const {auth}=require("../middlewares/auth");
const { createreview, getuserreviews,deletereview, getproductreviews, getcategoryreviews} = require("../controllers/ratingandreviews");



router.post("/createreview",auth,createreview);
router.post("/deletereview",auth,deletereview);
router.post("/getuserreviews",getuserreviews);
router.post("/getproductreviews",getproductreviews);
router.post("/getcategoryreviews",getcategoryreviews );


module.exports=router;

0 comments on commit 5fd5f8b

Please sign in to comment.