You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

175 lines
4.3 KiB
JavaScript

const Course = require("../models/Course");
const User = require("../models/User");
// we use req,res because it is not use in our rout
module.exports.addCourse = (req,res) => {
let newCourse = new Course({
name:req.body.name,
description:req.body.description,
price:req.body.price
});
return newCourse.save().then((course,error ) =>{
if(error){
return res.send(false);
}else{
return res.send(true);
}
}).catch();
}
module.exports.getAllCourses = (req,res) =>{
// to retrieve all the documents in the "course" collection, we will use find({}) method.
return Product.find({}).then(result =>{
return res.send(result);
});
}
module.exports.activeproduct = (req,res) =>{
return Course.find({isActive:true}).then(result =>{
return res.send(result);
});
}
// module.exports.getCourse = (req,res) =>{
// return Course.findById(req.params.courseId).then(result =>{
// return res.send(result);
// });
// }
// module.exports.updateCourse = (req, res) => {
// // Specify the fields/properties of the document to be updated
// let updatedCourse = {
// name: req.body.name,
// description: req.body.description,
// price: req.body.price
// }
// // Syntax
// // findByIdAndUpdate(documentId, updatesToBeApplied)
// return Course.findByIdAndUpdate(req.params.courseId, updatedCourse).then((course, error) => {
// // If course was not updated
// if(error){
// return res.send(false);
// // If course was updated successfully
// } else {
// return res.send(true);
// }
// });
// }
// module.exports.archiveCourse = (req,res)=>{
// let updatedActiveField = {
// isActive:false
// }
// return Course.findByIdAndUpdate(req.params.courseId, updatedActiveField).then((course, error) =>{
// if(error){
// return res.send(false);
// // If course was updated successfully
// } else {
// return res.send(true);
// }
// });
// }
// module.exports.searchCoursesByName = async (req, res) => {
// try {
// const { courseName } = req.body;
// // Use a regular expression to perform a case-insensitive search
// // i = this will search something that case- insentitive will not matter
// //
// const courses = await Course.find({
// name: { $regex: courseName, $options: 'i' }
// });
// res.json(courses);
// } catch (error) {
// console.error(error);
// res.status(500).json({ error: 'Internal Server Error' });
// }
// };
module.exports.getEmailsOfEnrolledUsers = async (req, res) => {
const courseId = req.params.courseId; // Use req.params instead of req.body
try {
// Find the course by courseId
const course = await Course.findById(courseId);
if (!course) {
return res.status(404).json({ message: 'Course not found' });
}
// Get the userIds of enrolled users from the course
const userIds = course.enrollees.map(enrollee => enrollee.userId);
// Find the users with matching userIds
const enrolledUsers = await User.find({ _id: { $in: userIds } }); // Use userIds variable instead of undefined "users"
// Extract the emails from the enrolled users
const emails = enrolledUsers.map(user => user.email); // Use map instead of forEach
res.status(200).json({ userEmails: emails }); // Use the correct variable name userEmails instead of emails
} catch (error) {
res.status(500).json({ message: 'An error occurred while retrieving enrolled users' });
}
};
module.exports.activateCourse = (req,res)=>{
let updatedActiveField = {
isActive:true
}
return Course.findByIdAndUpdate(req.params.courseId, updatedActiveField).then((course, error) =>{
if(error){
return res.send(false);
// If course was updated successfully
} else {
return res.send(true);
}
});
}
// Controller function to update the user profile
module.exports.updateProfile = async (req, res) => {
try {
// Get the user ID from the authenticated token
const userId = req.user.id;
// Retrieve the updated profile information from the request body
const { firstName, lastName, mobileNo } = req.body;
// Update the user's profile in the database
const updatedUser = await User.findByIdAndUpdate(
userId,
{ firstName, lastName, mobileNo },
{ new: true }
);
res.json(updatedUser);
} catch (error) {
console.error(error);
res.status(500).json({ message: 'Failed to update profile' });
}
}