Cantilever-Labs/controllers/course.js

199 lines
4.5 KiB
JavaScript

const Course = require('../models/Course') ;
const CourseType = require('../models/CourseType') ;
const User = require('../models/User') ;
module.exports.postAddCourse = async (req , res , next) => {
try
{
//we will take input as name , mentor and totalLectures
let name = req.body.name ;
let mentor = req.body.mentor ;
let totalLectures = req.body.totalLectures ;
let route = req.body.route
if(name)
{
name = name.trim() ;
}
if(mentor)
{
mentor = mentor.trim() ;
}
if(route)
{
route = route.trim() ;
}
if(totalLectures)
{
totalLectures = Number(totalLectures) ;
}
let course = new Course({
name : name ,
mentor : mentor ,
totalLectures : totalLectures ,
route : route
}) ; ;
course = await course.save() ;
//tier 1
let tier1 = new CourseType({
name : course.name ,
amount : 7000 ,
tier : 1 ,
course : course._id
})
tier1 = await tier1.save() ;
//tier 2
let tier2 = new CourseType({
name : course.name ,
amount : 5000 ,
tier : 2 ,
course : course._id
})
tier2 =await tier2.save() ;
//tier 3
let tier3 = new CourseType({
name : course.name ,
amount : 3000 ,
tier : 3 ,
course : course._id
})
tier3 = await tier3.save() ;
course.types.tier1 = tier1 ;
course.types.tier2 = tier2 ;
course.types.tier3 = tier3 ;
await course.save() ;
res.json({
success: "Successfully created"
})
}
catch(err)
{
console.log(err);
res.json({
error : err
})
}
}
module.exports.getAllCourses = async (req , res , next) => {
try
{
//we will be getting all the courses here
const courses = await Course.find().populate("types.tier1").populate("types.tier2").populate("types.tier3") ;
res.json({
courses : courses
})
}
catch
{
res.json({
error : "error"
})
}
}
module.exports.getMeetSchedule = async (req , res , next) => {
try
{
//we need courseTypeId as input
const courseId = req.body.courseId ;
const course = await CourseType.findById(courseId).populate("course") ;
res.json({
courses : course
})
}
catch(err)
{
res.json({
error : "error"
})
}
}
module.exports.getSingleParCourse = async (req , res , next) => {
try{
const parCourseId = req.body.parCourseId ;
console.log(parCourseId) ;
const course = await Course.findById(parCourseId).populate("types.tier1").populate("types.tier2").populate("types.tier3") ;
res.json({
course : course
})
}
catch(err)
{
res.json({
error : "error"
})
}
}
module.exports.getTierCourse = async (req , res , next) => {
try{
//we need courseTypeId as input
const courseId = req.body.courseId ;
const course = await CourseType.findById(courseId).populate("course") ;
res.json({
course : course
})
}
catch(err)
{
res.json({
error : "error"
})
}
}
module.exports.getFromRoute = async (req , res , next) => {
try{
const route = req.query.route ;
const course = await Course.findOne({route :route}).populate("types.tier1").populate("types.tier2").populate("types.tier3") ;
console.log(course);
res.json({
course : course
})
}
catch(err)
{
res.json({
error : "error"
})
}
}
module.exports.addClick = async (req , res , next) => {
try
{
const route = req.body.route ;
const userId = req.user._id ;
let user = await User.findById(userId) ;
let clicked = {...user.clicked} ;
if(!clicked[route])
{
clicked[route] = 0 ;
}
clicked[route] = clicked[route] + 1 ;
user.clicked = clicked ;
await user.save() ;
res.json({
data : "added click"
}) ;
}
catch(err)
{
res.json({
error : err
})
}
}