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

286 lines
11 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'),
utils = require('../utils');
router.get('/aeronefs', 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 = 120;
let offset = 0;
if (typeof req.query.limit !== 'undefined') {
limit = req.query.limit;
}
if (typeof req.query.offset !== 'undefined') {
offset = req.query.offset;
}
Promise.all([
Jump.find({})
.limit(1)
.skip(0)
.sort({ numero: 'desc' })
.populate('author')
.populate('files')
.populate('x2data')
.exec(),
Jump.aggregate(queries.getAeronefsByImatQuery(user._id.toString()))
.skip(Number(offset))
.limit(Number(limit))
.exec(),
Jump.aggregate(queries.getAeronefsByImatByYearQuery(user._id.toString()))
.skip(Number(offset))
.limit(Number(limit))
.exec()
]).then(function (results) {
if (results[0].length) {
let lastjump = results[0][0].toJSONFor(user);
let aeronefsByImat = results[1].map(function (data) {
return { aeronef: data._id.aeronef, imat: data._id.imat, count: data.count };
});
let aeronefsByImatByYear = results[2].map(function (data) {
return {
aeronef: data._id.aeronef,
imat: data._id.imat,
year: data._id.year,
count: data.count
};
});
return res.json({
aeronefsByImat: aeronefsByImat,
aeronefsByImatByYear: aeronefsByImatByYear,
lastjump: lastjump
});
} else {
return res.status(422).json({ errors: { lastjump: "Aucun saut enregistré pour le moment" } });
}
}).catch(next);
}).catch(next);
});
router.get('/canopies', 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 = 120;
let offset = 0;
if (typeof req.query.limit !== 'undefined') {
limit = req.query.limit;
}
if (typeof req.query.offset !== 'undefined') {
offset = req.query.offset;
}
Promise.all([
Jump.find({})
.limit(1)
.skip(0)
.sort({ numero: 'desc' })
.populate('author')
.populate('files')
.populate('x2data')
.exec(),
Jump.aggregate(queries.getCanopiesBySizeQuery(user._id.toString()))
.skip(Number(offset))
.limit(Number(limit))
.exec(),
Jump.aggregate(queries.getCanopiesBySizeByYearQuery(user._id.toString()))
.skip(Number(offset))
.limit(Number(limit))
.exec(),
Jump.aggregate(queries.getCanopiesBySizeByModelQuery(user._id.toString()))
.skip(Number(offset))
.limit(Number(limit))
.exec(),
Jump.aggregate(queries.getCanopiesBySizeByModelByYearQuery(user._id.toString()))
.skip(Number(offset))
.limit(Number(limit))
.exec()
]).then(function (results) {
if (results[0].length) {
let lastjump = results[0][0].toJSONFor(user);
let canopiesBySize = results[1].map(function (data) {
return { taille: data._id.taille, count: data.count };
});
let canopiesBySizeByYear = results[2].map(function (data) {
return {
taille: data._id.taille,
year: data._id.year,
count: data.count
};
});
let canopiesBySizeByModel = results[3].map(function (data) {
return {
taille: data._id.taille,
voile: data._id.voile,
count: data.count
};
});
let canopiesBySizeByModelByYear = results[4].map(function (data) {
return {
taille: data._id.taille,
voile: data._id.voile,
year: data._id.year,
count: data.count
};
});
return res.json({
canopiesBySize: canopiesBySize,
canopiesBySizeByYear: canopiesBySizeByYear,
canopiesBySizeByModel: canopiesBySizeByModel,
canopiesBySizeByModelByYear: canopiesBySizeByModelByYear,
lastjump: lastjump
});
} else {
return res.status(422).json({ errors: { lastjump: "Aucun saut enregistré pour le moment" } });
}
}).catch(next);
}).catch(next);
});
router.get('/dropzones', 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 = 120;
let offset = 0;
if (typeof req.query.limit !== 'undefined') {
limit = req.query.limit;
}
if (typeof req.query.offset !== 'undefined') {
offset = req.query.offset;
}
Promise.all([
Jump.find({})
.limit(1)
.skip(0)
.sort({ numero: 'desc' })
.populate('author')
.populate('files')
.populate('x2data')
.exec(),
Jump.aggregate(queries.getDropZonesByOaciQuery(user._id.toString()))
.skip(Number(offset))
.limit(Number(limit))
.exec(),
Jump.aggregate(queries.getDropZonesByOaciByYearQuery(user._id.toString()))
.skip(Number(offset))
.limit(Number(limit))
.exec()
]).then(function (results) {
if (results[0].length) {
let lastjump = results[0][0].toJSONFor(user);
let dropZonesByOaci = results[1].map(function (data) {
return { lieu: data._id.lieu, oaci: data._id.oaci, count: data.count };
});
let dropZonesByOaciByYear = results[2].map(function (data) {
return {
lieu: data._id.lieu,
oaci: data._id.oaci,
year: data._id.year,
count: data.count
};
});
return res.json({
dropZonesByOaci: dropZonesByOaci,
dropZonesByOaciByYear: dropZonesByOaciByYear,
lastjump: lastjump
});
} else {
return res.status(422).json({ errors: { lastjump: "Aucun saut enregistré pour le moment" } });
}
}).catch(next);
}).catch(next);
});
router.get('/jumps', 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 = 120;
let offset = 0;
if (typeof req.query.limit !== 'undefined') {
limit = req.query.limit;
}
if (typeof req.query.offset !== 'undefined') {
offset = req.query.offset;
}
Promise.all([
Jump.find({})
.limit(1)
.skip(0)
.sort({ numero: 'desc' })
.populate('author')
.populate('files')
.populate('x2data')
.exec(),
Jump.aggregate(queries.getJumpByYearsQuery(user._id.toString()))
.skip(Number(offset))
.limit(Number(limit))
.exec(),
Jump.aggregate(queries.getJumpsByCategoryQuery(user._id.toString()))
.skip(Number(offset))
.limit(Number(limit))
.exec(),
Jump.aggregate(queries.getJumpsByModuleQuery(user._id.toString()))
.skip(Number(offset))
.limit(Number(limit))
.exec(),
Jump.aggregate(queries.getJumpsByDateQuery(user._id.toString()))
.skip(Number(offset))
.limit(Number(limit))
.exec(),
Jump.aggregate(queries.getJumpsByModuleByDateQuery(user._id.toString()))
.skip(Number(offset))
.limit(Number(limit))
.exec()
//utils.fetchSkydiverIdApi('jumps')
]).then(function (results) {
if (results[0].length) {
let lastjump = results[0][0].toJSONFor(user);
let jumpsByYears = results[1].map(function (data) {
return { year: data._id.year, count: data.count };
});
let jumpsByCategory = results[2].map(function (data) {
return { categorie: data._id.categorie, count: data.count };
});
let jumpsByModule = results[3].map(function (data) {
return { categorie: data._id.categorie, module: data._id.module, count: data.count };
});
let jumpsByDate = results[4].map(function (data) {
return { year: data._id.year, month: data._id.month, count: data.count };
});
let jumpsByDateByModule = results[5].map(function (data) {
return {
categorie: data._id.categorie,
module: data._id.module,
year: data._id.year,
month: data._id.month,
count: data.count
};
});
//let jumpsFromSkydiverIdApi = results[6];
return res.json({
jumpsByCategory: jumpsByCategory,
jumpsByDate: jumpsByDate,
jumpsByDateByModule: jumpsByDateByModule,
jumpsByModule: jumpsByModule,
jumpsByYears: jumpsByYears,
//jumpsFromSkydiverIdApi: jumpsFromSkydiverIdApi,
lastjump: lastjump
});
} else {
return res.status(422).json({ errors: { lastjump: "Aucun saut enregistré pour le moment" } });
}
}).catch(next);
}).catch(next);
});
module.exports = router;