diff --git a/package.json b/package.json index e33361c..33d7efb 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,8 @@ "version": "0.1.0", "private": true, "dependencies": { + "@emailjs/browser": "^4.3.3", + "@react-icons/all-files": "^4.1.0", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", @@ -12,7 +14,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-hot-toast": "^2.4.1", - "react-icons": "^4.11.0", + "react-icons": "^4.12.0", "react-icons-kit": "^2.0.0", "react-modal": "^3.16.1", "react-router-dom": "^6.16.0", diff --git a/public/c4.png b/public/c4.png new file mode 100644 index 0000000..1b66139 Binary files /dev/null and b/public/c4.png differ diff --git a/public/i9.png b/public/i9.png new file mode 100644 index 0000000..597b3c6 Binary files /dev/null and b/public/i9.png differ diff --git a/server/controllers/Auth.js b/server/controllers/Auth.js index c0dfabe..e3c2b95 100644 --- a/server/controllers/Auth.js +++ b/server/controllers/Auth.js @@ -3,6 +3,9 @@ const User = require("../models/studentLoginInfo"); const jwt = require("jsonwebtoken"); const Canteen = require("../models/canteenLoginInfo"); const Session = require("../models/session"); +<<<<<<< HEAD +const Contact = require('../models/Contact'); +======= const { forgotPasswordToken, verifyToken, @@ -10,6 +13,7 @@ const { findUserById, } = require("../utils/PasswordTokenAndUser"); const nodemailer = require("nodemailer"); +>>>>>>> upstream/main require("dotenv").config(); @@ -441,6 +445,26 @@ exports.changeCanteenPassword = async (req, res) => { }); }; +<<<<<<< HEAD + +//contactUs + +exports.saveContactMessage = async (req, res) => { + try { + const { name, email, message } = req.body; + if (!name || !email || !message) { + return res.status(400).send('All fields are required'); + } + const newContact = new Contact({ name, email, message }); + await newContact.save(); + res.status(201).send('Message received'); + } catch (error) { + console.error('Error saving message:', error.message, error); + res.status(500).send('Error saving message'); + } +}; + +======= // verify user for reset password exports.forgotPassword = async (req, res) => { try { @@ -578,3 +602,4 @@ exports.resetPassword = async (req, res) => { res.status(500).json("Some error occurred!"); } }; +>>>>>>> upstream/main diff --git a/server/models/Contact.js b/server/models/Contact.js new file mode 100644 index 0000000..b82aeb7 --- /dev/null +++ b/server/models/Contact.js @@ -0,0 +1,11 @@ +const mongoose = require('mongoose'); + +const contactSchema = new mongoose.Schema({ + name: { type: String, required: true }, + email: { type: String, required: true }, + message: { type: String, required: true }, +}); + +const Contact = mongoose.model('Contact', contactSchema); + +module.exports = Contact; diff --git a/server/routes/contactRoutes.js b/server/routes/contactRoutes.js new file mode 100644 index 0000000..c7fcc7e --- /dev/null +++ b/server/routes/contactRoutes.js @@ -0,0 +1,7 @@ +const express = require('express'); +const { saveContactMessage } = require('../controllers/Auth'); +const router = express.Router(); + +router.post('/', saveContactMessage); + +module.exports = router; diff --git a/server/server.js b/server/server.js index 62f7e99..6836f6c 100644 --- a/server/server.js +++ b/server/server.js @@ -4,6 +4,9 @@ const cors = require("cors"); var cookieParser = require("cookie-parser"); const PORT = process.env.PORT || 4000; const cloudinaryConfig = require("./config/cloudinaryConfig"); +const contactRoutes = require('./routes/contactRoutes'); +const bodyParser = require('body-parser'); + app.use( cors({ @@ -22,6 +25,7 @@ const uploadFileRouter = require("./routes/uploadFile"); app.use("/api/v1", canteenRoutes); app.use("/api/v1", studentRoutes); app.use("/api/v1", uploadFileRouter); +app.use('/api/contact', contactRoutes); app.listen(PORT, () => { console.log(`Server started succesfully at ${PORT}`); diff --git a/src/App.js b/src/App.js index cec5741..87fc149 100644 --- a/src/App.js +++ b/src/App.js @@ -14,9 +14,13 @@ import Loader from './components/Loader/Loader'; import ForgotPassword from './pages/ForgotPassword'; import ResetPassword from './pages/ResetPassword'; import { ThemeProvider } from './themeContext'; + +import ContactUs from './pages/ContactUs'; + import { AuthProvider } from './authContext' import EditProfile from './pages/EditProfile'; + const Layout = ({ children }) => { return (