135 lines
3.7 KiB
JavaScript
135 lines
3.7 KiB
JavaScript
var router = require('express').Router(),
|
|
mongoose = require('mongoose'),
|
|
Aeronef = mongoose.model('Aeronef'),
|
|
Jump = mongoose.model('Jump'),
|
|
User = mongoose.model('User');
|
|
const auth = require('../auth');
|
|
|
|
|
|
router.get('/', auth.required, function (req, res, next) {
|
|
var limit = 25;
|
|
var offset = 0;
|
|
if (typeof req.query.limit !== 'undefined') {
|
|
limit = req.query.limit;
|
|
}
|
|
if (typeof req.query.offset !== 'undefined') {
|
|
offset = req.query.offset;
|
|
}
|
|
|
|
User.findById(req.payload.id).then(function (user) {
|
|
if (!user) {
|
|
return res.sendStatus(401);
|
|
}
|
|
var query = [
|
|
{
|
|
'$match': {
|
|
'$expr': {
|
|
'$eq': [ '$author' , { '$toObjectId': user._id.toString() } ]
|
|
}
|
|
}
|
|
}, {
|
|
'$group': {
|
|
'_id': {
|
|
'aeronef': '$aeronef',
|
|
'imat': '$imat'
|
|
},
|
|
'count': {
|
|
'$sum': 1
|
|
}
|
|
}
|
|
}, {
|
|
'$sort':
|
|
{
|
|
'_id': 1
|
|
},
|
|
}
|
|
];
|
|
Promise.all([
|
|
Jump.aggregate(query)
|
|
.limit(Number(limit))
|
|
.skip(Number(offset))
|
|
.exec()
|
|
//Aeronef.count(query)
|
|
]).then(function (results) {
|
|
var aeronefs = results[0];
|
|
//var aeronefsCount = results[1];
|
|
return res.json({
|
|
aeronefs: aeronefs,
|
|
aeronefsCount: aeronefs.length
|
|
});
|
|
/*
|
|
return res.json({
|
|
aeronefs: aeronefs.map(function (aeronef) {
|
|
return aeronef.toJSONFor(user);
|
|
}),
|
|
aeronefsCount: aeronefsCount
|
|
});
|
|
*/
|
|
}).catch(next);
|
|
}).catch(next);
|
|
});
|
|
|
|
router.get('/allByDate', auth.required, function (req, res, next) {
|
|
User.findById(req.payload.id).then(function (user) {
|
|
if (!user) {
|
|
return res.sendStatus(401);
|
|
}
|
|
var limit = 50;
|
|
var offset = 0;
|
|
if (typeof req.query.limit !== 'undefined') {
|
|
limit = req.query.limit;
|
|
}
|
|
if (typeof req.query.offset !== 'undefined') {
|
|
offset = req.query.offset;
|
|
}
|
|
var query = [
|
|
{
|
|
'$match': {
|
|
'$expr': {
|
|
'$eq': [ '$author' , { '$toObjectId': user._id.toString() } ]
|
|
}
|
|
}
|
|
}, {
|
|
'$project': {
|
|
'_id': 0,
|
|
'aeronef': 1,
|
|
'imat': 1,
|
|
'year': {
|
|
'$year': '$date'
|
|
}
|
|
}
|
|
}, {
|
|
'$group': {
|
|
'_id': {
|
|
'aeronef': '$aeronef',
|
|
'imat': '$imat',
|
|
'year': '$year'
|
|
},
|
|
'count': {
|
|
'$sum': 1
|
|
}
|
|
}
|
|
}, {
|
|
'$sort': {
|
|
'_id': 1
|
|
}
|
|
}
|
|
];
|
|
|
|
Jump.aggregate(query)
|
|
.limit(Number(limit))
|
|
.skip(Number(offset))
|
|
.exec()
|
|
.then(function (result) {
|
|
var aeronefs = result;
|
|
//console.log(aeronefs);
|
|
return res.json({
|
|
aeronefs: aeronefs,
|
|
aeronefsCount: aeronefs.length
|
|
});
|
|
}).catch(next);
|
|
}).catch(next);
|
|
});
|
|
|
|
module.exports = router;
|