Files
headup_api/routes/api/aeronefs.js
T
2024-05-08 20:37:33 +02:00

144 lines
4.2 KiB
JavaScript

var router = require('express').Router(),
mongoose = require('mongoose'),
Jump = mongoose.model('Jump'),
User = mongoose.model('User');
const auth = require('../auth'),
queries = require('../queries');
router.get('/allByImat', auth.required, function (req, res, next) {
let limit = 25;
let 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.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
}
let query = queries.getAeronefsByImatQuery(user._id.toString());
Promise.all([
Jump.aggregate(query)
.skip(Number(offset))
.limit(Number(limit))
.exec()
//Aeronef.count(query)
]).then(function (results) {
let aeronefs = results[0];
//let aeronefsCount = results[1];
return res.json({
aeronefs: aeronefs.map(function (data) {
return { aeronef: data._id.aeronef, imat: data._id.imat, count: data.count };
}),
aeronefsCount: aeronefs.length
});
/*
return res.json({
aeronefs: aeronefs.map(function (aeronef) {
return aeronef.toJSONFor(user);
}),
aeronefsCount: aeronefsCount
});
*/
}).catch(next);
}).catch(next);
});
router.get('/allByImatByYear', auth.required, function (req, res, next) {
User.findById(req.payload.id).then(function (user) {
if (!user) {
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
}
let limit = 50;
let offset = 0;
if (typeof req.query.limit !== 'undefined') {
limit = req.query.limit;
}
if (typeof req.query.offset !== 'undefined') {
offset = req.query.offset;
}
let query = queries.getAeronefsByImatByYearQuery(user._id.toString());
Jump.aggregate(query)
.skip(Number(offset))
.limit(Number(limit))
.exec()
.then(function (result) {
let aeronefs = result.map(function (data) {
return { aeronef: data._id.aeronef, imat: data._id.imat, year: data._id.year, count: data.count };
});
return res.json({
aeronefs: aeronefs,
aeronefsCount: aeronefs.length
});
}).catch(next);
}).catch(next);
/*
let limit = 50;
let offset = 0;
if (typeof req.query.limit !== 'undefined') {
limit = req.query.limit;
}
if (typeof req.query.offset !== 'undefined') {
offset = req.query.offset;
}
let 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
}
}
];
Promise.all([
req.payload ? User.findById(req.payload.id) : null,
Jump.aggregate(query)
.skip(Number(offset))
.limit(Number(limit))
.exec()
]).then(function (results) {
let user = results[0];
let aeronefs = results[1];
if (!user) {
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
}
return res.json({
aeronefs: aeronefs,
aeronefsCount: aeronefs.length
});
}).catch(next);
*/
});
module.exports = router;