Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const API_CODES = require('./enums/responseCodes');
- const ACCOUNT_TYPES = require('./enums/accountTypes');
- let talk = require('../dbModel/talk');
- let user = require('../dbModel/user');
- let event = require('../dbModel/event');
- let Model = require('../dbModel/Model');
- module.exports = {
- getTalk: (req, res, next) => {
- if (req.params.talkId) {
- Model(talk).getDocById(req.params.talkId).exec((err, talk) => {
- if (talk && !talk.deleted) {
- tal = JSON.parse(JSON.stringify(talk));
- tal.date.start = parseInt(new Date(tal.date.start)/1000);
- tal.date.end = parseInt(new Date(tal.date.end)/1000);
- res.status(API_CODES.OK).json(tal);
- } else {
- res.status(API_CODES.NOT_FOUND).send();
- }
- });
- } else res.status(API_CODES.BAD_REQUEST).send();
- },
- getTalkByEventId: (req, res, next) => {
- Model(talk).getDocByEventId(req.params.eventId).exec(function (err, talks) {
- if (talks) {
- var tal = JSON.parse(JSON.stringify(talks));
- tal.forEach((talk) => {
- talk.date.start = parseInt(new Date(talk.date.start)/1000);
- talk.date.end = parseInt(new Date(talk.date.end)/1000);
- });
- res.status(API_CODES.OK).json(tal);
- } else {
- res.status(API_CODES.NOT_FOUND).send();
- }
- });
- },
- getTalkByUserId: function (req, res, next) {
- if (!req.params.userId) {
- res.status(API_CODES.BAD_REQUEST).send()
- return;
- } else {
- Model(talk).getTalkByUserId(req.params.userId).exec((err, talk) => {
- if (talk) {
- tal = JSON.parse(JSON.stringify(talk));
- tal.date.start = parseInt(new Date(tal.date.start)/1000);
- tal.date.end = parseInt(new Date(tal.date.end)/1000);
- res.status(API_CODES.OK).json(tal);
- } else res.status(API_CODES.NOT_FOUND).send();
- })
- }
- },
- addTalk: (req, res, next) => {
- if (req.body.eventId && req.body.title && req.body.date) {
- Model(event).getDocById(req.body.eventId).exec((err, doc) => {
- if(doc && !doc.deleted){
- if(doc.admin == req.session.userId || req.session.permission == ACCOUNT_TYPES.SUPER_ADMIN) {
- var t = new talk({
- event: req.body.eventId,
- title: req.body.title,
- date: {
- start: req.body.date.start * 1000,
- end: req.body.date.end * 1000
- }
- });
- if(req.body.speakers) t.speakers = req.body.speakers;
- Model(talk).add(t).then((doc2) => {
- res.status(API_CODES.CREATED).json(doc2);
- doc.talks.push(doc2._id);
- Model(event).save(doc);
- });
- } else res.status(API_CODES.FORBIDDEN).send();
- } else res.status(API_CODES.NOT_FOUND).send();
- });
- } else res.status(API_CODES.BAD_REQUEST).send();
- },
- updateTalk: function (req, res, next) {
- if (req.params.talkId) {
- Model(talk).getDocById(req.params.talkId).exec(function (err, doc) {
- if (req.body.title) {
- doc.title = req.body.title;
- }
- if (req.body.date) {
- doc.date.start = req.body.date.start * 1000;
- doc.date.end = req.body.date.end * 1000;
- }
- if (req.body.speaker && doc.speakers) {
- var duplicated;
- doc.speakers.forEach( (t) => {
- if (t.toString() === req.body.speaker) {
- duplicated = true;
- }
- })
- if(!duplicated)
- doc.speakers.push(req.body.speaker);
- Model(user).getDocById(req.body.speaker).exec((err, doc2) => {
- if(err) dberr(err, res);
- if(!doc) { res.status(API_CODES.NOT_FOUND).send(); return; }
- doc2.talks.push(req.params.talkId);
- Model(user).save(doc2);
- })
- }
- if(req.body.eventId){
- Model(event).getDocById(req.body.eventId).exec((err, event) => {
- if(err) dberr(err, res);
- if(!doc) { res.status(API_CODES.NOT_FOUND).send(); return; }
- doc.event = req.body.eventId;
- event.talks.push(doc._id);
- Model(event).save(event);
- });
- }
- Model(talk).save(doc);
- res.status(API_CODES.OK).json(doc);
- });
- } else {
- res.status(API_CODES.BAD_REQUEST).send();
- }
- },
- deleteTalk: (req, res, next) => {
- if(!req.params.talkId) { res.status(API_CODES.BAD_REQUEST); return; }
- Model(talk).getDocById(req.params.talkId).exec((err, doc) => {
- if(err) dberr(err, res);
- if(!doc) { res.status(API_CODES.NOT_FOUND).send(); return; }
- doc.deleted = true;
- Model(talk).save(doc).then((doc) => {
- res.status(API_CODES.OK).send();
- })
- })
- },
- unassignSpeaker: (req, res, next) => {
- if(!req.params.talkId && !req.params.userId) { res.status(API_CODES.BAD_REQUEST); return; }
- Model(talk).getDocById(req.params.talkId).exec((err, doc) => {
- if(err) dberr(err, res);
- if(!doc) { res.status(API_CODES.NOT_FOUND).send(); return; }
- talk.findByIdAndUpdate(doc._id, {$pull:{speakers: req.params.userId}}, {new:1}, (err, doc2) => {
- if(err) dberr(err, res);
- if(!doc2) { res.status(API_CODES.NOT_FOUND).send(); return; }
- user.findByIdAndUpdate(req.params.userId, {$pull:{talks: req.params.talkId}}, {new: 1}, (err, doc3) =>{
- if(err) dberr(err, res);
- if(!doc3) { res.status(API_CODES.NOT_FOUND).send(); return; }
- res.status(API_CODES.OK).send();
- });
- });
- })
- },
- markAsRead: (req, res, next) => {
- if (req.params.talkId && req.params.questionId) {
- Model(talk).getDocById(req.params.talkId).exec((err, doc) => {
- if (doc) {
- doc.questions.forEach((question) => {
- if (question._id == req.params.questionId) {
- question.readed = true;
- }
- });
- Model(talk).save(doc);
- res.status(API_CODES.OK).send(doc.questions);
- } else res.status(API_CODES.NOT_FOUND).send();
- });
- } else res.status(API_CODES.BAD_REQUEST).send();
- },
- leaveQuestion: (req, res, next) => {
- if(req.params.talkId && req.body.question) {
- Model(talk).getDocById(req.params.talkId).exec(function (err, doc) {
- if (doc && !doc.deleted) {
- doc.questions.push({
- date: Date.now(),
- content: req.body.question
- });
- Model(talk).save(doc);
- res.status(API_CODES.CREATED).json(doc);
- } else {
- res.status(API_CODES.NOT_FOUND).send();
- }
- });
- } else {
- res.status(API_CODES.BAD_REQUEST).send()
- }
- },
- leaveFeedback: (req, res, next) => {
- if(req.params.talkId && req.body.rating) {
- Model(talk).getDocById(req.params.talkId).exec(function (err, doc) {
- if (doc && !doc.deleted
- ) {
- doc.feedback.push({
- date: Date.now(),
- rating: req.body.rating,
- content: req.body.content
- });
- Model(talk).save(doc);
- res.status(API_CODES.CREATED).json(doc);
- } else {
- res.status(API_CODES.NOT_FOUND).send();
- }
- });
- } else {
- res.status(API_CODES.BAD_REQUEST).send()
- }
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement