const db = require('../config/db.config.js'); const Level = db.level; const Course = db.course; const CourseEnrollments = db.course_enrolment; /** * Create Course */ exports.createCourse = (req, res) => { Course.create({ name: req.body.name, description: req.body.description, level_id : req.body.level_id, }).then(course => { // set created level as next_level to it's prev if (req.body.prev_course_id) { Course.find({ where: { id: req.body.prev_course_id } } ).then(prev_course => { prev_course.update({ next_course: course.id }) }).catch(err => { res.status(500).send("Error -> " + err); }); } // end of set created level as next_level to it's prev res.status(200).json({ "description": "Course Created Successfully", "course": course }); }).catch(err => { res.status(500).send("Fail! Error -> " + err); }) } exports.enrollCourse = (req, res) => { CourseEnrollments.create({ user_id: req.userId, course_id: req.body.course_id, current_grade: 0 }).then(result => { // end of set created level as next_level to it's prev res.status(200).json({ "description": "Course Enrolled", "result": result }); }).catch(err => { res.status(500).send("Fail! Error -> " + err); }) } /** * Get courses with their level */ exports.getCourses = (req, res) => { db.sequelize.query("SELECT * FROM courses LEFT JOIN (SELECT course_id FROM course_enrolments where user_id = " + req.userId + ") c2 ON courses.id = c2.course_id;") // Course.findAll({ // attributes: ['name','description'], // include: [{ // model: Level, // }] // }) .then(courses => { for(i in courses[0]) { courses[0][i].enrolled = courses[0][i].course_id === null ? false : true } res.status(200).json({ "description": "Courses Page", "courses": courses[0] }); }).catch(err => { res.status(500).json({ "description": "Can not access courses Page", "error": err }); }) } /** * Get course with it's level */ exports.getCourse = (req, res) => { Course.findOne({ where: { id: req.body.course_id }, attributes: ['name','description'], include: [{ model: Level, }] }).then(course => { res.status(200).json({ "description": "course page", "course": course }); }).catch(err => { res.status(500).json({ "description": "Can not access course Page", "error": err }); }) }