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
175 lines
4.3 KiB
JavaScript
12 months ago
|
|
||
|
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' });
|
||
|
}
|
||
|
}
|
||
|
|