diff --git a/backend/controllers/meetingController.js b/backend/controllers/meetingController.js
index 1b47f07..9309179 100644
--- a/backend/controllers/meetingController.js
+++ b/backend/controllers/meetingController.js
@@ -2,7 +2,7 @@ const Meeting = require("../models/Meeting");
exports.getMeetings = async (req, res) => {
try {
- const meetings = await Meeting.find();
+ const meetings = await Meeting.find({ isDelete : false });
const formattedMeetings = meetings.map((meeting) => {
const formattedAgenda = meeting.agenda
? meeting.agenda.map((item, index) => `
${index + 1}. ${item}`).join("")
@@ -16,3 +16,20 @@ exports.getMeetings = async (req, res) => {
res.status(500).json({ error: "Error fetching meetings" });
}
};
+// ✅ Soft delete controller (NEW)
+exports.softDeleteMeeting = async (req, res) => {
+ try {
+ const { id } = req.params;
+
+ const meeting = await Meeting.findByIdAndUpdate(id, { isDeleted: true }, { new: true });
+
+ if (!meeting) {
+ return res.status(404).json({ error: "Meeting not found" });
+ }
+
+ res.json({ message: "Meeting soft deleted successfully", meeting });
+ } catch (error) {
+ console.error("Error soft deleting meeting:", error);
+ res.status(500).json({ error: "Failed to soft delete meeting" });
+ }
+};
diff --git a/backend/models/Meeting.js b/backend/models/Meeting.js
index 8502761..f6cd690 100644
--- a/backend/models/Meeting.js
+++ b/backend/models/Meeting.js
@@ -11,6 +11,10 @@ const meetingSchema = new mongoose.Schema({
endTime: String,
recipients: [String],
attachments: [{ filename: String, path: String }],
+ isDeleted: {
+ type: Boolean,
+ default: false
+ }
});
module.exports = mongoose.model("Meeting", meetingSchema);
diff --git a/backend/routes/meetingRoutes.js b/backend/routes/meetingRoutes.js
index b52bd1d..9f0e1f4 100644
--- a/backend/routes/meetingRoutes.js
+++ b/backend/routes/meetingRoutes.js
@@ -1,8 +1,16 @@
const express = require("express");
-const { getMeetings } = require("../controllers/meetingController");
+const {
+ getMeetings,
+ softDeleteMeeting // ✅ Add this line
+} = require("../controllers/meetingController");
const router = express.Router();
+// GET all non-deleted meetings
router.get("/meetings", getMeetings);
+// ✅ Add soft delete route
+router.patch("/meetings/:id/soft-delete", softDeleteMeeting);
+
module.exports = router;
+
diff --git a/frontend/src/Page5.css b/frontend/src/Page5.css
index c157270..535f61d 100644
--- a/frontend/src/Page5.css
+++ b/frontend/src/Page5.css
@@ -122,6 +122,21 @@ html, body {
padding: 10px;
}
+.soft-delete-button {
+ background-color: #d9534f;
+ color: white;
+ padding: 8px 14px;
+ border: none;
+ border-radius: 4px;
+ cursor: pointer;
+ margin-top: 10px;
+}
+
+.soft-delete-button:hover {
+ background-color: #c9302c;
+}
+
+
/* Meeting Cards */
.meeting-card {
background-color: var(--white);
diff --git a/frontend/src/Page5.js b/frontend/src/Page5.js
index 3b757ec..6cd6f6f 100644
--- a/frontend/src/Page5.js
+++ b/frontend/src/Page5.js
@@ -1,4 +1,4 @@
-//Page5.js
+// Page5.js
import React, { useState, useEffect } from 'react';
import { Link } from 'react-router-dom';
@@ -12,10 +12,9 @@ const Page5 = () => {
const [meetings, setMeetings] = useState([]);
const [expandedIndex, setExpandedIndex] = useState(null);
- useEffect(() => {
+ const fetchMeetings = () => {
axios.get('http://localhost:5000/api/meetings')
.then((response) => {
- // Sort meetings by date (newest first) and time
const sortedMeetings = response.data.sort((a, b) => {
const dateA = new Date(`${a.date}T${a.startTime}`);
const dateB = new Date(`${b.date}T${b.startTime}`);
@@ -26,22 +25,35 @@ const Page5 = () => {
.catch((error) => {
console.error('Error fetching meetings:', error);
});
+ };
+
+ useEffect(() => {
+ fetchMeetings();
}, []);
const toggleExpand = (index) => {
setExpandedIndex(prev => (prev === index ? null : index));
};
+ const handleSoftDelete = async (id) => {
+ try {
+ await axios.patch(`http://localhost:5000/api/meetings/${id}/soft-delete`);
+ alert('Meeting soft deleted!');
+ fetchMeetings();
+ } catch (error) {
+ console.error('Error deleting meeting:', error);
+ alert('Soft delete failed.');
+ }
+ };
+
return (
- {/* Header Bar */}
Somaiya Scheduler
- {/* Navigation Bar */}
- {/* Main Content */}
Meeting Details
-
+
{meetings.length === 0 ? (
No meetings available
) : (
@@ -141,6 +152,18 @@ const Page5 = () => {
>
Add to Google Calendar
+
+ {/* ✅ Soft Delete Button */}
+
+
)}
@@ -150,7 +173,6 @@ const Page5 = () => {
)}
- {/* Footer */}