@@ -920,7 +920,9 @@ searchChallenges.schema = {
920
920
*/
921
921
async function createChallenge ( currentUser , challenge , userToken ) {
922
922
await challengeHelper . validateCreateChallengeRequest ( currentUser , challenge ) ;
923
+ let prizeTypeTmp = challengeHelper . validatePrizeSetsAndGetPrizeType ( challenge . prizeSets ) ;
923
924
925
+ console . log ( "TYPE" , prizeTypeTmp ) ;
924
926
if ( challenge . legacy . selfService ) {
925
927
// if self-service, create a new project (what about if projectId is provided in the payload? confirm with business!)
926
928
if ( ! challenge . projectId ) {
@@ -1055,9 +1057,17 @@ async function createChallenge(currentUser, challenge, userToken) {
1055
1057
grpcMetadata . set ( "userId" , currentUser . userId ) ;
1056
1058
grpcMetadata . set ( "token" , await getM2MToken ( ) ) ;
1057
1059
1058
- convertPrizeSetValuesToCents ( challenge . prizeSets ) ;
1060
+ const prizeType = challengeHelper . validatePrizeSetsAndGetPrizeType ( challenge . prizeSets ) ;
1061
+
1062
+ if ( prizeType === constants . prizeTypes . USD ) {
1063
+ convertPrizeSetValuesToCents ( challenge . prizeSets ) ;
1064
+ }
1065
+
1059
1066
const ret = await challengeDomain . create ( challenge , grpcMetadata ) ;
1060
- convertPrizeSetValuesToDollars ( ret . prizeSets , ret . overview ) ;
1067
+
1068
+ if ( prizeType === constants . prizeTypes . USD ) {
1069
+ convertPrizeSetValuesToDollars ( ret . prizeSets , ret . overview ) ;
1070
+ }
1061
1071
1062
1072
ret . numOfSubmissions = 0 ;
1063
1073
ret . numOfRegistrants = 0 ;
@@ -1484,7 +1494,11 @@ function validateTask(currentUser, challenge, data, challengeResources) {
1484
1494
*/
1485
1495
async function updateChallenge ( currentUser , challengeId , data ) {
1486
1496
const challenge = await challengeDomain . lookup ( getLookupCriteria ( "id" , challengeId ) ) ;
1487
- convertPrizeSetValuesToDollars ( challenge . prizeSets , challenge . overview ) ;
1497
+ const existingPrizeType = challengeHelper . validatePrizeSetsAndGetPrizeType ( challenge . prizeSets ) ;
1498
+
1499
+ if ( existingPrizeType === constants . prizeTypes . USD ) {
1500
+ convertPrizeSetValuesToDollars ( challenge . prizeSets , challenge . overview ) ;
1501
+ }
1488
1502
1489
1503
const projectId = _ . get ( challenge , "projectId" ) ;
1490
1504
@@ -1881,28 +1895,30 @@ async function updateChallenge(currentUser, challengeId, data) {
1881
1895
}
1882
1896
}
1883
1897
1884
- try {
1885
- const updateInput = sanitizeRepeatedFieldsInUpdateRequest ( _ . omit ( data , [ "cancelReason" ] ) ) ;
1886
- if ( ! _ . isEmpty ( updateInput ) ) {
1887
- const grpcMetadata = new GrpcMetadata ( ) ;
1898
+ const updateInput = sanitizeRepeatedFieldsInUpdateRequest ( _ . omit ( data , [ "cancelReason" ] ) ) ;
1899
+ if ( ! _ . isEmpty ( updateInput ) ) {
1900
+ const grpcMetadata = new GrpcMetadata ( ) ;
1888
1901
1889
- grpcMetadata . set ( "handle" , currentUser . handle ) ;
1890
- grpcMetadata . set ( "userId" , currentUser . userId ) ;
1891
- grpcMetadata . set ( "token" , await getM2MToken ( ) ) ;
1902
+ grpcMetadata . set ( "handle" , currentUser . handle ) ;
1903
+ grpcMetadata . set ( "userId" , currentUser . userId ) ;
1904
+ grpcMetadata . set ( "token" , await getM2MToken ( ) ) ;
1892
1905
1893
- if ( updateInput . prizeSetUpdate != null ) {
1894
- convertPrizeSetValuesToCents ( updateInput . prizeSetUpdate . prizeSets ) ;
1895
- }
1896
- await challengeDomain . update (
1897
- {
1898
- filterCriteria : getScanCriteria ( { id : challengeId } ) ,
1899
- updateInput,
1900
- } ,
1901
- grpcMetadata
1906
+ const newPrizeType = challengeHelper . validatePrizeSetsAndGetPrizeType ( updateInput . prizeSets ) ;
1907
+ if ( newPrizeType != null && existingPrizeType != null && newPrizeType !== existingPrizeType ) {
1908
+ throw new errors . BadRequestError (
1909
+ `Cannot change prize type from ${ existingPrizeType } to ${ newPrizeType } `
1902
1910
) ;
1903
1911
}
1904
- } catch ( e ) {
1905
- throw e ;
1912
+ if ( updateInput . prizeSetUpdate != null && newPrizeType === constants . prizeTypes . USD ) {
1913
+ convertPrizeSetValuesToCents ( updateInput . prizeSetUpdate . prizeSets ) ;
1914
+ }
1915
+ await challengeDomain . update (
1916
+ {
1917
+ filterCriteria : getScanCriteria ( { id : challengeId } ) ,
1918
+ updateInput,
1919
+ } ,
1920
+ grpcMetadata
1921
+ ) ;
1906
1922
}
1907
1923
1908
1924
const updatedChallenge = await challengeDomain . lookup ( getLookupCriteria ( "id" , challengeId ) ) ;
@@ -2416,7 +2432,11 @@ advancePhase.schema = {
2416
2432
} ;
2417
2433
2418
2434
async function indexChallengeAndPostToKafka ( updatedChallenge , track , type ) {
2419
- convertPrizeSetValuesToDollars ( updatedChallenge . prizeSets , updatedChallenge . overview ) ;
2435
+ const prizeType = challengeHelper . validatePrizeSetsAndGetPrizeType ( updatedChallenge . prizeSets ) ;
2436
+
2437
+ if ( prizeType === constants . prizeTypes . USD ) {
2438
+ convertPrizeSetValuesToDollars ( updatedChallenge . prizeSets , updatedChallenge . overview ) ;
2439
+ }
2420
2440
2421
2441
if ( track == null || type == null ) {
2422
2442
const trackAndTypeData = await challengeHelper . validateAndGetChallengeTypeAndTrack ( {
0 commit comments