Skip to content

Commit 4fe35ce

Browse files
Support winner.type
1 parent fd04800 commit 4fe35ce

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

src/services/ChallengeService.js

+6-4
Original file line numberDiff line numberDiff line change
@@ -1257,7 +1257,7 @@ async function validateWinners (winners, challengeId) {
12571257
}
12581258

12591259
// find another placement for a member
1260-
const memberExists = _.find(diffWinners, function (w) { return w.userId === winner.userId })
1260+
const memberExists = _.find(diffWinners, function (w) { return w.userId === winner.userId && w.type === winner.type })
12611261
if (memberExists && memberExists.placement !== winner.placement) {
12621262
throw new errors.BadRequestError(`The same member ${winner.userId} cannot have multiple placements`)
12631263
}
@@ -1801,7 +1801,7 @@ function sanitizeChallenge (challenge) {
18011801
sanitized.events = _.map(challenge.events, event => _.pick(event, ['id', 'name', 'key']))
18021802
}
18031803
if (challenge.winners) {
1804-
sanitized.winners = _.map(challenge.winners, winner => _.pick(winner, ['userId', 'handle', 'placement']))
1804+
sanitized.winners = _.map(challenge.winners, winner => _.pick(winner, ['userId', 'handle', 'placement', 'type']))
18051805
}
18061806
if (challenge.discussions) {
18071807
sanitized.discussions = _.map(challenge.discussions, discussion => ({
@@ -1910,7 +1910,8 @@ fullyUpdateChallenge.schema = {
19101910
winners: Joi.array().items(Joi.object().keys({
19111911
userId: Joi.number().integer().positive().required(),
19121912
handle: Joi.string().required(),
1913-
placement: Joi.number().integer().positive().required()
1913+
placement: Joi.number().integer().positive().required(),
1914+
type: Joi.string().valid(_.values(constants.prizeSetTypes)).default(constants.prizeSetTypes.ChallengePrizes)
19141915
}).unknown(true)).min(1),
19151916
terms: Joi.array().items(Joi.object().keys({
19161917
id: Joi.id(),
@@ -2012,7 +2013,8 @@ partiallyUpdateChallenge.schema = {
20122013
winners: Joi.array().items(Joi.object().keys({
20132014
userId: Joi.number().integer().positive().required(),
20142015
handle: Joi.string().required(),
2015-
placement: Joi.number().integer().positive().required()
2016+
placement: Joi.number().integer().positive().required(),
2017+
type: Joi.string().valid(_.values(constants.prizeSetTypes)).default(constants.prizeSetTypes.ChallengePrizes)
20162018
}).unknown(true)).min(1),
20172019
terms: Joi.array().items(Joi.id().optional()).optional().allow([]),
20182020
overview: Joi.any().forbidden()

0 commit comments

Comments
 (0)