245 lines
6.5 KiB
JavaScript
245 lines
6.5 KiB
JavaScript
const EventEmitter = require('events');
|
|
const Express = require('express');
|
|
const ParamStr = '/:limit?/:skip?/:min?/:max?/:pos?/:lkng?/:tribes?/:ethnos?';
|
|
const Profiles = require('../models/profile');
|
|
const Router = Express.Router();
|
|
const Token = require('../modules/token');
|
|
|
|
function processQueryParams (params) {
|
|
var query = {};
|
|
|
|
if (params.minAge && !isNaN(parseInt(params.minAge))) {
|
|
query['details.age'] = query['details.age'] || {};
|
|
query['details.age'].$gte = parseInt(params.minAge);
|
|
}
|
|
|
|
if (params.maxAge && !isNaN(parseInt(params.maxAge))) {
|
|
query['details.age'] = query['details.age'] || {};
|
|
query['details.age'].$lte = parseInt(params.maxAge);
|
|
}
|
|
|
|
if (params.pos && params.pos !== 'null') {
|
|
query['details.position'] = { $in: params.pos.split('|') };
|
|
}
|
|
|
|
if (params.lkng && params.lkng !== 'null') {
|
|
query['details.looking'] = { $in: params.lkng.split('|') };
|
|
}
|
|
|
|
if (params.tribes && params.tribes !== 'null') {
|
|
query['details.tribes'] = { $in: params.tribes.split('|') };
|
|
}
|
|
|
|
if (params.ethnos && params.ethnos !== 'null') {
|
|
query['details.ethnos'] = { $in: params.ethnos.split('|') };
|
|
}
|
|
|
|
return query;
|
|
}
|
|
|
|
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' + ParamStr)
|
|
.get((req, res) => {
|
|
var ProfileEvents = new EventEmitter();
|
|
var find = processQueryParams(req.params);
|
|
|
|
var query = {
|
|
find: find,
|
|
select: null,
|
|
options: {
|
|
limit: !isNaN(parseInt(req.params.limit)) ? parseInt(req.params.limit) : 0,
|
|
skip: !isNaN(parseInt(req.params.skip)) ? parseInt(req.params.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' + ParamStr)
|
|
.get((req, res) => {
|
|
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;
|
|
var method = id ? 'get' : 'all';
|
|
|
|
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[method](ProfileEvents, id);
|
|
// });
|
|
})
|
|
.patch( update )
|
|
.put( update );
|
|
|
|
module.exports = Router;
|