var EventEmitter = require('events'); var Express = require('express'); var Profiles = require('../models/profile'); var Router = Express.Router(); var Token = require('../modules/token'); function update (req, res, next) { Token.verifyThen(req.get('authorization'), 'edit', (err, decoded) => { if (err) { res.status(403).json({ message: 'User not authorized to perform this action.', err: err }); return; } var ProfileEvents = new EventEmitter(); var id = req.params.id; var data = req.body; if (!id || !data) { res.status(500).json({ message: 'No profile id or data specified.', err: err }); return; } ProfileEvents.once('update', (err, result) => { if (err) { res.status(500).json({message: 'Could not update profile id: ' + id, err: err}); } if (result) { res.status(200).json(result); } }); Profiles.update(ProfileEvents, id, data); }); } function updateMessage (req, res, next) { Token.verifyThen(req.get('authorization'), 'edit', (err, decoded) => { if (err) { res.status(403).json({ message: 'User not authorized to perform this action.', err: err }); return; } var ProfileEvents = new EventEmitter(); var profileId = req.params.profileId; var messageId = req.params.messageId; var data = req.body; if (!id || !data) { res.status(500).json({ message: 'No profile id or data specified.', err: err }); return; } ProfileEvents.once('updateMessage', (err, result) => { if (err) { res.status(500).json({message: 'Could not update profile id: ' + id, err: err}); } if (result) { res.status(200).json(result); } }); Profiles.updateMessage(ProfileEvents, profileId, messageId, data); }); } Router.route('/') .post((req, res) => { // Token.verifyThen(req.get('authorization'), 'add', (err, decoded) => { // if (err) { // res.status(403).json({ message: 'User not authorized to perform this action.', err: err }); // return; // } var ProfileEvents = new EventEmitter(); var profile = Array.isArray(req.body) ? req.body : [ req.body ]; var multi = profile.length > 1; ProfileEvents.once('create', (err, result) => { if (err) { res.status(500).json({ message: 'Could not create profile' + (multi ? 's' : ''), err: err, profile: profile }); } if (result) { res.status(200).json(result); } }); Profiles.create(ProfileEvents, profile); // }); }); Router.route('/find/:limit?/:skip?/:min?/:max?/:pos?/:lkng?/:tribes?/:ethnos?') .get((req, res) => { Token.verifyThen(req.get('authorization'), 'view', (err, decoded) => { if (err) { res.status(403).json({ message: 'User not authorized to perform this action.', err: err }); return; } var ProfileEvents = new EventEmitter(); var find = processQueryParams(req.params); var query = { find: find, select: null, options: { limit: 0, skip: 0, sort: { 'order': 1 } } }; ProfileEvents.once('find', (err, result) => { if (err) { res.status(500).json({ message: 'There was an error getting the vendor list', err: err }); } if (result) { res.status(200).json(result); } }); Profiles.find(ProfileEvents, query); }); }); Router.route('/list/:limit?/:skip?/:min?/:max?/:pos?/:lkng?/:tribes?/:ethnos?') .get((req, res) => { Token.verifyThen(req.get('authorization'), 'view', (err, decoded) => { if (err) { res.status(403).json({ message: 'User not authorized to perform this action.', err: err }); return; } var ProfileEvents = new EventEmitter(); var find = processQueryParams(req.params); var query = { find: find, select: '_id order details.name details.pics.thumbnail', options: { limit: 0, skip: 0, sort: { 'order': 1 } } }; ProfileEvents.once('find', (err, result) => { if (err) { res.status(500).json({ message: 'There was an error getting the vendor list', err: err }); } if (result) { res.status(200).json(result); } }); Profiles.find(ProfileEvents, query); }); }); Router.route('/:profileId?/messages/:messageId?') .delete((req, res) => { }) .get((req, res) => { }) .patch( updateMessage ) .put( updateMessage ); Router.route('/:id?') .delete( (req, res) => { Token.verifyThen(req.get('authorization'), 'delete', (err, decoded) => { if (err) { res.status(403).json({ message: 'User not authorized to perform this action.', err: err }); return; } var ProfileEvents = new EventEmitter(); var id = req.params.id; ProfileEvents.once('delete', (err, result) => { if (err) { res.status(500).json({message: 'Could not delete profile id: ' + id, err: err}); } if (result) { res.status(204).json({}); } }); Profiles.delete(ProfileEvents, id); }); }) .get( (req, res) => { Token.verifyThen(req.get('authorization'), 'view', (err, decoded) => { if (err) { res.status(403).json({ message: 'User not authorized to perform this action.', err: err }); return; } var ProfileEvents = new EventEmitter(); var id = req.params.id || null; ProfileEvents.once(method, (err, result) => { if (err) { res.status(500).json({ message: 'Could not get profile' + (id ? '' : 's'), err: err }); } if (result) { res.status(200).json(result); } }); Profiles.get(ProfileEvents, id || null); }); }) .patch( update ) .put( update ); module.exports = Router;