diff --git a/Backend/controllers/category.js b/Backend/controllers/category.js index 27618b3..febd5cc 100644 --- a/Backend/controllers/category.js +++ b/Backend/controllers/category.js @@ -89,4 +89,25 @@ catch(err){ }) } -} \ No newline at end of file +} + + + + +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 + }) + } +} + diff --git a/Backend/controllers/conversation.js b/Backend/controllers/conversation.js index cbd55f9..59b70a9 100644 --- a/Backend/controllers/conversation.js +++ b/Backend/controllers/conversation.js @@ -119,7 +119,7 @@ exports.shedulemeet=async (req,res)=>{ const saveshedule=await Shedule.create({ requestid:requestid, venue:venue, - date:date, + date:date, time:time }) diff --git a/Backend/controllers/ratingandreviews.js b/Backend/controllers/ratingandreviews.js new file mode 100644 index 0000000..07135dc --- /dev/null +++ b/Backend/controllers/ratingandreviews.js @@ -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, + }) + } +} \ No newline at end of file diff --git a/Backend/index.js b/Backend/index.js index 09c2c14..b022db5 100644 --- a/Backend/index.js +++ b/Backend/index.js @@ -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()); @@ -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)=>{ diff --git a/Backend/models/Product.js b/Backend/models/Product.js index 433bcb4..6adffdc 100644 --- a/Backend/models/Product.js +++ b/Backend/models/Product.js @@ -41,6 +41,10 @@ const productschema=new mongoose.Schema({ type:Date, default:Date.now, }, + ratingandreviews:[{ + type:mongoose.Schema.Types.ObjectId, + ref:"Ratingandreviews", + }], }) diff --git a/Backend/models/Ratingandreviews.js b/Backend/models/Ratingandreviews.js new file mode 100644 index 0000000..7c7771e --- /dev/null +++ b/Backend/models/Ratingandreviews.js @@ -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); \ No newline at end of file diff --git a/Backend/models/User.js b/Backend/models/User.js index 76a4117..99a695f 100644 --- a/Backend/models/User.js +++ b/Backend/models/User.js @@ -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); \ No newline at end of file diff --git a/Backend/routes/category.js b/Backend/routes/category.js index 4fea083..d95cfce 100644 --- a/Backend/routes/category.js +++ b/Backend/routes/category.js @@ -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 \ No newline at end of file diff --git a/Backend/routes/ratingandreviews.js b/Backend/routes/ratingandreviews.js new file mode 100644 index 0000000..e29c4ff --- /dev/null +++ b/Backend/routes/ratingandreviews.js @@ -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; \ No newline at end of file