From e7d5527c90d67e3e2719fe84f90925aa8e3c8adc Mon Sep 17 00:00:00 2001
From: Nishant Kaushal <101548649+nishant0708@users.noreply.github.com>
Date: Wed, 10 Jul 2024 03:40:29 +0530
Subject: [PATCH] updated
---
public/index.html | 3 +-
server/controllers/feedbackController.js | 18 ++++++++++++
server/models/studentfeeback.js | 11 ++++++++
server/routes/student.js | 3 ++
src/pages/Login.jsx | 1 +
src/pages/MenuPage.jsx | 35 ++++++++++++++++++++++--
6 files changed, 66 insertions(+), 5 deletions(-)
create mode 100644 server/controllers/feedbackController.js
create mode 100644 server/models/studentfeeback.js
diff --git a/public/index.html b/public/index.html
index 8903439..65ac496 100644
--- a/public/index.html
+++ b/public/index.html
@@ -23,8 +23,7 @@
- \
-
+
diff --git a/server/controllers/feedbackController.js b/server/controllers/feedbackController.js
new file mode 100644
index 0000000..89f12f1
--- /dev/null
+++ b/server/controllers/feedbackController.js
@@ -0,0 +1,18 @@
+const asyncHandler = require('express-async-handler');
+const Feedback = require("../models/studentfeeback");
+
+const submitFeedback = asyncHandler(async (req, res) => {
+ const { message, canteenId ,userId} = req.body;
+
+
+ if (!message || !canteenId) {
+ res.status(400);
+ throw new Error('Message and Canteen ID are required');
+ }
+
+ const feedback = new Feedback({ message, canteenId, userId });
+ await feedback.save();
+ res.status(201).json({ message: 'Feedback submitted successfully' });
+});
+
+module.exports = { submitFeedback };
\ No newline at end of file
diff --git a/server/models/studentfeeback.js b/server/models/studentfeeback.js
new file mode 100644
index 0000000..248eba1
--- /dev/null
+++ b/server/models/studentfeeback.js
@@ -0,0 +1,11 @@
+const mongoose = require('mongoose');
+const Schema = mongoose.Schema;
+
+const studentfeedbackSchema = new Schema({
+ message: { type: String, required: true },
+ canteenId: { type: mongoose.Schema.Types.ObjectId, ref: 'Canteen', required: true },
+ userId: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true },
+ createdAt: { type: Date, default: Date.now }
+});
+
+module.exports = mongoose.model('StudentFeedback', studentfeedbackSchema );
diff --git a/server/routes/student.js b/server/routes/student.js
index d77e4c3..c127ddd 100644
--- a/server/routes/student.js
+++ b/server/routes/student.js
@@ -2,6 +2,7 @@ const express = require("express");
const { auth, studentAuth, isCanteen } = require("../middlewares/auth");
const router = express.Router();
const authController = require("../controllers/Auth");
+const feedbackController = require("../controllers/feedbackController");
router.post("/studentSignup", authController.studentSignup);
router.post("/studentLogin", authController.studentLogin);
@@ -12,6 +13,8 @@ router.get("/resetPassword/:id/:token", authController.verifyLink);
router.post("/newPassword/:id/:token", authController.resetPassword);
router.get("/studentLogout", studentAuth, authController.studentLogout);
router.get("/canteenLogout", auth, authController.canteenLogout);
+router.post('/submitFeedback', feedbackController.submitFeedback);
+
router.post(
"/changeStudentPassword",
studentAuth,
diff --git a/src/pages/Login.jsx b/src/pages/Login.jsx
index 46d5a4a..ea1129a 100644
--- a/src/pages/Login.jsx
+++ b/src/pages/Login.jsx
@@ -75,6 +75,7 @@ function Login() {
}
if (formData.accountType === "User") {
+ localStorage.setItem("userid", response?.data?.user?._id)
localStorage.setItem("usertoken", response.data.token)
window.location.href='/home'
diff --git a/src/pages/MenuPage.jsx b/src/pages/MenuPage.jsx
index bd4290d..5aa3965 100644
--- a/src/pages/MenuPage.jsx
+++ b/src/pages/MenuPage.jsx
@@ -9,6 +9,7 @@ import FoodCard from "../components/FoodCard";
import { ThemeContext } from '../themeContext';
+
const StarRating = ({ rating, onRatingChange }) => {
const [hoverRating, setHoverRating] = useState(0);
@@ -37,10 +38,38 @@ function MenuPage() {
const [dinner, setDinner] = useState([]);
const [selectedCategory, setSelectedCategory] = useState('breakfast');
const [feedback, setFeedback] = useState("");
+ const [studentfeedback, setstudentFeedback] = useState("");
const [loading, setLoading] = useState(false);
const [searchTerm, setSearchTerm] = useState("");
const [searchResults, setSearchResults] = useState([]);
const { theme, toggleTheme } = useContext(ThemeContext);
+ //feedbacks
+const handlestudentFeedbackSubmit = async () => {
+ if (studentfeedback.trim() === '') {
+ toast.error("Please provide your feedback before submitting.");
+ return;
+ }
+
+ const userId = localStorage.getItem('userid'); // Assuming the user ID is stored in local storage
+ const canteenId = _id; // Canteen ID from URL params
+
+ try {
+ await axios.post(`${process.env.REACT_APP_BASE_URL}/submitFeedback`, {
+ message: studentfeedback,
+ canteenId,
+ userId
+ }, {
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ });
+ setstudentFeedback('');
+ toast.success('Feedback Submitted!');
+ } catch (error) {
+ console.error('Error submitting feedback:', error);
+ toast.error('Failed to submit feedback. Please try again.');
+ }
+};
const getBreakfast = async () => {
try {
@@ -240,11 +269,11 @@ function MenuPage() {