fix several busg with tasks and challenges

This commit is contained in:
Matteo Pagliazzi
2016-01-15 18:54:28 +01:00
parent 3eb9d4b098
commit b0caf71641
2 changed files with 11 additions and 5 deletions

View File

@@ -77,9 +77,15 @@ api.createChallenge = {
req.body.official = user.contributor.admin && req.body.official; req.body.official = user.contributor.admin && req.body.official;
let challenge = new Challenge(Challenge.sanitize(req.body)); let challenge = new Challenge(Challenge.sanitize(req.body));
let results = await Q.all(challenge.save(), group.save()); // First validate challenge so we don't save group if it's invalid (only runs sync validators)
let savedChal = results[0]; let challengeValidationErrors = challenge.validateSync();
if (challengeValidationErrors) throw challengeValidationErrors;
let results = await Q.all([challenge.save({
validateBeforeSave: false, // already validate
}), group.save()]);
let savedChal = results[0];
await savedChal.syncToUser(user); // (it also saves the user) await savedChal.syncToUser(user); // (it also saves the user)
res.respond(201, savedChal); res.respond(201, savedChal);
}, },
@@ -140,7 +146,7 @@ api.getChallenge = {
let validationErrors = req.validationErrors(); let validationErrors = req.validationErrors();
if (validationErrors) throw validationErrors; if (validationErrors) throw validationErrors;
let user = res.local.user; let user = res.locals.user;
let challengeId = req.params.challengeId; let challengeId = req.params.challengeId;
let challenge = await Challenge.findById(challengeId).exec(); let challenge = await Challenge.findById(challengeId).exec();

View File

@@ -92,7 +92,7 @@ api.createChallengeTasks = {
let reqValidationErrors = req.validationErrors(); let reqValidationErrors = req.validationErrors();
if (reqValidationErrors) throw reqValidationErrors; if (reqValidationErrors) throw reqValidationErrors;
let user = res.local.user; let user = res.locals.user;
let challengeId = req.params.challengeId; let challengeId = req.params.challengeId;
let challenge = await Challenge.findOne({_id: challengeId}).exec(); let challenge = await Challenge.findOne({_id: challengeId}).exec();
@@ -194,7 +194,7 @@ api.getChallengeTasks = {
let validationErrors = req.validationErrors(); let validationErrors = req.validationErrors();
if (validationErrors) throw validationErrors; if (validationErrors) throw validationErrors;
let user = res.local.user; let user = res.locals.user;
let challengeId = req.params.challengeId; let challengeId = req.params.challengeId;
let challenge = await Challenge.findOne({_id: challengeId}).select('leader').exec(); let challenge = await Challenge.findOne({_id: challengeId}).select('leader').exec();