diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..7b0bb32
Binary files /dev/null and b/.DS_Store differ
diff --git a/.gitignore b/.gitignore
index b512c09..f2c50db 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
-node_modules
\ No newline at end of file
+node_modules
+uploads
\ No newline at end of file
diff --git a/addEvent.html b/addEvent.html
index 6de17d1..025072e 100644
--- a/addEvent.html
+++ b/addEvent.html
@@ -102,6 +102,23 @@
Event Calendar
+
+
+
+
+
+ Review Management
+
+
+
+
+
+
+
+
@@ -130,6 +147,7 @@
Manage Feedback
+
diff --git a/addreview.html b/addreview.html
new file mode 100644
index 0000000..293b06f
--- /dev/null
+++ b/addreview.html
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+
+
+ Dashboard - SB Admin
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Review Management
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/controllers/addeventsController.js b/controllers/addeventsController.js
index 87451c6..bb2b778 100644
--- a/controllers/addeventsController.js
+++ b/controllers/addeventsController.js
@@ -1,21 +1,87 @@
const addeventsModel = require('../models/addeventsModel');
+// const addEvent = (req, res) => {
+// // Check if user is authenticated
+// if (!req.session.userId) {
+// return res.status(401).json({ message: 'Unauthorized: Please log in to add events' });
+// }
+
+// let event = req.body;
+// event.userId = req.session.userId; // Associate event with the logged-in user
+
+// addeventsModel.createEvent(event, (err, result) => {
+// if (err) {
+// res.status(500).json({ message: 'Error adding event' });
+// } else {
+// res.status(201).json({ message: 'Event added successfully' });
+// }
+// });
+// };
+
+// module.exports = { addEvent };
+
+const multer = require('multer');
+const path = require('path');
+
+// Configure Multer for file storage
+const storage = multer.diskStorage({
+ destination: './uploads/', // Directory where files will be stored
+ filename: (req, file, cb) => {
+ cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname));
+ },
+});
+
+// Initialize Multer middleware
+const upload = multer({
+ storage: storage,
+ limits: { fileSize: 5 * 1024 * 1024 }, // Limit file size to 5MB
+ fileFilter: (req, file, cb) => {
+ const filetypes = /jpeg|jpg|png|gif/;
+ const extname = filetypes.test(path.extname(file.originalname).toLowerCase());
+ const mimetype = filetypes.test(file.mimetype);
+
+ if (mimetype && extname) {
+ return cb(null, true);
+ } else {
+ cb('Error: Only images are allowed');
+ }
+ },
+}).single('eventPhoto'); // 'eventPhoto' is the name of the file input field
+
+// Add Event Controller with image upload
const addEvent = (req, res) => {
- // Check if user is authenticated
- if (!req.session.userId) {
- return res.status(401).json({ message: 'Unauthorized: Please log in to add events' });
+ upload(req, res, (err) => {
+ if (err) {
+ return res.status(400).json({ message: err });
}
- let event = req.body;
- event.userId = req.session.userId; // Associate event with the logged-in user
+ if (!req.file) {
+ return res.status(400).json({ message: 'No file uploaded' });
+ }
+
+ // Event data including the file path for the image
+ const event = {
+ eventName: req.body.eventName,
+ eventDate: req.body.eventDate,
+ eventTime: req.body.eventTime,
+ venue: req.body.venue,
+ aboutEvent: req.body.aboutEvent,
+ specialNotes: req.body.specialNotes,
+ type: req.body.type,
+ eventPhoto: req.file.filename, // Save the uploaded file's filename
+ userId: req.session.userId, // Associate event with the logged-in user
+ };
+ // Save event data to your database
addeventsModel.createEvent(event, (err, result) => {
- if (err) {
- res.status(500).json({ message: 'Error adding event' });
- } else {
- res.status(201).json({ message: 'Event added successfully' });
- }
+ if (err) {
+ return res.status(500).json({ message: 'Error adding event' });
+ } else {
+ return res.status(201).json({ message: 'Event added successfully', event: result });
+ }
});
+ });
};
module.exports = { addEvent };
+
diff --git a/controllers/dashboardController.js b/controllers/dashboardController.js
index ec9c400..48ce25a 100644
--- a/controllers/dashboardController.js
+++ b/controllers/dashboardController.js
@@ -1 +1,12 @@
-//this is dashboarcontroller
\ No newline at end of file
+const dashboardModel = require("../models/dashboardModel");
+
+const getLatestEvents = (req, res) => {
+ dashboardModel.getLatestEvents((err, events) => {
+ if (err) {
+ return res.status(500).json({ message: "Error fetching latest events" });
+ }
+ res.status(200).json(events);
+ });
+};
+
+module.exports = { getLatestEvents };
diff --git a/controllers/reviewController.js b/controllers/reviewController.js
new file mode 100644
index 0000000..3a71568
--- /dev/null
+++ b/controllers/reviewController.js
@@ -0,0 +1,49 @@
+const reviewmanageModel = require('../models/reviewmanageModel');
+
+const getAllEvents = (req, res) => {
+ // Check if the user is logged in
+ const userId = req.session.userId;
+
+ if (!userId) {
+ return res.status(401).json({ message: 'Unauthorized: Please log in to view events' });
+ }
+
+ // Call the model to get events the user has not reviewed
+ reviewmanageModel.getAllEvents(userId, (err, events) => {
+ if (err) {
+ return res.status(500).json({ message: 'Error fetching events' });
+ }
+
+ // Return the events to the client
+ res.status(200).json(events);
+ });
+ };
+
+const submitComment = (req, res) => {
+ const { eventId, comment, rating } = req.body;
+
+ // Validate input
+ if (!eventId || !comment || !rating) {
+ return res.status(400).json({ message: 'All fields are required' });
+ }
+
+ console.log(eventId);
+
+ const reviewData = {
+ eventId,
+ comment,
+ rating,
+ createdAt: new Date(),
+ userId: req.session.userId
+ };
+
+ reviewmanageModel.submitReview(reviewData, (err, result) => {
+ if (err) {
+ return res.status(500).json({ message: 'Error submitting review' });
+ }
+ res.status(201).json({ success: true, message: 'Review submitted successfully' });
+ });
+ };
+
+
+module.exports = { getAllEvents, submitComment};
\ No newline at end of file
diff --git a/css/styles.css b/css/styles.css
index 2ac9d24..aad5a46 100644
--- a/css/styles.css
+++ b/css/styles.css
@@ -11240,4 +11240,25 @@ body {
width: 20px !important;
font-size: 0.75rem;
border-radius: 0.375rem !important;
-}
\ No newline at end of file
+}
+
+.card {
+ transition: transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out;
+}
+
+.card:hover {
+ transform: translateY(-10px); /* Moves the card up */
+ box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); /* Adds a shadow */
+}
+
+.card {
+ opacity: 0; /* Initially hidden */
+ transform: translateY(20px); /* Slightly below the final position */
+ transition: opacity 0.5s ease, transform 0.5s ease;
+}
+
+.card.visible {
+ opacity: 1; /* Fully visible */
+ transform: translateY(0); /* Moves to the final position */
+}
+
diff --git a/dashboard.html b/dashboard.html
index 2ebdf99..a99ff8b 100644
--- a/dashboard.html
+++ b/dashboard.html
@@ -19,6 +19,16 @@
src="https://use.fontawesome.com/releases/v6.3.0/js/all.js"
crossorigin="anonymous"
>
+
+
+
+
+
+
-
+
+
-