Files
pfosi-looking-api/routes/profiles.js
2018-03-02 03:00:51 -05:00

225 lines
5.9 KiB
JavaScript

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;