@@ -1257,7 +1257,7 @@ async function validateWinners (winners, challengeId) {
1257
1257
}
1258
1258
1259
1259
// 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 } )
1261
1261
if ( memberExists && memberExists . placement !== winner . placement ) {
1262
1262
throw new errors . BadRequestError ( `The same member ${ winner . userId } cannot have multiple placements` )
1263
1263
}
@@ -1801,7 +1801,7 @@ function sanitizeChallenge (challenge) {
1801
1801
sanitized . events = _ . map ( challenge . events , event => _ . pick ( event , [ 'id' , 'name' , 'key' ] ) )
1802
1802
}
1803
1803
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' ] ) )
1805
1805
}
1806
1806
if ( challenge . discussions ) {
1807
1807
sanitized . discussions = _ . map ( challenge . discussions , discussion => ( {
@@ -1910,7 +1910,8 @@ fullyUpdateChallenge.schema = {
1910
1910
winners : Joi . array ( ) . items ( Joi . object ( ) . keys ( {
1911
1911
userId : Joi . number ( ) . integer ( ) . positive ( ) . required ( ) ,
1912
1912
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 )
1914
1915
} ) . unknown ( true ) ) . min ( 1 ) ,
1915
1916
terms : Joi . array ( ) . items ( Joi . object ( ) . keys ( {
1916
1917
id : Joi . id ( ) ,
@@ -2012,7 +2013,8 @@ partiallyUpdateChallenge.schema = {
2012
2013
winners : Joi . array ( ) . items ( Joi . object ( ) . keys ( {
2013
2014
userId : Joi . number ( ) . integer ( ) . positive ( ) . required ( ) ,
2014
2015
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 )
2016
2018
} ) . unknown ( true ) ) . min ( 1 ) ,
2017
2019
terms : Joi . array ( ) . items ( Joi . id ( ) . optional ( ) ) . optional ( ) . allow ( [ ] ) ,
2018
2020
overview : Joi . any ( ) . forbidden ( )
0 commit comments