@@ -340,12 +340,6 @@ async function searchChallenges(currentUser, criteria) {
340
340
}
341
341
boolQuery . push ( { range : { "overview.totalPrizes" : prizeRangeQuery } } ) ;
342
342
}
343
-
344
- if ( criteria . useSchedulingAPI ) {
345
- boolQuery . push ( {
346
- match_phrase : { "legacy.useSchedulingAPI" : criteria . useSchedulingAPI } ,
347
- } ) ;
348
- }
349
343
if ( criteria . selfService ) {
350
344
boolQuery . push ( {
351
345
match_phrase : { "legacy.selfService" : criteria . selfService } ,
@@ -379,9 +373,21 @@ async function searchChallenges(currentUser, criteria) {
379
373
} ) ;
380
374
}
381
375
if ( criteria . currentPhaseName ) {
382
- boolQuery . push ( {
383
- match_phrase : { currentPhaseNames : criteria . currentPhaseName } ,
384
- } ) ;
376
+ if ( criteria . currentPhaseName === "Registration" ) {
377
+ boolQuery . push ( {
378
+ bool : {
379
+ should : [
380
+ { match_phrase : { currentPhaseNames : "Registration" } } ,
381
+ { match_phrase : { currentPhaseNames : "Open" } } ,
382
+ ] ,
383
+ minimum_should_match : 1 ,
384
+ } ,
385
+ } ) ;
386
+ } else {
387
+ boolQuery . push ( {
388
+ match_phrase : { currentPhaseNames : criteria . currentPhaseName } ,
389
+ } ) ;
390
+ }
385
391
}
386
392
if ( criteria . createdDateStart ) {
387
393
boolQuery . push ( { range : { created : { gte : criteria . createdDateStart } } } ) ;
@@ -930,7 +936,9 @@ searchChallenges.schema = {
930
936
*/
931
937
async function createChallenge ( currentUser , challenge , userToken ) {
932
938
await challengeHelper . validateCreateChallengeRequest ( currentUser , challenge ) ;
939
+ let prizeTypeTmp = challengeHelper . validatePrizeSetsAndGetPrizeType ( challenge . prizeSets ) ;
933
940
941
+ console . log ( "TYPE" , prizeTypeTmp ) ;
934
942
if ( challenge . legacy . selfService ) {
935
943
// if self-service, create a new project (what about if projectId is provided in the payload? confirm with business!)
936
944
if ( ! challenge . projectId ) {
@@ -1065,9 +1073,17 @@ async function createChallenge(currentUser, challenge, userToken) {
1065
1073
grpcMetadata . set ( "userId" , currentUser . userId ) ;
1066
1074
grpcMetadata . set ( "token" , await getM2MToken ( ) ) ;
1067
1075
1068
- convertPrizeSetValuesToCents ( challenge . prizeSets ) ;
1076
+ const prizeType = challengeHelper . validatePrizeSetsAndGetPrizeType ( challenge . prizeSets ) ;
1077
+
1078
+ if ( prizeType === constants . prizeTypes . USD ) {
1079
+ convertPrizeSetValuesToCents ( challenge . prizeSets ) ;
1080
+ }
1081
+
1069
1082
const ret = await challengeDomain . create ( challenge , grpcMetadata ) ;
1070
- convertPrizeSetValuesToDollars ( ret . prizeSets , ret . overview ) ;
1083
+
1084
+ if ( prizeType === constants . prizeTypes . USD ) {
1085
+ convertPrizeSetValuesToDollars ( ret . prizeSets , ret . overview ) ;
1086
+ }
1071
1087
1072
1088
ret . numOfSubmissions = 0 ;
1073
1089
ret . numOfRegistrants = 0 ;
@@ -1494,7 +1510,11 @@ function validateTask(currentUser, challenge, data, challengeResources) {
1494
1510
*/
1495
1511
async function updateChallenge ( currentUser , challengeId , data ) {
1496
1512
const challenge = await challengeDomain . lookup ( getLookupCriteria ( "id" , challengeId ) ) ;
1497
- convertPrizeSetValuesToDollars ( challenge . prizeSets , challenge . overview ) ;
1513
+ const existingPrizeType = challengeHelper . validatePrizeSetsAndGetPrizeType ( challenge . prizeSets ) ;
1514
+
1515
+ if ( existingPrizeType === constants . prizeTypes . USD ) {
1516
+ convertPrizeSetValuesToDollars ( challenge . prizeSets , challenge . overview ) ;
1517
+ }
1498
1518
1499
1519
const projectId = _ . get ( challenge , "projectId" ) ;
1500
1520
@@ -1618,15 +1638,6 @@ async function updateChallenge(currentUser, challengeId, data) {
1618
1638
let isChallengeBeingCancelled = false ;
1619
1639
if ( data . status ) {
1620
1640
if ( data . status === constants . challengeStatuses . Active ) {
1621
- if (
1622
- ! _ . get ( challenge , "legacy.pureV5Task" ) &&
1623
- ! _ . get ( challenge , "legacy.pureV5" ) &&
1624
- _ . isUndefined ( _ . get ( challenge , "legacyId" ) )
1625
- ) {
1626
- throw new errors . BadRequestError (
1627
- "You cannot activate the challenge as it has not been created on legacy yet. Please try again later or contact support."
1628
- ) ;
1629
- }
1630
1641
// if activating a challenge, the challenge must have a billing account id
1631
1642
if (
1632
1643
( ! billingAccountId || billingAccountId === null ) &&
@@ -1799,6 +1810,11 @@ async function updateChallenge(currentUser, challengeId, data) {
1799
1810
1800
1811
if ( data . winners && data . winners . length && data . winners . length > 0 ) {
1801
1812
await validateWinners ( data . winners , challengeResources ) ;
1813
+ if ( _ . get ( challenge , "legacy.pureV5Task" , false ) ) {
1814
+ _ . each ( data . winners , ( w ) => {
1815
+ w . type = constants . prizeSetTypes . ChallengePrizes ;
1816
+ } ) ;
1817
+ }
1802
1818
}
1803
1819
1804
1820
// Only m2m tokens are allowed to modify the `task.*` information on a challenge
@@ -1891,25 +1907,28 @@ async function updateChallenge(currentUser, challengeId, data) {
1891
1907
}
1892
1908
}
1893
1909
1894
- try {
1895
- const updateInput = sanitizeRepeatedFieldsInUpdateRequest ( _ . omit ( data , [ "cancelReason" ] ) ) ;
1896
- if ( ! _ . isEmpty ( updateInput ) ) {
1897
- const grpcMetadata = new GrpcMetadata ( ) ;
1910
+ const updateInput = sanitizeRepeatedFieldsInUpdateRequest ( _ . omit ( data , [ "cancelReason" ] ) ) ;
1911
+ if ( ! _ . isEmpty ( updateInput ) ) {
1912
+ const grpcMetadata = new GrpcMetadata ( ) ;
1898
1913
1899
- grpcMetadata . set ( "handle" , currentUser . handle ) ;
1900
- grpcMetadata . set ( "userId" , currentUser . userId ) ;
1901
- grpcMetadata . set ( "token" , await getM2MToken ( ) ) ;
1914
+ grpcMetadata . set ( "handle" , currentUser . handle ) ;
1915
+ grpcMetadata . set ( "userId" , currentUser . userId ) ;
1916
+ grpcMetadata . set ( "token" , await getM2MToken ( ) ) ;
1902
1917
1903
- await challengeDomain . update (
1904
- {
1905
- filterCriteria : getScanCriteria ( { id : challengeId } ) ,
1906
- updateInput,
1907
- } ,
1908
- grpcMetadata
1918
+ const newPrizeType = challengeHelper . validatePrizeSetsAndGetPrizeType ( updateInput . prizeSets ) ;
1919
+ if ( newPrizeType != null && existingPrizeType != null && newPrizeType !== existingPrizeType ) {
1920
+ throw new errors . BadRequestError (
1921
+ `Cannot change prize type from ${ existingPrizeType } to ${ newPrizeType } `
1909
1922
) ;
1910
1923
}
1911
- } catch ( e ) {
1912
- throw e ;
1924
+
1925
+ await challengeDomain . update (
1926
+ {
1927
+ filterCriteria : getScanCriteria ( { id : challengeId } ) ,
1928
+ updateInput,
1929
+ } ,
1930
+ grpcMetadata
1931
+ ) ;
1913
1932
}
1914
1933
1915
1934
const updatedChallenge = await challengeDomain . lookup ( getLookupCriteria ( "id" , challengeId ) ) ;
@@ -2119,9 +2138,7 @@ updateChallenge.schema = {
2119
2138
userId : Joi . number ( ) . integer ( ) . positive ( ) . required ( ) ,
2120
2139
handle : Joi . string ( ) . required ( ) ,
2121
2140
placement : Joi . number ( ) . integer ( ) . positive ( ) . required ( ) ,
2122
- type : Joi . string ( )
2123
- . valid ( _ . values ( constants . prizeSetTypes ) )
2124
- . default ( constants . prizeSetTypes . ChallengePrizes ) ,
2141
+ type : Joi . string ( ) . valid ( _ . values ( constants . prizeSetTypes ) ) ,
2125
2142
} )
2126
2143
. unknown ( true )
2127
2144
)
@@ -2423,7 +2440,11 @@ advancePhase.schema = {
2423
2440
} ;
2424
2441
2425
2442
async function indexChallengeAndPostToKafka ( updatedChallenge , track , type ) {
2426
- convertPrizeSetValuesToDollars ( updatedChallenge . prizeSets , updatedChallenge . overview ) ;
2443
+ const prizeType = challengeHelper . validatePrizeSetsAndGetPrizeType ( updatedChallenge . prizeSets ) ;
2444
+
2445
+ if ( prizeType === constants . prizeTypes . USD ) {
2446
+ convertPrizeSetValuesToDollars ( updatedChallenge . prizeSets , updatedChallenge . overview ) ;
2447
+ }
2427
2448
2428
2449
if ( track == null || type == null ) {
2429
2450
const trackAndTypeData = await challengeHelper . validateAndGetChallengeTypeAndTrack ( {
0 commit comments