From f87d9892ca8c8b4ea0360802820d533fdac5e733 Mon Sep 17 00:00:00 2001 From: PAVAN KUMAR MARPU Date: Tue, 9 Jul 2024 19:59:12 +0530 Subject: [PATCH 1/7] Resolved Food item card issue --- src/pages/AddFoodItem.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/AddFoodItem.jsx b/src/pages/AddFoodItem.jsx index 8264ef8..33db00c 100644 --- a/src/pages/AddFoodItem.jsx +++ b/src/pages/AddFoodItem.jsx @@ -103,7 +103,7 @@ function AddFoodItem() { }; return ( -
+
Date: Tue, 9 Jul 2024 20:10:37 +0530 Subject: [PATCH 2/7] Contact page added in the footer --- src/components/Footer.jsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/components/Footer.jsx b/src/components/Footer.jsx index 45d5c69..5deba11 100644 --- a/src/components/Footer.jsx +++ b/src/components/Footer.jsx @@ -15,6 +15,9 @@ export default function Footer(){
  • News
  • +
  • + Contact +
  • © 2024-2025 Foodies™. All Rights Reserved.
    From ea88eff37c8f89d0414a7cf30c274130c85f7806 Mon Sep 17 00:00:00 2001 From: Nishant Kaushal <101548649+nishant0708@users.noreply.github.com> Date: Wed, 10 Jul 2024 02:41:49 +0530 Subject: [PATCH 3/7] Added proper_toast_message --- public/index.html | 2 +- src/pages/Login.jsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/index.html b/public/index.html index 8903439..d0539c2 100644 --- a/public/index.html +++ b/public/index.html @@ -23,7 +23,7 @@ - \ + diff --git a/src/pages/Login.jsx b/src/pages/Login.jsx index 46d5a4a..5d77583 100644 --- a/src/pages/Login.jsx +++ b/src/pages/Login.jsx @@ -90,7 +90,7 @@ function Login() { } catch (error) { console.error("This is error",error); - toast.error("Failed to login"); + toast.error(error?.response?.data?.message || "Can't Login for Now Please try again Later"); } } return ( 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 4/7] 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() {