Skip to content

Commit

Permalink
Merge pull request #436 from nishant0708/feedback
Browse files Browse the repository at this point in the history
Feat:Want to Write Backend Of FeedBack Page Of Canteens #421
  • Loading branch information
hustlerZzZ authored Jul 15, 2024
2 parents 74a9c06 + cd32b65 commit 11723fe
Show file tree
Hide file tree
Showing 6 changed files with 65 additions and 4 deletions.
1 change: 0 additions & 1 deletion public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
<meta name="robots" content="index, follow" />
<meta name="googlebot" content="index, follow" />
<meta name="bingbot" content="index, follow" />

<!-- Open Graph -->
<meta property="og:type" content="website" />
<meta property="og:url" content="https://foodies-web-app.vercel.app/" />
Expand Down
18 changes: 18 additions & 0 deletions server/controllers/feedbackController.js
Original file line number Diff line number Diff line change
@@ -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 };
11 changes: 11 additions & 0 deletions server/models/studentfeeback.js
Original file line number Diff line number Diff line change
@@ -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 );
3 changes: 3 additions & 0 deletions server/routes/student.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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,
Expand Down
1 change: 1 addition & 0 deletions src/pages/Login.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -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'

Expand Down
35 changes: 32 additions & 3 deletions src/pages/MenuPage.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import FoodCard from "../components/FoodCard";
import { ThemeContext } from '../themeContext';



const StarRating = ({ rating, onRatingChange }) => {
const [hoverRating, setHoverRating] = useState(0);

Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -240,11 +269,11 @@ function MenuPage() {
<textarea
className="w-full h-32 p-4 border border-purple-300 rounded mb-4"
placeholder="Enter your feedback here..."
value={feedback}
onChange={(e) => setFeedback(e.target.value)}
value={studentfeedback}
onChange={(e) => setstudentFeedback(e.target.value)}
></textarea>
<button
onClick={handleFeedbackSubmit}
onClick={handlestudentFeedbackSubmit}
className="bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded"
>
Submit Feedback
Expand Down

0 comments on commit 11723fe

Please sign in to comment.