learn.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. const Uploader = require("../models/uploader.js");
  2. const Course = require("../models/course.js");
  3. const Lecture = require("../models/lecture.js");
  4. module.exports = {
  5. /*
  6. POST: create a new course
  7. req.body = {
  8. uploaderId: String,
  9. password: String,
  10. courseId: String,
  11. title: String
  12. thumbNail: String,
  13. description: String
  14. }
  15. redirect to home
  16. */
  17. createCourse: function(req, res){
  18. Uploader.findOne({_id: req.body.uploaderId})
  19. .then((uploader)=>{
  20. if(uploader === null) throw "uploader";
  21. if(req.body.password !== uploader.password) throw "pass";
  22. let imgString = `./thumbNails/${req.files.thumbNail.name}`;
  23. req.files.thumbNail.mv(imgString);
  24. let course = new Course({
  25. owner: uploader._id,
  26. courseId: req.body.courseId,
  27. title: req.body.title,
  28. thumbNail: imgString,
  29. description: req.body.description
  30. });
  31. return course.save();
  32. })
  33. .then((course)=>{
  34. return res.redirect("/");
  35. })
  36. .catch((err)=>{
  37. if(err === "uploader") return res.json("Uploader doesn't exist");
  38. if(err === "pass") return res.json("Incorrect password");
  39. return res.json("Something went wrong on the backend");
  40. });
  41. },
  42. /*
  43. POST: create a new lecture
  44. req.body = {
  45. uploader: String
  46. password: String
  47. course: String
  48. title: String
  49. video: String
  50. description: String
  51. exercises: [String]
  52. documents: [{
  53. title: String
  54. link: String
  55. }]
  56. }
  57. redirects to home
  58. */
  59. createLecture: function(req, res){
  60. Course.findOne({_id: req.body.course})
  61. .populate("owner")
  62. .then((course)=>{
  63. if(course === null) throw "noCourse";
  64. if(req.body.uploader !== course.owner?._id.toString()) throw "badOwner";
  65. if(req.body.password !== course.owner.password) throw "badPass";
  66. let exercises = req.body.exercises.split("~");
  67. exercises.splice(exercises.length - 1, 1);
  68. let lecture = new Lecture({
  69. course: course._id,
  70. title: req.body.title,
  71. video: req.body.video,
  72. description: req.body.description,
  73. exercises: exercises,
  74. documents: []
  75. });
  76. let files = req.files.documents;
  77. for(let i = 0; i < files.length; i++){
  78. let fileString = `./documents/${files[i].name}`;
  79. files[i].mv(fileString);
  80. lecture.documents.push(fileString);
  81. }
  82. return lecture.save();
  83. })
  84. .then((lecture)=>{
  85. return res.redirect("/");
  86. })
  87. .catch((err)=>{
  88. if(err === "noCourse") return res.json("Course does not exist");
  89. if(err === "badOwner") return res.json("You do not own this course");
  90. if(err === "badPass") return res.json("Incorrect password");
  91. return res.redirect("/");
  92. });
  93. },
  94. getCourses: function(req, res){
  95. Course.find()
  96. .then((courses)=>{
  97. return res.json(courses);
  98. })
  99. .catch((err)=>{
  100. return res.json("Could not retrieve courses");
  101. });
  102. }
  103. }