@@ -828,7 +828,10 @@ async function createChallenge (currentUser, challenge) {
828
828
if ( challenge . status === constants . challengeStatuses . Active ) {
829
829
throw new errors . BadRequestError ( 'You cannot create an Active challenge. Please create a Draft challenge and then change the status to Active.' )
830
830
}
831
- await helper . ensureProjectExist ( challenge . projectId , currentUser )
831
+ const { directProjectId } = await helper . ensureProjectExist ( challenge . projectId , currentUser )
832
+ if ( _ . get ( challenge , 'legacy.pureV5Task' ) ) {
833
+ _ . set ( challenge , 'legacy.directProjectId' , directProjectId )
834
+ }
832
835
const { track, type } = await validateChallengeData ( challenge )
833
836
if ( _ . get ( type , 'isTask' ) ) {
834
837
_ . set ( challenge , 'task.isTask' , true )
@@ -972,7 +975,8 @@ createChallenge.schema = {
972
975
screeningScorecardId : Joi . number ( ) . integer ( ) ,
973
976
reviewScorecardId : Joi . number ( ) . integer ( ) ,
974
977
isTask : Joi . boolean ( ) ,
975
- useSchedulingAPI : Joi . boolean ( )
978
+ useSchedulingAPI : Joi . boolean ( ) ,
979
+ pureV5Task : Joi . boolean ( )
976
980
} ) ,
977
981
task : Joi . object ( ) . keys ( {
978
982
isTask : Joi . boolean ( ) . default ( false ) ,
@@ -1199,7 +1203,7 @@ async function update (currentUser, challengeId, data, isFull) {
1199
1203
let billingAccountId
1200
1204
if ( data . status ) {
1201
1205
if ( data . status === constants . challengeStatuses . Active ) {
1202
- if ( _ . isUndefined ( _ . get ( challenge , 'legacy.directProjectId' ) ) ) {
1206
+ if ( ! _ . get ( challenge , 'legacy.pureV5Task' ) && _ . isUndefined ( _ . get ( challenge , 'legacy.directProjectId' ) ) ) {
1203
1207
throw new errors . BadRequestError ( 'You cannot activate the challenge as it has not been created on legacy yet. Please try again later or contact support.' )
1204
1208
}
1205
1209
billingAccountId = await helper . getProjectBillingAccount ( _ . get ( challenge , 'legacy.directProjectId' ) )
@@ -1230,6 +1234,9 @@ async function update (currentUser, challengeId, data, isFull) {
1230
1234
if ( _ . get ( challenge , 'legacy.useSchedulingAPI' ) && _ . get ( data , 'legacy.useSchedulingAPI' ) && _ . get ( challenge , 'legacy.useSchedulingAPI' ) !== _ . get ( data , 'legacy.useSchedulingAPI' ) ) {
1231
1235
throw new errors . ForbiddenError ( 'Cannot change legacy.useSchedulingAPI' )
1232
1236
}
1237
+ if ( _ . get ( challenge , 'legacy.pureV5Task' ) && _ . get ( data , 'legacy.pureV5Task' ) && _ . get ( challenge , 'legacy.pureV5Task' ) !== _ . get ( data , 'legacy.pureV5Task' ) ) {
1238
+ throw new errors . ForbiddenError ( 'Cannot change legacy.pureV5Task' )
1239
+ }
1233
1240
1234
1241
if ( ! _ . isUndefined ( challenge . legacy ) && ! _ . isUndefined ( data . legacy ) ) {
1235
1242
_ . extend ( challenge . legacy , data . legacy )
@@ -1672,7 +1679,8 @@ function sanitizeChallenge (challenge) {
1672
1679
'screeningScorecardId' ,
1673
1680
'reviewScorecardId' ,
1674
1681
'isTask' ,
1675
- 'useSchedulingAPI'
1682
+ 'useSchedulingAPI' ,
1683
+ 'pureV5Task'
1676
1684
] )
1677
1685
}
1678
1686
if ( challenge . metadata ) {
@@ -1728,7 +1736,8 @@ fullyUpdateChallenge.schema = {
1728
1736
screeningScorecardId : Joi . number ( ) . integer ( ) ,
1729
1737
reviewScorecardId : Joi . number ( ) . integer ( ) ,
1730
1738
isTask : Joi . boolean ( ) ,
1731
- useSchedulingAPI : Joi . boolean ( )
1739
+ useSchedulingAPI : Joi . boolean ( ) ,
1740
+ pureV5Task : Joi . boolean ( )
1732
1741
} ) . unknown ( true ) ,
1733
1742
task : Joi . object ( ) . keys ( {
1734
1743
isTask : Joi . boolean ( ) . default ( false ) ,
@@ -1824,7 +1833,8 @@ partiallyUpdateChallenge.schema = {
1824
1833
directProjectId : Joi . number ( ) ,
1825
1834
forumId : Joi . number ( ) . integer ( ) ,
1826
1835
isTask : Joi . boolean ( ) ,
1827
- useSchedulingAPI : Joi . boolean ( )
1836
+ useSchedulingAPI : Joi . boolean ( ) ,
1837
+ pureV5Task : Joi . boolean ( )
1828
1838
} ) . unknown ( true ) ,
1829
1839
task : Joi . object ( ) . keys ( {
1830
1840
isTask : Joi . boolean ( ) . default ( false ) ,
0 commit comments