Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.33 KB | None | 0 0
  1. const API_CODES = require('./enums/responseCodes');
  2. const ACCOUNT_TYPES = require('./enums/accountTypes');
  3.  
  4. let talk = require('../dbModel/talk');
  5. let user = require('../dbModel/user');
  6. let event = require('../dbModel/event');
  7. let Model = require('../dbModel/Model');
  8.  
  9. module.exports = {
  10. getTalk: (req, res, next) => {
  11. if (req.params.talkId) {
  12. Model(talk).getDocById(req.params.talkId).exec((err, talk) => {
  13. if (talk && !talk.deleted) {
  14. tal = JSON.parse(JSON.stringify(talk));
  15. tal.date.start = parseInt(new Date(tal.date.start)/1000);
  16. tal.date.end = parseInt(new Date(tal.date.end)/1000);
  17. res.status(API_CODES.OK).json(tal);
  18. } else {
  19. res.status(API_CODES.NOT_FOUND).send();
  20. }
  21. });
  22. } else res.status(API_CODES.BAD_REQUEST).send();
  23. },
  24.  
  25. getTalkByEventId: (req, res, next) => {
  26. Model(talk).getDocByEventId(req.params.eventId).exec(function (err, talks) {
  27. if (talks) {
  28. var tal = JSON.parse(JSON.stringify(talks));
  29. tal.forEach((talk) => {
  30. talk.date.start = parseInt(new Date(talk.date.start)/1000);
  31. talk.date.end = parseInt(new Date(talk.date.end)/1000);
  32. });
  33. res.status(API_CODES.OK).json(tal);
  34. } else {
  35. res.status(API_CODES.NOT_FOUND).send();
  36. }
  37. });
  38. },
  39.  
  40. getTalkByUserId: function (req, res, next) {
  41. if (!req.params.userId) {
  42. res.status(API_CODES.BAD_REQUEST).send()
  43. return;
  44. } else {
  45. Model(talk).getTalkByUserId(req.params.userId).exec((err, talk) => {
  46. if (talk) {
  47. tal = JSON.parse(JSON.stringify(talk));
  48. tal.date.start = parseInt(new Date(tal.date.start)/1000);
  49. tal.date.end = parseInt(new Date(tal.date.end)/1000);
  50. res.status(API_CODES.OK).json(tal);
  51. } else res.status(API_CODES.NOT_FOUND).send();
  52. })
  53. }
  54. },
  55.  
  56. addTalk: (req, res, next) => {
  57. if (req.body.eventId && req.body.title && req.body.date) {
  58. Model(event).getDocById(req.body.eventId).exec((err, doc) => {
  59. if(doc && !doc.deleted){
  60. if(doc.admin == req.session.userId || req.session.permission == ACCOUNT_TYPES.SUPER_ADMIN) {
  61. var t = new talk({
  62. event: req.body.eventId,
  63. title: req.body.title,
  64. date: {
  65. start: req.body.date.start * 1000,
  66. end: req.body.date.end * 1000
  67. }
  68. });
  69. if(req.body.speakers) t.speakers = req.body.speakers;
  70. Model(talk).add(t).then((doc2) => {
  71. res.status(API_CODES.CREATED).json(doc2);
  72. doc.talks.push(doc2._id);
  73. Model(event).save(doc);
  74. });
  75. } else res.status(API_CODES.FORBIDDEN).send();
  76. } else res.status(API_CODES.NOT_FOUND).send();
  77. });
  78. } else res.status(API_CODES.BAD_REQUEST).send();
  79. },
  80. updateTalk: function (req, res, next) {
  81. if (req.params.talkId) {
  82. Model(talk).getDocById(req.params.talkId).exec(function (err, doc) {
  83. if (req.body.title) {
  84. doc.title = req.body.title;
  85. }
  86. if (req.body.date) {
  87. doc.date.start = req.body.date.start * 1000;
  88. doc.date.end = req.body.date.end * 1000;
  89. }
  90. if (req.body.speaker && doc.speakers) {
  91. var duplicated;
  92. doc.speakers.forEach( (t) => {
  93. if (t.toString() === req.body.speaker) {
  94. duplicated = true;
  95. }
  96. })
  97. if(!duplicated)
  98. doc.speakers.push(req.body.speaker);
  99. Model(user).getDocById(req.body.speaker).exec((err, doc2) => {
  100. if(err) dberr(err, res);
  101. if(!doc) { res.status(API_CODES.NOT_FOUND).send(); return; }
  102. doc2.talks.push(req.params.talkId);
  103. Model(user).save(doc2);
  104. })
  105. }
  106. if(req.body.eventId){
  107. Model(event).getDocById(req.body.eventId).exec((err, event) => {
  108. if(err) dberr(err, res);
  109. if(!doc) { res.status(API_CODES.NOT_FOUND).send(); return; }
  110. doc.event = req.body.eventId;
  111. event.talks.push(doc._id);
  112. Model(event).save(event);
  113. });
  114. }
  115. Model(talk).save(doc);
  116. res.status(API_CODES.OK).json(doc);
  117. });
  118. } else {
  119. res.status(API_CODES.BAD_REQUEST).send();
  120. }
  121. },
  122.  
  123. deleteTalk: (req, res, next) => {
  124. if(!req.params.talkId) { res.status(API_CODES.BAD_REQUEST); return; }
  125. Model(talk).getDocById(req.params.talkId).exec((err, doc) => {
  126. if(err) dberr(err, res);
  127. if(!doc) { res.status(API_CODES.NOT_FOUND).send(); return; }
  128. doc.deleted = true;
  129. Model(talk).save(doc).then((doc) => {
  130. res.status(API_CODES.OK).send();
  131. })
  132. })
  133. },
  134. unassignSpeaker: (req, res, next) => {
  135. if(!req.params.talkId && !req.params.userId) { res.status(API_CODES.BAD_REQUEST); return; }
  136. Model(talk).getDocById(req.params.talkId).exec((err, doc) => {
  137. if(err) dberr(err, res);
  138. if(!doc) { res.status(API_CODES.NOT_FOUND).send(); return; }
  139. talk.findByIdAndUpdate(doc._id, {$pull:{speakers: req.params.userId}}, {new:1}, (err, doc2) => {
  140. if(err) dberr(err, res);
  141. if(!doc2) { res.status(API_CODES.NOT_FOUND).send(); return; }
  142. user.findByIdAndUpdate(req.params.userId, {$pull:{talks: req.params.talkId}}, {new: 1}, (err, doc3) =>{
  143. if(err) dberr(err, res);
  144. if(!doc3) { res.status(API_CODES.NOT_FOUND).send(); return; }
  145. res.status(API_CODES.OK).send();
  146. });
  147.  
  148. });
  149. })
  150. },
  151. markAsRead: (req, res, next) => {
  152. if (req.params.talkId && req.params.questionId) {
  153. Model(talk).getDocById(req.params.talkId).exec((err, doc) => {
  154. if (doc) {
  155. doc.questions.forEach((question) => {
  156. if (question._id == req.params.questionId) {
  157. question.readed = true;
  158. }
  159. });
  160. Model(talk).save(doc);
  161. res.status(API_CODES.OK).send(doc.questions);
  162. } else res.status(API_CODES.NOT_FOUND).send();
  163. });
  164. } else res.status(API_CODES.BAD_REQUEST).send();
  165. },
  166.  
  167. leaveQuestion: (req, res, next) => {
  168. if(req.params.talkId && req.body.question) {
  169. Model(talk).getDocById(req.params.talkId).exec(function (err, doc) {
  170. if (doc && !doc.deleted) {
  171. doc.questions.push({
  172. date: Date.now(),
  173. content: req.body.question
  174. });
  175. Model(talk).save(doc);
  176. res.status(API_CODES.CREATED).json(doc);
  177. } else {
  178. res.status(API_CODES.NOT_FOUND).send();
  179. }
  180. });
  181. } else {
  182. res.status(API_CODES.BAD_REQUEST).send()
  183. }
  184. },
  185.  
  186. leaveFeedback: (req, res, next) => {
  187. if(req.params.talkId && req.body.rating) {
  188. Model(talk).getDocById(req.params.talkId).exec(function (err, doc) {
  189. if (doc && !doc.deleted
  190. ) {
  191. doc.feedback.push({
  192. date: Date.now(),
  193. rating: req.body.rating,
  194. content: req.body.content
  195. });
  196. Model(talk).save(doc);
  197. res.status(API_CODES.CREATED).json(doc);
  198. } else {
  199. res.status(API_CODES.NOT_FOUND).send();
  200. }
  201. });
  202. } else {
  203. res.status(API_CODES.BAD_REQUEST).send()
  204. }
  205. }
  206. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement