diff --git a/server/Submission.js b/server/Submission.js new file mode 100644 index 00000000..c75c9d0a --- /dev/null +++ b/server/Submission.js @@ -0,0 +1,10 @@ +const mongoose = require('mongoose'); + +const SubmissionSchema = new mongoose.Schema({ + student: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true }, + internshipRequest: { type: mongoose.Schema.Types.ObjectId, ref: 'InternshipRequest' }, + status: { type: String, default: 'pending' }, + submittedAt: { type: Date, default: Date.now }, +}); + +module.exports = mongoose.model('Submission', SubmissionSchema); diff --git a/server/models/Submission.js b/server/models/Submission.js new file mode 100644 index 00000000..c75c9d0a --- /dev/null +++ b/server/models/Submission.js @@ -0,0 +1,10 @@ +const mongoose = require('mongoose'); + +const SubmissionSchema = new mongoose.Schema({ + student: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true }, + internshipRequest: { type: mongoose.Schema.Types.ObjectId, ref: 'InternshipRequest' }, + status: { type: String, default: 'pending' }, + submittedAt: { type: Date, default: Date.now }, +}); + +module.exports = mongoose.model('Submission', SubmissionSchema); diff --git a/server/routes/approvalRoutes.js b/server/routes/approvalRoutes.js index 748b7756..1a2a7bb0 100644 --- a/server/routes/approvalRoutes.js +++ b/server/routes/approvalRoutes.js @@ -18,12 +18,11 @@ const InternshipRequest = require("../models/InternshipRequest"); // Supervisor APIs router.get("/supervisor/forms", isSupervisor, (req, res) => { - // const supervisorId = req.user._id, return getSupervisorForms(req, res, { - // supervisor_id: supervisorId, supervisor_status: { $in: ["pending"] }, - }) + }); }); + // Approve route router.post("/supervisor/form/:type/:id/approve", isSupervisor, (req, res) => handleSupervisorFormAction(req, res, "approve") @@ -44,37 +43,6 @@ router.get("/coordinator/request/:id", isCoordinator, getCoordinatorRequestDetai router.post("/coordinator/request/:id/approve", isCoordinator, coordinatorApproveRequest); router.post("/coordinator/request/:id/reject", isCoordinator, coordinatorRejectRequest); -const approveFormA3 = async (req, res) => { - const { formId } = req.params; - - try { - //find the form by formId - const form = await Evaluation.findById(formId); - - if (!form) { - return res.status(404).json({ message: "Form not found" }); - } - - //check if form is already locked - if (form.locked) { - return res.status(403).json({ message: "This form is locked and cannot be edited." }); - } - - //approve the form - form.status = "approved"; - - //lock the form after approval by coordinator - form.locked = true; - - await form.save(); - - return res.status(200).json({ message: "Form A.3 approved and locked successfully!" }); - } catch (err) { - console.error("Error approving form A.3:", err); - return res.status(500).json({ message: "Something went wrong" }); - } -}; - // NEW Coordinator API: Approve Form A.3 router.post("/coordinator/form-a3/:formId/approve", isCoordinator, approveFormA3); @@ -100,4 +68,4 @@ router.post("/form/:formId/approve", async (req, res) => { } }); -module.exports = router; \ No newline at end of file +module.exports = router; diff --git a/server/services/insertData.js b/server/services/insertData.js index 46334155..3059a332 100644 --- a/server/services/insertData.js +++ b/server/services/insertData.js @@ -7,7 +7,6 @@ async function insertFormData(formData) { try { console.log("Received Form Data:\n", JSON.stringify(formData, null, 2)); - // Dynamically find the student based on email const student = await User.findOne({ email: formData.email }); if (!student) { @@ -15,7 +14,7 @@ async function insertFormData(formData) { } const formattedData = { - student: student._id, // ✅ Real user's ID from database + student: student._id, workplace: { name: formData.workplaceName, website: formData.website,