refactor(skydive): replace MongoDB User with MySQL UserService
All skydive routes now fetch users via UserService (MySQL) instead of
mongoose.model('User'). Key changes:
- user._id.toString() → user.id (same UUID, different source)
- User.findOne({ username }) → UserService.getUserByUsername()
- /feed route migrated to async/await using UserService.getUserFollowed()
to resolve the following list from the MySQL Follower table
- jump/file/application author set as user.id (UUID string) instead of
the full Mongoose document
- jump.toJSONFor(null) — following field in responses is now always false
until Jump model is migrated away from MongoDB User dependency
- user.controller: licence/poids/bg_image routed to SkydiverProfileService
fixing the silent Sequelize save bug for those fields
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
const { UserService } = require('../services');
|
const { UserService, SkydiverProfileService } = require('../services');
|
||||||
const asyncHandler = require("../middlewares/asyncHandler");
|
const asyncHandler = require("../middlewares/asyncHandler");
|
||||||
const ErrorResponse = require("../utils/errorResponse");
|
const ErrorResponse = require("../utils/errorResponse");
|
||||||
var crypto = require('crypto');
|
var crypto = require('crypto');
|
||||||
@@ -129,33 +129,26 @@ module.exports.updateUser = asyncHandler(async (req, res, next) => {
|
|||||||
if (typeof req.body.user.phone !== 'undefined') {
|
if (typeof req.body.user.phone !== 'undefined') {
|
||||||
user.phone = req.body.user.phone;
|
user.phone = req.body.user.phone;
|
||||||
}
|
}
|
||||||
if (typeof req.body.user.licence !== 'undefined') {
|
|
||||||
user.licence = req.body.user.licence;
|
|
||||||
}
|
|
||||||
if (typeof req.body.user.poids !== 'undefined') {
|
|
||||||
user.poids = req.body.user.poids;
|
|
||||||
}
|
|
||||||
if (typeof req.body.user.image !== 'undefined') {
|
if (typeof req.body.user.image !== 'undefined') {
|
||||||
user.image = req.body.user.image;
|
user.image = req.body.user.image;
|
||||||
}
|
}
|
||||||
if (typeof req.body.user.bg_image !== 'undefined') {
|
|
||||||
user.bg_image = req.body.user.bg_image;
|
|
||||||
}
|
|
||||||
if (typeof req.body.user.role !== 'undefined') {
|
if (typeof req.body.user.role !== 'undefined') {
|
||||||
return next(new ErrorResponse("Forbidden", 403, "A suspected attempt to usurp rights has been detected. The suspicious activity has been reported and xill be investigated."));
|
return next(new ErrorResponse("Forbidden", 403, "A suspected attempt to usurp rights has been detected. The suspicious activity has been reported and xill be investigated."));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Persist changes using the service (service will save instance or update+fetch)
|
|
||||||
const updatedUser = await UserService.updateUserById(user, req.payload.id);
|
const updatedUser = await UserService.updateUserById(user, req.payload.id);
|
||||||
|
|
||||||
|
const skydiverFields = {};
|
||||||
|
if (typeof req.body.user.licence !== 'undefined') skydiverFields.licence = req.body.user.licence;
|
||||||
|
if (typeof req.body.user.poids !== 'undefined') skydiverFields.poids = req.body.user.poids;
|
||||||
|
if (typeof req.body.user.bg_image !== 'undefined') skydiverFields.bg_image = req.body.user.bg_image;
|
||||||
|
if (Object.keys(skydiverFields).length > 0) {
|
||||||
|
await SkydiverProfileService.upsert(req.payload.id, skydiverFields);
|
||||||
|
}
|
||||||
|
|
||||||
res.status(200).json({
|
res.status(200).json({
|
||||||
user: updatedUser.toAuthJSON()
|
user: updatedUser.toAuthJSON()
|
||||||
});
|
});
|
||||||
/*return user.save().then(function () {
|
|
||||||
return res.json({
|
|
||||||
message: 'User updated successfully.',
|
|
||||||
user: user.toAuthJSON()
|
|
||||||
});
|
|
||||||
});*/
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
return next(new ErrorResponse('Something went wrong while updating user.', 500, err.message));
|
return next(new ErrorResponse('Something went wrong while updating user.', 500, err.message));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,135 +0,0 @@
|
|||||||
var mongoose = require('mongoose');
|
|
||||||
var uniqueValidator = require('mongoose-unique-validator');
|
|
||||||
var crypto = require('crypto');
|
|
||||||
const { v4: uuidv4 } = require('uuid');
|
|
||||||
var jwt = require('jsonwebtoken'),
|
|
||||||
config = require('../../../config');
|
|
||||||
|
|
||||||
var UserSchema = new mongoose.Schema({
|
|
||||||
//_id: { type: String, default: uuidv4() },
|
|
||||||
_id: { type: mongoose.Schema.Types.UUID },
|
|
||||||
email: { type: String, lowercase: true, unique: true, required: [true, "email can't be blank"], match: [/\S+@\S+\.\S+/, 'is invalid'], index: true },
|
|
||||||
username: { type: String, lowercase: true, unique: true, required: [true, "username can't be blank"], match: [/^[a-zA-Z0-9_]+$/, 'is invalid'], index: true },
|
|
||||||
role: String,
|
|
||||||
firstname: { type: String, required: [true, "firstname can't be blank"] },
|
|
||||||
lastname: { type: String, required: [true, "lastname can't be blank"] },
|
|
||||||
phone: String,
|
|
||||||
licence: Number,
|
|
||||||
poids: Number,
|
|
||||||
image: String,
|
|
||||||
bg_image: String,
|
|
||||||
favorites: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Product' }],
|
|
||||||
following: [{ type: mongoose.Schema.Types.UUID, ref: 'User' }],
|
|
||||||
hash: String,
|
|
||||||
salt: String
|
|
||||||
}, { timestamps: true, toJSON: { virtuals: true } });
|
|
||||||
|
|
||||||
UserSchema.plugin(uniqueValidator, { message: 'is already taken.' });
|
|
||||||
|
|
||||||
UserSchema.methods.validPassword = function (password) {
|
|
||||||
let hash = crypto.pbkdf2Sync(password, this.salt, 10000, 512, 'sha512').toString('hex');
|
|
||||||
return this.hash === hash;
|
|
||||||
};
|
|
||||||
|
|
||||||
UserSchema.methods.setPassword = function (password) {
|
|
||||||
this.salt = crypto.randomBytes(16).toString('hex');
|
|
||||||
this.hash = crypto.pbkdf2Sync(password, this.salt, 10000, 512, 'sha512').toString('hex');
|
|
||||||
};
|
|
||||||
|
|
||||||
UserSchema.methods.generateJWT = function () {
|
|
||||||
var today = new Date();
|
|
||||||
var exp = new Date(today.getTime() + (config.session_lifetime * 1000));
|
|
||||||
|
|
||||||
return jwt.sign({
|
|
||||||
id: this._id,
|
|
||||||
username: this.username,
|
|
||||||
exp: parseInt(exp.getTime() / 1000)
|
|
||||||
}, config.secret, { algorithm: 'HS256' });
|
|
||||||
};
|
|
||||||
|
|
||||||
UserSchema.methods.toAuthJSON = function () {
|
|
||||||
return {
|
|
||||||
id: this._id,
|
|
||||||
email: this.email,
|
|
||||||
role: this.role,
|
|
||||||
token: this.generateJWT(),
|
|
||||||
firstname: this.firstname,
|
|
||||||
lastname: this.lastname,
|
|
||||||
phone: this.phone,
|
|
||||||
licence: this.licence,
|
|
||||||
poids: this.poids,
|
|
||||||
username: this.username,
|
|
||||||
image: this.image || '/assets/images/avatars/default.jpg',
|
|
||||||
bg_image: this.bg_image || '/assets/images/users/bg_user.jpg'
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
UserSchema.methods.toJSONFor = function () {
|
|
||||||
return {
|
|
||||||
email: this.email,
|
|
||||||
role: this.role,
|
|
||||||
firstname: this.firstname,
|
|
||||||
lastname: this.lastname,
|
|
||||||
phone: this.phone,
|
|
||||||
licence: this.licence,
|
|
||||||
poids: this.poids,
|
|
||||||
username: this.username,
|
|
||||||
image: this.image || '/assets/images/avatars/default.jpg',
|
|
||||||
bg_image: this.bg_image || '/assets/images/users/bg_user.jpg'
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
UserSchema.methods.toProfileJSONFor = function (user) {
|
|
||||||
return {
|
|
||||||
email: this.email,
|
|
||||||
firstname: this.firstname,
|
|
||||||
lastname: this.lastname,
|
|
||||||
phone: this.phone,
|
|
||||||
licence: this.licence,
|
|
||||||
poids: this.poids,
|
|
||||||
username: this.username,
|
|
||||||
image: this.image || '/assets/images/avatars/default.jpg',
|
|
||||||
bg_image: this.bg_image || '/assets/images/users/bg_user.jpg',
|
|
||||||
following: user ? user.isFollowing(this._id) : false
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
UserSchema.methods.favorite = function (id) {
|
|
||||||
if (this.favorites.indexOf(id) === -1) {
|
|
||||||
this.favorites.push(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.save();
|
|
||||||
};
|
|
||||||
|
|
||||||
UserSchema.methods.unfavorite = function (id) {
|
|
||||||
this.favorites.remove(id);
|
|
||||||
return this.save();
|
|
||||||
};
|
|
||||||
|
|
||||||
UserSchema.methods.isFavorite = function (id) {
|
|
||||||
return this.favorites.some(function (favoriteId) {
|
|
||||||
return favoriteId.toString() === id.toString();
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
UserSchema.methods.follow = function (id) {
|
|
||||||
if (this.following.indexOf(id) === -1) {
|
|
||||||
this.following.push(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.save();
|
|
||||||
};
|
|
||||||
|
|
||||||
UserSchema.methods.unfollow = function (id) {
|
|
||||||
this.following.remove(id);
|
|
||||||
return this.save();
|
|
||||||
};
|
|
||||||
|
|
||||||
UserSchema.methods.isFollowing = function (id) {
|
|
||||||
return this.following.some(function (followId) {
|
|
||||||
return followId.toString() === id.toString();
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
mongoose.model('User', UserSchema);
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
var router = require('express').Router(),
|
var router = require('express').Router(),
|
||||||
mongoose = require('mongoose'),
|
mongoose = require('mongoose'),
|
||||||
Jump = mongoose.model('Jump'),
|
Jump = mongoose.model('Jump');
|
||||||
User = mongoose.model('User');
|
|
||||||
const auth = require('../../../middlewares/auth'),
|
const auth = require('../../../middlewares/auth'),
|
||||||
queries = require('../../queries');
|
queries = require('../../queries');
|
||||||
|
const { UserService } = require('../../../services');
|
||||||
|
|
||||||
|
|
||||||
router.get('/allByImat', auth.required, function (req, res, next) {
|
router.get('/allByImat', auth.required, function (req, res, next) {
|
||||||
@@ -16,40 +16,30 @@ router.get('/allByImat', auth.required, function (req, res, next) {
|
|||||||
offset = req.query.offset;
|
offset = req.query.offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
let query = queries.getAeronefsByImatQuery(user._id.toString());
|
let query = queries.getAeronefsByImatQuery(user.id);
|
||||||
Promise.all([
|
Promise.all([
|
||||||
Jump.aggregate(query)
|
Jump.aggregate(query)
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
.limit(Number(limit))
|
.limit(Number(limit))
|
||||||
.exec()
|
.exec()
|
||||||
//Aeronef.count(query)
|
|
||||||
]).then(function (results) {
|
]).then(function (results) {
|
||||||
let aeronefs = results[0];
|
let aeronefs = results[0];
|
||||||
//let aeronefsCount = results[1];
|
|
||||||
return res.json({
|
return res.json({
|
||||||
aeronefs: aeronefs.map(function (data) {
|
aeronefs: aeronefs.map(function (data) {
|
||||||
return { aeronef: data._id.aeronef, imat: data._id.imat, count: data.count };
|
return { aeronef: data._id.aeronef, imat: data._id.imat, count: data.count };
|
||||||
}),
|
}),
|
||||||
aeronefsCount: aeronefs.length
|
aeronefsCount: aeronefs.length
|
||||||
});
|
});
|
||||||
/*
|
|
||||||
return res.json({
|
|
||||||
aeronefs: aeronefs.map(function (aeronef) {
|
|
||||||
return aeronef.toJSONFor(user);
|
|
||||||
}),
|
|
||||||
aeronefsCount: aeronefsCount
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
}).catch(next);
|
}).catch(next);
|
||||||
}).catch(next);
|
}).catch(next);
|
||||||
});
|
});
|
||||||
|
|
||||||
router.get('/allByImatByYear', auth.required, function (req, res, next) {
|
router.get('/allByImatByYear', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
@@ -61,7 +51,7 @@ router.get('/allByImatByYear', auth.required, function (req, res, next) {
|
|||||||
if (typeof req.query.offset !== 'undefined') {
|
if (typeof req.query.offset !== 'undefined') {
|
||||||
offset = req.query.offset;
|
offset = req.query.offset;
|
||||||
}
|
}
|
||||||
let query = queries.getAeronefsByImatByYearQuery(user._id.toString());
|
let query = queries.getAeronefsByImatByYearQuery(user.id);
|
||||||
|
|
||||||
Jump.aggregate(query)
|
Jump.aggregate(query)
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
@@ -77,67 +67,6 @@ router.get('/allByImatByYear', auth.required, function (req, res, next) {
|
|||||||
});
|
});
|
||||||
}).catch(next);
|
}).catch(next);
|
||||||
}).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;
|
module.exports = router;
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
var router = require('express').Router(),
|
var router = require('express').Router(),
|
||||||
mongoose = require('mongoose'),
|
mongoose = require('mongoose'),
|
||||||
Application = mongoose.model('Application'),
|
Application = mongoose.model('Application');
|
||||||
User = mongoose.model('User');
|
|
||||||
const auth = require('../../../middlewares/auth'),
|
const auth = require('../../../middlewares/auth'),
|
||||||
mailer = require('@sendgrid/mail');
|
mailer = require('@sendgrid/mail');
|
||||||
|
const { UserService } = require('../../../services');
|
||||||
|
|
||||||
mailer.setApiKey(process.env.SENDGRID_API_KEY);
|
mailer.setApiKey(process.env.SENDGRID_API_KEY);
|
||||||
|
|
||||||
@@ -42,10 +42,10 @@ router.get('/', auth.required, function (req, res, next) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Promise.all([
|
Promise.all([
|
||||||
req.query.author ? User.findOne({ username: req.query.author }) : null
|
req.query.author ? UserService.getUserByUsername(req.query.author) : null
|
||||||
]).then(function (author) {
|
]).then(function (author) {
|
||||||
if (author[0]) {
|
if (author[0]) {
|
||||||
query.author = author[0]._id;
|
query.author = author[0].id;
|
||||||
}
|
}
|
||||||
return Promise.all([
|
return Promise.all([
|
||||||
Application.find(query)
|
Application.find(query)
|
||||||
@@ -55,7 +55,7 @@ router.get('/', auth.required, function (req, res, next) {
|
|||||||
.populate('author')
|
.populate('author')
|
||||||
.exec(),
|
.exec(),
|
||||||
Application.count(query).exec(),
|
Application.count(query).exec(),
|
||||||
req.payload ? User.findById(req.payload.id) : null
|
req.payload ? UserService.getUserById(req.payload.id) : null
|
||||||
]).then(function (results) {
|
]).then(function (results) {
|
||||||
let applications = results[0];
|
let applications = results[0];
|
||||||
let applicationsCount = results[1];
|
let applicationsCount = results[1];
|
||||||
@@ -76,7 +76,7 @@ router.get('/', auth.required, function (req, res, next) {
|
|||||||
*/
|
*/
|
||||||
router.post('/', auth.required, function (req, res, next) {
|
router.post('/', auth.required, function (req, res, next) {
|
||||||
Promise.all([
|
Promise.all([
|
||||||
User.findById(req.payload.id),
|
UserService.getUserById(req.payload.id),
|
||||||
auth.generateAPIKey()
|
auth.generateAPIKey()
|
||||||
]).then(function (results) {
|
]).then(function (results) {
|
||||||
let user = results[0];
|
let user = results[0];
|
||||||
@@ -85,7 +85,7 @@ router.post('/', auth.required, function (req, res, next) {
|
|||||||
return res.sendStatus(401).json({message: "Unauthorized - You are not allowed to access this resource."});
|
return res.sendStatus(401).json({message: "Unauthorized - You are not allowed to access this resource."});
|
||||||
}
|
}
|
||||||
let application = new Application(req.body.application);
|
let application = new Application(req.body.application);
|
||||||
application.author = user;
|
application.author = user.id;
|
||||||
application.apikey = keys.encrypted;
|
application.apikey = keys.encrypted;
|
||||||
application.maskedkey = keys.masked;
|
application.maskedkey = keys.masked;
|
||||||
return application.save().then(function () {
|
return application.save().then(function () {
|
||||||
@@ -117,7 +117,7 @@ router.post('/', auth.required, function (req, res, next) {
|
|||||||
*/
|
*/
|
||||||
router.get('/:application', auth.required, function (req, res, next) {
|
router.get('/:application', auth.required, function (req, res, next) {
|
||||||
Promise.all([
|
Promise.all([
|
||||||
req.payload ? User.findById(req.payload.id) : null,
|
req.payload ? UserService.getUserById(req.payload.id) : null,
|
||||||
req.application.populate('author')
|
req.application.populate('author')
|
||||||
]).then(function (results) {
|
]).then(function (results) {
|
||||||
let user = results[0];
|
let user = results[0];
|
||||||
@@ -129,8 +129,9 @@ router.get('/:application', auth.required, function (req, res, next) {
|
|||||||
* update an application
|
* update an application
|
||||||
*/
|
*/
|
||||||
router.put('/:application', auth.required, function (req, res, next) {
|
router.put('/:application', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (req.application.author._id.toString() === req.payload.id.toString()) {
|
const authorId = req.application.author?.id ?? req.application.author?.toString();
|
||||||
|
if (authorId === req.payload.id) {
|
||||||
if (typeof req.body.application.title !== 'undefined') {
|
if (typeof req.body.application.title !== 'undefined') {
|
||||||
req.application.title = req.body.application.title;
|
req.application.title = req.body.application.title;
|
||||||
}
|
}
|
||||||
@@ -156,11 +157,12 @@ router.put('/:application', auth.required, function (req, res, next) {
|
|||||||
* delete an application
|
* delete an application
|
||||||
*/
|
*/
|
||||||
router.delete('/:application', auth.required, function (req, res, next) {
|
router.delete('/:application', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
if (user.role == 'Admin' || req.application.author._id.toString() === req.payload.id.toString()) {
|
const authorId = req.application.author?.id ?? req.application.author?.toString();
|
||||||
|
if (user.role == 'Admin' || authorId === req.payload.id) {
|
||||||
return req.application.remove().then(function () {
|
return req.application.remove().then(function () {
|
||||||
return res.json({ deleted: true });
|
return res.json({ deleted: true });
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
var router = require('express').Router(),
|
var router = require('express').Router(),
|
||||||
mongoose = require('mongoose'),
|
mongoose = require('mongoose'),
|
||||||
Jump = mongoose.model('Jump'),
|
Jump = mongoose.model('Jump');
|
||||||
User = mongoose.model('User');
|
|
||||||
const auth = require('../../../middlewares/auth'),
|
const auth = require('../../../middlewares/auth'),
|
||||||
queries = require('../../queries');
|
queries = require('../../queries');
|
||||||
|
const { UserService } = require('../../../services');
|
||||||
|
|
||||||
router.get('/', auth.required, function (req, res, next) {
|
router.get('/', auth.required, function (req, res, next) {
|
||||||
let query = {};
|
let query = {};
|
||||||
@@ -19,7 +19,7 @@ router.get('/', auth.required, function (req, res, next) {
|
|||||||
query.slug = req.query.slug;
|
query.slug = req.query.slug;
|
||||||
}
|
}
|
||||||
|
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
@@ -50,11 +50,11 @@ router.get('/allBySize', auth.required, function (req, res, next) {
|
|||||||
offset = req.query.offset;
|
offset = req.query.offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
let query = queries.getCanopiesBySizeQuery(user._id.toString());
|
let query = queries.getCanopiesBySizeQuery(user.id);
|
||||||
Jump.aggregate(query)
|
Jump.aggregate(query)
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
.limit(Number(limit))
|
.limit(Number(limit))
|
||||||
@@ -72,7 +72,7 @@ router.get('/allBySize', auth.required, function (req, res, next) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
router.get('/allBySizeByYear', auth.required, function (req, res, next) {
|
router.get('/allBySizeByYear', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
@@ -84,7 +84,7 @@ router.get('/allBySizeByYear', auth.required, function (req, res, next) {
|
|||||||
if (typeof req.query.offset !== 'undefined') {
|
if (typeof req.query.offset !== 'undefined') {
|
||||||
offset = req.query.offset;
|
offset = req.query.offset;
|
||||||
}
|
}
|
||||||
let query = queries.getCanopiesBySizeByYearQuery(user._id.toString());
|
let query = queries.getCanopiesBySizeByYearQuery(user.id);
|
||||||
Jump.aggregate(query)
|
Jump.aggregate(query)
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
.limit(Number(limit))
|
.limit(Number(limit))
|
||||||
@@ -93,7 +93,6 @@ router.get('/allBySizeByYear', auth.required, function (req, res, next) {
|
|||||||
let canopies = result.map(function (data) {
|
let canopies = result.map(function (data) {
|
||||||
return { taille: data._id.taille, year: data._id.year, count: data.count };
|
return { taille: data._id.taille, year: data._id.year, count: data.count };
|
||||||
});
|
});
|
||||||
//console.log(dropzones);
|
|
||||||
return res.json({
|
return res.json({
|
||||||
canopies: canopies,
|
canopies: canopies,
|
||||||
canopiesCount: canopies.length
|
canopiesCount: canopies.length
|
||||||
@@ -112,11 +111,11 @@ router.get('/allBySizeByModel', auth.required, function (req, res, next) {
|
|||||||
offset = req.query.offset;
|
offset = req.query.offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
let query = queries.getCanopiesBySizeByModelQuery(user._id.toString());
|
let query = queries.getCanopiesBySizeByModelQuery(user.id);
|
||||||
Jump.aggregate(query)
|
Jump.aggregate(query)
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
.limit(Number(limit))
|
.limit(Number(limit))
|
||||||
@@ -134,7 +133,7 @@ router.get('/allBySizeByModel', auth.required, function (req, res, next) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
router.get('/allBySizeByModelByYear', auth.required, function (req, res, next) {
|
router.get('/allBySizeByModelByYear', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
@@ -146,7 +145,7 @@ router.get('/allBySizeByModelByYear', auth.required, function (req, res, next) {
|
|||||||
if (typeof req.query.offset !== 'undefined') {
|
if (typeof req.query.offset !== 'undefined') {
|
||||||
offset = req.query.offset;
|
offset = req.query.offset;
|
||||||
}
|
}
|
||||||
let query = queries.getCanopiesBySizeByModelByYearQuery(user._id.toString());
|
let query = queries.getCanopiesBySizeByModelByYearQuery(user.id);
|
||||||
Jump.aggregate(query)
|
Jump.aggregate(query)
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
.limit(Number(limit))
|
.limit(Number(limit))
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
var router = require('express').Router(),
|
var router = require('express').Router(),
|
||||||
mongoose = require('mongoose'),
|
mongoose = require('mongoose'),
|
||||||
Jump = mongoose.model('Jump'),
|
Jump = mongoose.model('Jump');
|
||||||
User = mongoose.model('User');
|
|
||||||
const auth = require('../../../middlewares/auth'),
|
const auth = require('../../../middlewares/auth'),
|
||||||
queries = require('../../queries');
|
queries = require('../../queries');
|
||||||
|
const { UserService } = require('../../../services');
|
||||||
|
|
||||||
|
|
||||||
router.get('/allByOaci', auth.required, function (req, res, next) {
|
router.get('/allByOaci', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
@@ -19,7 +19,7 @@ router.get('/allByOaci', auth.required, function (req, res, next) {
|
|||||||
if (typeof req.query.offset !== 'undefined') {
|
if (typeof req.query.offset !== 'undefined') {
|
||||||
offset = req.query.offset;
|
offset = req.query.offset;
|
||||||
}
|
}
|
||||||
let query = queries.getDropZonesByOaciQuery(user._id.toString());
|
let query = queries.getDropZonesByOaciQuery(user.id);
|
||||||
Jump.aggregate(query)
|
Jump.aggregate(query)
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
.limit(Number(limit))
|
.limit(Number(limit))
|
||||||
@@ -37,7 +37,7 @@ router.get('/allByOaci', auth.required, function (req, res, next) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
router.get('/allByOaciByYear', auth.required, function (req, res, next) {
|
router.get('/allByOaciByYear', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
@@ -49,7 +49,7 @@ router.get('/allByOaciByYear', auth.required, function (req, res, next) {
|
|||||||
if (typeof req.query.offset !== 'undefined') {
|
if (typeof req.query.offset !== 'undefined') {
|
||||||
offset = req.query.offset;
|
offset = req.query.offset;
|
||||||
}
|
}
|
||||||
let query = queries.getDropZonesByOaciByYearQuery(user._id.toString());
|
let query = queries.getDropZonesByOaciByYearQuery(user.id);
|
||||||
Jump.aggregate(query)
|
Jump.aggregate(query)
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
.limit(Number(limit))
|
.limit(Number(limit))
|
||||||
|
|||||||
@@ -2,13 +2,13 @@ var router = require('express').Router(),
|
|||||||
mongoose = require('mongoose'),
|
mongoose = require('mongoose'),
|
||||||
Jump = mongoose.model('Jump'),
|
Jump = mongoose.model('Jump'),
|
||||||
JumpFile = mongoose.model('JumpFile'),
|
JumpFile = mongoose.model('JumpFile'),
|
||||||
User = mongoose.model('User'),
|
|
||||||
X2DataLog = mongoose.model('X2DataLog');
|
X2DataLog = mongoose.model('X2DataLog');
|
||||||
const auth = require('../../../middlewares/auth'),
|
const auth = require('../../../middlewares/auth'),
|
||||||
chalk = require('chalk'),
|
chalk = require('chalk'),
|
||||||
queries = require('../../queries');
|
queries = require('../../queries');
|
||||||
const DateUtilities = require('../../../utils/dateUtilities');
|
const DateUtilities = require('../../../utils/dateUtilities');
|
||||||
const utils = require('../../../utils');
|
const utils = require('../../../utils');
|
||||||
|
const { UserService } = require('../../../services');
|
||||||
|
|
||||||
// Preload jump objects on routes with ':jump'
|
// Preload jump objects on routes with ':jump'
|
||||||
router.param('jump', function (req, res, next, slug) {
|
router.param('jump', function (req, res, next, slug) {
|
||||||
@@ -85,13 +85,13 @@ router.get('/', auth.required, function (req, res, next) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Promise.all([
|
Promise.all([
|
||||||
req.query.author ? User.findOne({ username: req.query.author }) : null,
|
req.query.author ? UserService.getUserByUsername(req.query.author) : null,
|
||||||
req.query.favorited ? User.findOne({ username: req.query.favorited }) : null
|
req.query.favorited ? UserService.getUserByUsername(req.query.favorited) : null
|
||||||
]).then(function (users) {
|
]).then(function (users) {
|
||||||
let author = users[0];
|
let author = users[0];
|
||||||
|
|
||||||
if (author) {
|
if (author) {
|
||||||
query.author = author._id;
|
query.author = author.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
Promise.all([
|
Promise.all([
|
||||||
@@ -104,33 +104,13 @@ router.get('/', auth.required, function (req, res, next) {
|
|||||||
.populate('x2data')
|
.populate('x2data')
|
||||||
.exec(),
|
.exec(),
|
||||||
Jump.count(query).exec(),
|
Jump.count(query).exec(),
|
||||||
req.payload ? User.findById(req.payload.id) : null
|
req.payload ? UserService.getUserById(req.payload.id) : null
|
||||||
]).then(function (results) {
|
]).then(function (results) {
|
||||||
let jumps = results[0];
|
let jumps = results[0];
|
||||||
let jumpsCount = results[1];
|
let jumpsCount = results[1];
|
||||||
let user = results[2];
|
|
||||||
/*
|
|
||||||
Promise.all(
|
|
||||||
jumps.map(jump => {
|
|
||||||
if (jump.files[0] !== undefined && jump.files[0].type !== 'kml') {
|
|
||||||
console.log( chalk.green(`Fichier ${jump.files[0].type}`))
|
|
||||||
//console.log( chalk.green(`Suppression du fichier ${jump.files[2]._id}`))
|
|
||||||
//return jump.removeFile(jump.files[2]._id);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
})
|
|
||||||
).then(function () {
|
|
||||||
return res.json({
|
return res.json({
|
||||||
jumps: jumps.map(function (jump) {
|
jumps: jumps.map(function (jump) {
|
||||||
return jump.toJSONFor(user);
|
return jump.toJSONFor(null);
|
||||||
}),
|
|
||||||
jumpsCount: jumpsCount
|
|
||||||
});
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
return res.json({
|
|
||||||
jumps: jumps.map(function (jump) {
|
|
||||||
return jump.toJSONFor(user);
|
|
||||||
}),
|
}),
|
||||||
jumpsCount: jumpsCount
|
jumpsCount: jumpsCount
|
||||||
});
|
});
|
||||||
@@ -139,7 +119,7 @@ router.get('/', auth.required, function (req, res, next) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
router.get('/allByCategorie', auth.required, function (req, res, next) {
|
router.get('/allByCategorie', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
@@ -151,7 +131,7 @@ router.get('/allByCategorie', auth.required, function (req, res, next) {
|
|||||||
if (typeof req.query.offset !== 'undefined') {
|
if (typeof req.query.offset !== 'undefined') {
|
||||||
offset = req.query.offset;
|
offset = req.query.offset;
|
||||||
}
|
}
|
||||||
let query = queries.getJumpsByCategoryQuery(user._id.toString());
|
let query = queries.getJumpsByCategoryQuery(user.id);
|
||||||
|
|
||||||
Jump.aggregate(query)
|
Jump.aggregate(query)
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
@@ -170,7 +150,7 @@ router.get('/allByCategorie', auth.required, function (req, res, next) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
router.get('/allByDate', auth.required, function (req, res, next) {
|
router.get('/allByDate', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
@@ -182,7 +162,7 @@ router.get('/allByDate', auth.required, function (req, res, next) {
|
|||||||
if (typeof req.query.offset !== 'undefined') {
|
if (typeof req.query.offset !== 'undefined') {
|
||||||
offset = req.query.offset;
|
offset = req.query.offset;
|
||||||
}
|
}
|
||||||
let query = queries.getJumpsByDateQuery(user._id.toString());
|
let query = queries.getJumpsByDateQuery(user.id);
|
||||||
|
|
||||||
Jump.aggregate(query)
|
Jump.aggregate(query)
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
@@ -201,7 +181,7 @@ router.get('/allByDate', auth.required, function (req, res, next) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
router.get('/allByDay', auth.required, function (req, res, next) {
|
router.get('/allByDay', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
@@ -216,12 +196,12 @@ router.get('/allByDay', auth.required, function (req, res, next) {
|
|||||||
}
|
}
|
||||||
if (typeof req.query.dateRangeStart !== 'undefined' && typeof req.query.dateRangeEnd !== 'undefined') {
|
if (typeof req.query.dateRangeStart !== 'undefined' && typeof req.query.dateRangeEnd !== 'undefined') {
|
||||||
query = queries.getJumpsByDayQuery(
|
query = queries.getJumpsByDayQuery(
|
||||||
user._id.toString(),
|
user.id,
|
||||||
req.query.dateRangeStart,
|
req.query.dateRangeStart,
|
||||||
req.query.dateRangeEnd
|
req.query.dateRangeEnd
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
query = queries.getJumpsByDayQuery(user._id.toString());
|
query = queries.getJumpsByDayQuery(user.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
Jump.aggregate(query)
|
Jump.aggregate(query)
|
||||||
@@ -241,7 +221,7 @@ router.get('/allByDay', auth.required, function (req, res, next) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
router.get('/allByModule', auth.required, function (req, res, next) {
|
router.get('/allByModule', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
@@ -253,7 +233,7 @@ router.get('/allByModule', auth.required, function (req, res, next) {
|
|||||||
if (typeof req.query.offset !== 'undefined') {
|
if (typeof req.query.offset !== 'undefined') {
|
||||||
offset = req.query.offset;
|
offset = req.query.offset;
|
||||||
}
|
}
|
||||||
let query = queries.getJumpsByModuleQuery(user._id.toString());
|
let query = queries.getJumpsByModuleQuery(user.id);
|
||||||
|
|
||||||
Jump.aggregate(query)
|
Jump.aggregate(query)
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
@@ -275,7 +255,7 @@ router.get('/allByModule', auth.required, function (req, res, next) {
|
|||||||
* return a jump from SkydiverId API
|
* return a jump from SkydiverId API
|
||||||
*/
|
*/
|
||||||
router.get('/allFromSkydiverIdApi', auth.required, function (req, res, next) {
|
router.get('/allFromSkydiverIdApi', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
@@ -293,7 +273,7 @@ router.get('/allFromSkydiverIdApi', auth.required, function (req, res, next) {
|
|||||||
}).catch(next);
|
}).catch(next);
|
||||||
});
|
});
|
||||||
|
|
||||||
router.get('/feed', auth.required, function (req, res, next) {
|
router.get('/feed', auth.required, async function (req, res, next) {
|
||||||
let limit = 25;
|
let limit = 25;
|
||||||
let offset = 0;
|
let offset = 0;
|
||||||
if (typeof req.query.limit !== 'undefined') {
|
if (typeof req.query.limit !== 'undefined') {
|
||||||
@@ -303,12 +283,15 @@ router.get('/feed', auth.required, function (req, res, next) {
|
|||||||
offset = req.query.offset;
|
offset = req.query.offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
User.findById(req.payload.id).then(function (user) {
|
try {
|
||||||
|
const user = await UserService.getUserById(req.payload.id);
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
let query = { author: { $in: user.following } };
|
const following = await UserService.getUserFollowed(user);
|
||||||
Promise.all([
|
const followingIds = following.map(u => u.id);
|
||||||
|
let query = { author: { $in: followingIds } };
|
||||||
|
const [jumps, jumpsCount] = await Promise.all([
|
||||||
Jump.find(query)
|
Jump.find(query)
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
.limit(Number(limit))
|
.limit(Number(limit))
|
||||||
@@ -317,37 +300,27 @@ router.get('/feed', auth.required, function (req, res, next) {
|
|||||||
.populate('x2data')
|
.populate('x2data')
|
||||||
.exec(),
|
.exec(),
|
||||||
Jump.count(query)
|
Jump.count(query)
|
||||||
]).then(function (results) {
|
]);
|
||||||
let jumps = results[0];
|
|
||||||
let jumpsCount = results[1];
|
|
||||||
return res.json({
|
return res.json({
|
||||||
jumps: jumps.map(function (jump) {
|
jumps: jumps.map(function (jump) {
|
||||||
return jump.toJSONFor(user);
|
return jump.toJSONFor(null);
|
||||||
}),
|
}),
|
||||||
jumpsCount: jumpsCount
|
jumpsCount: jumpsCount
|
||||||
});
|
});
|
||||||
}).catch(next);
|
} catch (err) {
|
||||||
});
|
next(err);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* return last jump
|
* return last jump
|
||||||
*/
|
*/
|
||||||
router.get('/last', auth.required, function (req, res, next) {
|
router.get('/last', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
/*Jump.findOne({ slug: slug })
|
Jump.find({author: user.id})
|
||||||
.populate('author')
|
|
||||||
.then(function (jump) {
|
|
||||||
if (!jump) {
|
|
||||||
return res.sendStatus(404);
|
|
||||||
}
|
|
||||||
req.jump = jump;
|
|
||||||
return next();
|
|
||||||
}).catch(next);*/
|
|
||||||
Jump.find({author: user._id})
|
|
||||||
.limit(1)
|
.limit(1)
|
||||||
.sort({ numero: 'desc' })
|
.sort({ numero: 'desc' })
|
||||||
.populate('author')
|
.populate('author')
|
||||||
@@ -362,7 +335,7 @@ router.get('/last', auth.required, function (req, res, next) {
|
|||||||
if (req.lastjump.author.username !== req.payload.username) {
|
if (req.lastjump.author.username !== req.payload.username) {
|
||||||
return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } });
|
return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } });
|
||||||
}
|
}
|
||||||
return res.json({ jump: req.lastjump.toJSONFor(user) });
|
return res.json({ jump: req.lastjump.toJSONFor(null) });
|
||||||
}).catch(next);
|
}).catch(next);
|
||||||
}).catch(next);
|
}).catch(next);
|
||||||
});
|
});
|
||||||
@@ -371,11 +344,12 @@ router.get('/last', auth.required, function (req, res, next) {
|
|||||||
* return a jump
|
* return a jump
|
||||||
*/
|
*/
|
||||||
router.get('/:jump', auth.required, function (req, res, next) {
|
router.get('/:jump', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
if (req.jump.author._id.toString() !== req.payload.id.toString()) {
|
const authorId = req.jump.author?.id ?? req.jump.author?.toString();
|
||||||
|
if (authorId !== req.payload.id) {
|
||||||
return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } });
|
return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } });
|
||||||
}
|
}
|
||||||
Promise.all([
|
Promise.all([
|
||||||
@@ -383,7 +357,7 @@ router.get('/:jump', auth.required, function (req, res, next) {
|
|||||||
Jump.findOne({numero: (req.jump.numero + 1)}).exec(),
|
Jump.findOne({numero: (req.jump.numero + 1)}).exec(),
|
||||||
]).then(function (results) {
|
]).then(function (results) {
|
||||||
return res.json({
|
return res.json({
|
||||||
jump: req.jump.toJSONFor(user),
|
jump: req.jump.toJSONFor(null),
|
||||||
prevJump: results[0],
|
prevJump: results[0],
|
||||||
nextJump: results[1]
|
nextJump: results[1]
|
||||||
});
|
});
|
||||||
@@ -395,49 +369,44 @@ router.get('/:jump', auth.required, function (req, res, next) {
|
|||||||
* save a jump
|
* save a jump
|
||||||
*/
|
*/
|
||||||
router.post('/', auth.required, function (req, res, next) {
|
router.post('/', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
//let numero = (results[1][0].numero + 1);
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
let jump = new Jump(req.body.jump);
|
let jump = new Jump(req.body.jump);
|
||||||
jump.author = user;
|
jump.author = user.id;
|
||||||
//jump.numero = numero;
|
|
||||||
return jump.save().then(function () {
|
return jump.save().then(function () {
|
||||||
return res.json({ jump: jump.toJSONFor(user) });
|
return res.json({ jump: jump.toJSONFor(null) });
|
||||||
});
|
});
|
||||||
}).catch(next);
|
}).catch(next);
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* save a jump file
|
* save jump data file
|
||||||
*/
|
*/
|
||||||
router.post('/data/:jump', auth.required, function (req, res, next) {
|
router.post('/data/:jump', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
if (req.jump.author._id.toString() !== req.payload.id.toString()) {
|
const authorId = req.jump.author?.id ?? req.jump.author?.toString();
|
||||||
|
if (authorId !== req.payload.id) {
|
||||||
return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } });
|
return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } });
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
console.log(req.jump.files);
|
|
||||||
return res.json({ jump: req.jump.toJSONFor(user) });
|
|
||||||
*/
|
|
||||||
Object.assign(req.body.file, {_id: new mongoose.Types.ObjectId()});
|
Object.assign(req.body.file, {_id: new mongoose.Types.ObjectId()});
|
||||||
let file = new JumpFile(req.body.file);
|
let file = new JumpFile(req.body.file);
|
||||||
let files = req.jump.files ? req.jump.files : [];
|
let files = req.jump.files ? req.jump.files : [];
|
||||||
file.author = user;
|
file.author = user.id;
|
||||||
files.push(file);
|
files.push(file);
|
||||||
return file.save().then(function () {
|
return file.save().then(function () {
|
||||||
Object.assign(req.body.data, {_id: new mongoose.Types.ObjectId()});
|
Object.assign(req.body.data, {_id: new mongoose.Types.ObjectId()});
|
||||||
let x2data = new X2DataLog(req.body.data);
|
let x2data = new X2DataLog(req.body.data);
|
||||||
x2data.author = user;
|
x2data.author = user.id;
|
||||||
return x2data.save().then(function () {
|
return x2data.save().then(function () {
|
||||||
req.jump.files = files;
|
req.jump.files = files;
|
||||||
req.jump.x2data = x2data;
|
req.jump.x2data = x2data;
|
||||||
Jump.updateOne({_id: req.jump._id}, {files: files, x2data: x2data._id}).then(function () {
|
Jump.updateOne({_id: req.jump._id}, {files: files, x2data: x2data._id}).then(function () {
|
||||||
return res.json({ jump: req.jump.toJSONFor(user) });
|
return res.json({ jump: req.jump.toJSONFor(null) });
|
||||||
}).catch(next);
|
}).catch(next);
|
||||||
}).catch(next);
|
}).catch(next);
|
||||||
}).catch(next);
|
}).catch(next);
|
||||||
@@ -448,17 +417,18 @@ router.post('/data/:jump', auth.required, function (req, res, next) {
|
|||||||
* save a jump file
|
* save a jump file
|
||||||
*/
|
*/
|
||||||
router.post('/file/:jump', auth.required, function (req, res, next) {
|
router.post('/file/:jump', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
if (req.jump.author._id.toString() !== req.payload.id.toString()) {
|
const authorId = req.jump.author?.id ?? req.jump.author?.toString();
|
||||||
|
if (authorId !== req.payload.id) {
|
||||||
return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } });
|
return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } });
|
||||||
}
|
}
|
||||||
Object.assign(req.body.file, {_id: new mongoose.Types.ObjectId()});
|
Object.assign(req.body.file, {_id: new mongoose.Types.ObjectId()});
|
||||||
let file = new JumpFile(req.body.file);
|
let file = new JumpFile(req.body.file);
|
||||||
let files = req.jump.files ? req.jump.files : [];
|
let files = req.jump.files ? req.jump.files : [];
|
||||||
file.author = user;
|
file.author = user.id;
|
||||||
files.push(file);
|
files.push(file);
|
||||||
return file.save().then(function () {
|
return file.save().then(function () {
|
||||||
Jump.updateOne({_id: req.jump._id}, {files: files}).then(function () {
|
Jump.updateOne({_id: req.jump._id}, {files: files}).then(function () {
|
||||||
@@ -469,14 +439,15 @@ router.post('/file/:jump', auth.required, function (req, res, next) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* save a jump file
|
* save a jump kml file
|
||||||
*/
|
*/
|
||||||
router.post('/kml/:jump', auth.required, function (req, res, next) {
|
router.post('/kml/:jump', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
if (req.jump.author._id.toString() !== req.payload.id.toString()) {
|
const authorId = req.jump.author?.id ?? req.jump.author?.toString();
|
||||||
|
if (authorId !== req.payload.id) {
|
||||||
return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } });
|
return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } });
|
||||||
}
|
}
|
||||||
Object.assign(req.body.file, {
|
Object.assign(req.body.file, {
|
||||||
@@ -487,45 +458,9 @@ router.post('/kml/:jump', auth.required, function (req, res, next) {
|
|||||||
});
|
});
|
||||||
let file = new JumpFile(req.body.file);
|
let file = new JumpFile(req.body.file);
|
||||||
let files = req.jump.files ? req.jump.files : [];
|
let files = req.jump.files ? req.jump.files : [];
|
||||||
file.author = user;
|
file.author = user.id;
|
||||||
files.push(file);
|
files.push(file);
|
||||||
//console.log(chalk.yellow(`jump/${req.jump.x2data.id}/kml`));
|
|
||||||
return res.json({ file: file.toJSONForJump() });
|
return res.json({ file: file.toJSONForJump() });
|
||||||
/*
|
|
||||||
DateUtilities.fetchSkydiverIdApi(`jump/${req.jump.x2data.id}/kml`, {}).then(result => {
|
|
||||||
if (result.errors === undefined) {
|
|
||||||
console.log(`${DateUtilities.getDateTimeISOString()}`, chalk.green(`Réception de l'url du fichier kml SkydiverId`));
|
|
||||||
} else {
|
|
||||||
console.log(`${DateUtilities.getDateTimeISOString()}`, chalk.red(`Une erreur ${result.errors.code} '${result.errors.type}' est survenue lors de la réception de l'url du fichier kml SkydiverId : ${result.errors.name} ${result.errors.message}`));
|
|
||||||
}
|
|
||||||
if (result.url !== undefined) {
|
|
||||||
console.log(chalk.green(result.url));
|
|
||||||
} else {
|
|
||||||
console.log(chalk.red('result.url is undefined'));
|
|
||||||
}
|
|
||||||
return res.json({ file: file.toJSONForJump() });
|
|
||||||
}).catch(next);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return file.save().then(function () {
|
|
||||||
Jump.updateOne({_id: req.jump._id}, {files: files}).then(function () {
|
|
||||||
DateUtilities.fetchSkydiverIdApi(`jump/${req.jump.x2data.id}/kml`, {}).then(result => {
|
|
||||||
if (result.errors === undefined) {
|
|
||||||
console.log(`${DateUtilities.getDateTimeISOString()}`, chalk.green(`Réception de l'url du fichier kml SkydiverId`));
|
|
||||||
} else {
|
|
||||||
console.log(`${DateUtilities.getDateTimeISOString()}`, chalk.red(`Une erreur ${result.errors.code} '${result.errors.type}' est survenue lors de la réception de l'url du fichier kml SkydiverId : ${result.errors.name} ${result.errors.message}`));
|
|
||||||
}
|
|
||||||
if (result.url !== undefined) {
|
|
||||||
console.log(result.url);
|
|
||||||
} else {
|
|
||||||
console.log('result.url is undefined');
|
|
||||||
}
|
|
||||||
return res.json({ file: file.toJSONForJump() });
|
|
||||||
}).catch(next);
|
|
||||||
}).catch(next);
|
|
||||||
}).catch(next);
|
|
||||||
*/
|
|
||||||
}).catch(next);
|
}).catch(next);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -533,11 +468,12 @@ router.post('/kml/:jump', auth.required, function (req, res, next) {
|
|||||||
* update a jump
|
* update a jump
|
||||||
*/
|
*/
|
||||||
router.put('/:jump', auth.required, function (req, res, next) {
|
router.put('/:jump', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
if (req.jump.author._id.toString() !== req.payload.id.toString()) {
|
const authorId = req.jump.author?.id ?? req.jump.author?.toString();
|
||||||
|
if (authorId !== req.payload.id) {
|
||||||
return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } });
|
return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } });
|
||||||
}
|
}
|
||||||
if (typeof req.body.jump.date !== 'undefined') {
|
if (typeof req.body.jump.date !== 'undefined') {
|
||||||
@@ -596,7 +532,7 @@ router.put('/:jump', auth.required, function (req, res, next) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return req.jump.save().then(function (jump) {
|
return req.jump.save().then(function (jump) {
|
||||||
return res.json({ jump: jump.toJSONFor(user) });
|
return res.json({ jump: jump.toJSONFor(null) });
|
||||||
});
|
});
|
||||||
}).catch(next);
|
}).catch(next);
|
||||||
});
|
});
|
||||||
@@ -605,11 +541,12 @@ router.put('/:jump', auth.required, function (req, res, next) {
|
|||||||
* delete a jump
|
* delete a jump
|
||||||
*/
|
*/
|
||||||
router.delete('/:jump', auth.required, function (req, res, next) {
|
router.delete('/:jump', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
if (req.jump.author._id.toString() === req.payload.id.toString()) {
|
const authorId = req.jump.author?.id ?? req.jump.author?.toString();
|
||||||
|
if (authorId === req.payload.id) {
|
||||||
return req.jump.remove().then(function () {
|
return req.jump.remove().then(function () {
|
||||||
return res.json({ deleted: true });
|
return res.json({ deleted: true });
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
var router = require('express').Router(),
|
var router = require('express').Router(),
|
||||||
mongoose = require('mongoose'),
|
mongoose = require('mongoose'),
|
||||||
Jump = mongoose.model('Jump'),
|
Jump = mongoose.model('Jump');
|
||||||
User = mongoose.model('User');
|
|
||||||
const auth = require('../../../middlewares/auth'),
|
const auth = require('../../../middlewares/auth'),
|
||||||
queries = require('../../queries');
|
queries = require('../../queries');
|
||||||
|
const { UserService } = require('../../../services');
|
||||||
|
|
||||||
router.get('/aeronefs', auth.required, function (req, res, next) {
|
router.get('/aeronefs', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
@@ -27,17 +27,17 @@ router.get('/aeronefs', auth.required, function (req, res, next) {
|
|||||||
.populate('files')
|
.populate('files')
|
||||||
.populate('x2data')
|
.populate('x2data')
|
||||||
.exec(),
|
.exec(),
|
||||||
Jump.aggregate(queries.getAeronefsByImatQuery(user._id.toString()))
|
Jump.aggregate(queries.getAeronefsByImatQuery(user.id))
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
.limit(Number(limit))
|
.limit(Number(limit))
|
||||||
.exec(),
|
.exec(),
|
||||||
Jump.aggregate(queries.getAeronefsByImatByYearQuery(user._id.toString()))
|
Jump.aggregate(queries.getAeronefsByImatByYearQuery(user.id))
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
.limit(Number(limit))
|
.limit(Number(limit))
|
||||||
.exec()
|
.exec()
|
||||||
]).then(function (results) {
|
]).then(function (results) {
|
||||||
if (results[0].length) {
|
if (results[0].length) {
|
||||||
let lastjump = results[0][0].toJSONFor(user);
|
let lastjump = results[0][0].toJSONFor(null);
|
||||||
let aeronefsByImat = results[1].map(function (data) {
|
let aeronefsByImat = results[1].map(function (data) {
|
||||||
return { aeronef: data._id.aeronef, imat: data._id.imat, count: data.count };
|
return { aeronef: data._id.aeronef, imat: data._id.imat, count: data.count };
|
||||||
});
|
});
|
||||||
@@ -62,7 +62,7 @@ router.get('/aeronefs', auth.required, function (req, res, next) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
router.get('/canopies', auth.required, function (req, res, next) {
|
router.get('/canopies', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
@@ -83,49 +83,36 @@ router.get('/canopies', auth.required, function (req, res, next) {
|
|||||||
.populate('files')
|
.populate('files')
|
||||||
.populate('x2data')
|
.populate('x2data')
|
||||||
.exec(),
|
.exec(),
|
||||||
Jump.aggregate(queries.getCanopiesBySizeQuery(user._id.toString()))
|
Jump.aggregate(queries.getCanopiesBySizeQuery(user.id))
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
.limit(Number(limit))
|
.limit(Number(limit))
|
||||||
.exec(),
|
.exec(),
|
||||||
Jump.aggregate(queries.getCanopiesBySizeByYearQuery(user._id.toString()))
|
Jump.aggregate(queries.getCanopiesBySizeByYearQuery(user.id))
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
.limit(Number(limit))
|
.limit(Number(limit))
|
||||||
.exec(),
|
.exec(),
|
||||||
Jump.aggregate(queries.getCanopiesBySizeByModelQuery(user._id.toString()))
|
Jump.aggregate(queries.getCanopiesBySizeByModelQuery(user.id))
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
.limit(Number(limit))
|
.limit(Number(limit))
|
||||||
.exec(),
|
.exec(),
|
||||||
Jump.aggregate(queries.getCanopiesBySizeByModelByYearQuery(user._id.toString()))
|
Jump.aggregate(queries.getCanopiesBySizeByModelByYearQuery(user.id))
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
.limit(Number(limit))
|
.limit(Number(limit))
|
||||||
.exec()
|
.exec()
|
||||||
]).then(function (results) {
|
]).then(function (results) {
|
||||||
if (results[0].length) {
|
if (results[0].length) {
|
||||||
let lastjump = results[0][0].toJSONFor(user);
|
let lastjump = results[0][0].toJSONFor(null);
|
||||||
let canopiesBySize = results[1].map(function (data) {
|
let canopiesBySize = results[1].map(function (data) {
|
||||||
return { taille: data._id.taille, count: data.count };
|
return { taille: data._id.taille, count: data.count };
|
||||||
});
|
});
|
||||||
let canopiesBySizeByYear = results[2].map(function (data) {
|
let canopiesBySizeByYear = results[2].map(function (data) {
|
||||||
return {
|
return { taille: data._id.taille, year: data._id.year, count: data.count };
|
||||||
taille: data._id.taille,
|
|
||||||
year: data._id.year,
|
|
||||||
count: data.count
|
|
||||||
};
|
|
||||||
});
|
});
|
||||||
let canopiesBySizeByModel = results[3].map(function (data) {
|
let canopiesBySizeByModel = results[3].map(function (data) {
|
||||||
return {
|
return { taille: data._id.taille, voile: data._id.voile, count: data.count };
|
||||||
taille: data._id.taille,
|
|
||||||
voile: data._id.voile,
|
|
||||||
count: data.count
|
|
||||||
};
|
|
||||||
});
|
});
|
||||||
let canopiesBySizeByModelByYear = results[4].map(function (data) {
|
let canopiesBySizeByModelByYear = results[4].map(function (data) {
|
||||||
return {
|
return { taille: data._id.taille, voile: data._id.voile, year: data._id.year, count: data.count };
|
||||||
taille: data._id.taille,
|
|
||||||
voile: data._id.voile,
|
|
||||||
year: data._id.year,
|
|
||||||
count: data.count
|
|
||||||
};
|
|
||||||
});
|
});
|
||||||
return res.json({
|
return res.json({
|
||||||
canopiesBySize: canopiesBySize,
|
canopiesBySize: canopiesBySize,
|
||||||
@@ -142,7 +129,7 @@ router.get('/canopies', auth.required, function (req, res, next) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
router.get('/dropzones', auth.required, function (req, res, next) {
|
router.get('/dropzones', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
@@ -163,27 +150,22 @@ router.get('/dropzones', auth.required, function (req, res, next) {
|
|||||||
.populate('files')
|
.populate('files')
|
||||||
.populate('x2data')
|
.populate('x2data')
|
||||||
.exec(),
|
.exec(),
|
||||||
Jump.aggregate(queries.getDropZonesByOaciQuery(user._id.toString()))
|
Jump.aggregate(queries.getDropZonesByOaciQuery(user.id))
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
.limit(Number(limit))
|
.limit(Number(limit))
|
||||||
.exec(),
|
.exec(),
|
||||||
Jump.aggregate(queries.getDropZonesByOaciByYearQuery(user._id.toString()))
|
Jump.aggregate(queries.getDropZonesByOaciByYearQuery(user.id))
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
.limit(Number(limit))
|
.limit(Number(limit))
|
||||||
.exec()
|
.exec()
|
||||||
]).then(function (results) {
|
]).then(function (results) {
|
||||||
if (results[0].length) {
|
if (results[0].length) {
|
||||||
let lastjump = results[0][0].toJSONFor(user);
|
let lastjump = results[0][0].toJSONFor(null);
|
||||||
let dropZonesByOaci = results[1].map(function (data) {
|
let dropZonesByOaci = results[1].map(function (data) {
|
||||||
return { lieu: data._id.lieu, oaci: data._id.oaci, count: data.count };
|
return { lieu: data._id.lieu, oaci: data._id.oaci, count: data.count };
|
||||||
});
|
});
|
||||||
let dropZonesByOaciByYear = results[2].map(function (data) {
|
let dropZonesByOaciByYear = results[2].map(function (data) {
|
||||||
return {
|
return { lieu: data._id.lieu, oaci: data._id.oaci, year: data._id.year, count: data.count };
|
||||||
lieu: data._id.lieu,
|
|
||||||
oaci: data._id.oaci,
|
|
||||||
year: data._id.year,
|
|
||||||
count: data.count
|
|
||||||
};
|
|
||||||
});
|
});
|
||||||
return res.json({
|
return res.json({
|
||||||
dropZonesByOaci: dropZonesByOaci,
|
dropZonesByOaci: dropZonesByOaci,
|
||||||
@@ -198,7 +180,7 @@ router.get('/dropzones', auth.required, function (req, res, next) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
router.get('/jumps', auth.required, function (req, res, next) {
|
router.get('/jumps', auth.required, function (req, res, next) {
|
||||||
User.findById(req.payload.id).then(function (user) {
|
UserService.getUserById(req.payload.id).then(function (user) {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
@@ -219,30 +201,29 @@ router.get('/jumps', auth.required, function (req, res, next) {
|
|||||||
.populate('files')
|
.populate('files')
|
||||||
.populate('x2data')
|
.populate('x2data')
|
||||||
.exec(),
|
.exec(),
|
||||||
Jump.aggregate(queries.getJumpByYearsQuery(user._id.toString()))
|
Jump.aggregate(queries.getJumpByYearsQuery(user.id))
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
.limit(Number(limit))
|
.limit(Number(limit))
|
||||||
.exec(),
|
.exec(),
|
||||||
Jump.aggregate(queries.getJumpsByCategoryQuery(user._id.toString()))
|
Jump.aggregate(queries.getJumpsByCategoryQuery(user.id))
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
.limit(Number(limit))
|
.limit(Number(limit))
|
||||||
.exec(),
|
.exec(),
|
||||||
Jump.aggregate(queries.getJumpsByModuleQuery(user._id.toString()))
|
Jump.aggregate(queries.getJumpsByModuleQuery(user.id))
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
.limit(Number(limit))
|
.limit(Number(limit))
|
||||||
.exec(),
|
.exec(),
|
||||||
Jump.aggregate(queries.getJumpsByDateQuery(user._id.toString()))
|
Jump.aggregate(queries.getJumpsByDateQuery(user.id))
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
.limit(Number(limit))
|
.limit(Number(limit))
|
||||||
.exec(),
|
.exec(),
|
||||||
Jump.aggregate(queries.getJumpsByModuleByDateQuery(user._id.toString()))
|
Jump.aggregate(queries.getJumpsByModuleByDateQuery(user.id))
|
||||||
.skip(Number(offset))
|
.skip(Number(offset))
|
||||||
.limit(Number(limit))
|
.limit(Number(limit))
|
||||||
.exec()
|
.exec()
|
||||||
//utils.fetchSkydiverIdApi('jumps')
|
|
||||||
]).then(function (results) {
|
]).then(function (results) {
|
||||||
if (results[0].length) {
|
if (results[0].length) {
|
||||||
let lastjump = results[0][0].toJSONFor(user);
|
let lastjump = results[0][0].toJSONFor(null);
|
||||||
let jumpsByYears = results[1].map(function (data) {
|
let jumpsByYears = results[1].map(function (data) {
|
||||||
return { year: data._id.year, count: data.count };
|
return { year: data._id.year, count: data.count };
|
||||||
});
|
});
|
||||||
@@ -264,14 +245,12 @@ router.get('/jumps', auth.required, function (req, res, next) {
|
|||||||
count: data.count
|
count: data.count
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
//let jumpsFromSkydiverIdApi = results[6];
|
|
||||||
return res.json({
|
return res.json({
|
||||||
jumpsByCategory: jumpsByCategory,
|
jumpsByCategory: jumpsByCategory,
|
||||||
jumpsByDate: jumpsByDate,
|
jumpsByDate: jumpsByDate,
|
||||||
jumpsByDateByModule: jumpsByDateByModule,
|
jumpsByDateByModule: jumpsByDateByModule,
|
||||||
jumpsByModule: jumpsByModule,
|
jumpsByModule: jumpsByModule,
|
||||||
jumpsByYears: jumpsByYears,
|
jumpsByYears: jumpsByYears,
|
||||||
//jumpsFromSkydiverIdApi: jumpsFromSkydiverIdApi,
|
|
||||||
lastjump: lastjump
|
lastjump: lastjump
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ var router = require('express').Router(),
|
|||||||
Qcm = mongoose.model('Qcm'),
|
Qcm = mongoose.model('Qcm'),
|
||||||
QcmCategory = mongoose.model('QcmCategory'),
|
QcmCategory = mongoose.model('QcmCategory'),
|
||||||
QcmQuestion = mongoose.model('QcmQuestion'),
|
QcmQuestion = mongoose.model('QcmQuestion'),
|
||||||
QcmChoice = mongoose.model('QcmChoice'),
|
QcmChoice = mongoose.model('QcmChoice');
|
||||||
User = mongoose.model('User');
|
|
||||||
const auth = require('../../../middlewares/auth');
|
const auth = require('../../../middlewares/auth');
|
||||||
|
const { UserService } = require('../../../services');
|
||||||
|
|
||||||
// Preload qcm objects on routes with ':type'
|
// Preload qcm objects on routes with ':type'
|
||||||
router.param('type', function (req, res, next, type) {
|
router.param('type', function (req, res, next, type) {
|
||||||
@@ -37,7 +37,7 @@ router.param('type', function (req, res, next, type) {
|
|||||||
*/
|
*/
|
||||||
router.get('/', auth.required, function (req, res, next) {
|
router.get('/', auth.required, function (req, res, next) {
|
||||||
Promise.all([
|
Promise.all([
|
||||||
req.payload ? User.findById(req.payload.id) : null
|
req.payload ? UserService.getUserById(req.payload.id) : null
|
||||||
]).then(function (results) {
|
]).then(function (results) {
|
||||||
let user = results[0];
|
let user = results[0];
|
||||||
if (!user) {
|
if (!user) {
|
||||||
@@ -52,7 +52,7 @@ router.get('/', auth.required, function (req, res, next) {
|
|||||||
*/
|
*/
|
||||||
router.get('/type/:type', auth.required, function (req, res, next) {
|
router.get('/type/:type', auth.required, function (req, res, next) {
|
||||||
Promise.all([
|
Promise.all([
|
||||||
req.payload ? User.findById(req.payload.id) : null
|
req.payload ? UserService.getUserById(req.payload.id) : null
|
||||||
]).then(function (results) {
|
]).then(function (results) {
|
||||||
let user = results[0];
|
let user = results[0];
|
||||||
if (!user) {
|
if (!user) {
|
||||||
@@ -67,14 +67,13 @@ router.get('/type/:type', auth.required, function (req, res, next) {
|
|||||||
*/
|
*/
|
||||||
router.post('/choices/', auth.required, function (req, res, next) {
|
router.post('/choices/', auth.required, function (req, res, next) {
|
||||||
Promise.all([
|
Promise.all([
|
||||||
req.payload ? User.findById(req.payload.id) : null,
|
req.payload ? UserService.getUserById(req.payload.id) : null,
|
||||||
QcmQuestion
|
QcmQuestion
|
||||||
.findOne({num: req.body.question.num})
|
.findOne({num: req.body.question.num})
|
||||||
.populate('choices')
|
.populate('choices')
|
||||||
.exec()
|
.exec()
|
||||||
]).then(async function (results) {
|
]).then(async function (results) {
|
||||||
const user = results[0];
|
const user = results[0];
|
||||||
//let numero = (results[1][0].numero + 1);
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
@@ -113,14 +112,13 @@ router.post('/choices/', auth.required, function (req, res, next) {
|
|||||||
*/
|
*/
|
||||||
router.post('/questions/', auth.required, function (req, res, next) {
|
router.post('/questions/', auth.required, function (req, res, next) {
|
||||||
Promise.all([
|
Promise.all([
|
||||||
req.payload ? User.findById(req.payload.id) : null,
|
req.payload ? UserService.getUserById(req.payload.id) : null,
|
||||||
QcmCategory
|
QcmCategory
|
||||||
.findOne({num: req.body.category.num})
|
.findOne({num: req.body.category.num})
|
||||||
.populate('questions')
|
.populate('questions')
|
||||||
.exec()
|
.exec()
|
||||||
]).then(async function (results) {
|
]).then(async function (results) {
|
||||||
const user = results[0];
|
const user = results[0];
|
||||||
//let numero = (results[1][0].numero + 1);
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user