@@ -828,7 +828,10 @@ async function createChallenge (currentUser, challenge) {
828828 if ( challenge . status === constants . challengeStatuses . Active ) {
829829 throw new errors . BadRequestError ( 'You cannot create an Active challenge. Please create a Draft challenge and then change the status to Active.' )
830830 }
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+ }
832835 const { track, type } = await validateChallengeData ( challenge )
833836 if ( _ . get ( type , 'isTask' ) ) {
834837 _ . set ( challenge , 'task.isTask' , true )
@@ -972,7 +975,8 @@ createChallenge.schema = {
972975 screeningScorecardId : Joi . number ( ) . integer ( ) ,
973976 reviewScorecardId : Joi . number ( ) . integer ( ) ,
974977 isTask : Joi . boolean ( ) ,
975- useSchedulingAPI : Joi . boolean ( )
978+ useSchedulingAPI : Joi . boolean ( ) ,
979+ pureV5Task : Joi . boolean ( )
976980 } ) ,
977981 task : Joi . object ( ) . keys ( {
978982 isTask : Joi . boolean ( ) . default ( false ) ,
@@ -1199,7 +1203,7 @@ async function update (currentUser, challengeId, data, isFull) {
11991203 let billingAccountId
12001204 if ( data . status ) {
12011205 if ( data . status === constants . challengeStatuses . Active ) {
1202- if ( _ . isUndefined ( _ . get ( challenge , 'legacy.directProjectId' ) ) ) {
1206+ if ( ! _ . get ( challenge , 'legacy.pureV5Task' ) && _ . isUndefined ( _ . get ( challenge , 'legacy.directProjectId' ) ) ) {
12031207 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.' )
12041208 }
12051209 billingAccountId = await helper . getProjectBillingAccount ( _ . get ( challenge , 'legacy.directProjectId' ) )
@@ -1230,6 +1234,9 @@ async function update (currentUser, challengeId, data, isFull) {
12301234 if ( _ . get ( challenge , 'legacy.useSchedulingAPI' ) && _ . get ( data , 'legacy.useSchedulingAPI' ) && _ . get ( challenge , 'legacy.useSchedulingAPI' ) !== _ . get ( data , 'legacy.useSchedulingAPI' ) ) {
12311235 throw new errors . ForbiddenError ( 'Cannot change legacy.useSchedulingAPI' )
12321236 }
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+ }
12331240
12341241 if ( ! _ . isUndefined ( challenge . legacy ) && ! _ . isUndefined ( data . legacy ) ) {
12351242 _ . extend ( challenge . legacy , data . legacy )
@@ -1672,7 +1679,8 @@ function sanitizeChallenge (challenge) {
16721679 'screeningScorecardId' ,
16731680 'reviewScorecardId' ,
16741681 'isTask' ,
1675- 'useSchedulingAPI'
1682+ 'useSchedulingAPI' ,
1683+ 'pureV5Task'
16761684 ] )
16771685 }
16781686 if ( challenge . metadata ) {
@@ -1728,7 +1736,8 @@ fullyUpdateChallenge.schema = {
17281736 screeningScorecardId : Joi . number ( ) . integer ( ) ,
17291737 reviewScorecardId : Joi . number ( ) . integer ( ) ,
17301738 isTask : Joi . boolean ( ) ,
1731- useSchedulingAPI : Joi . boolean ( )
1739+ useSchedulingAPI : Joi . boolean ( ) ,
1740+ pureV5Task : Joi . boolean ( )
17321741 } ) . unknown ( true ) ,
17331742 task : Joi . object ( ) . keys ( {
17341743 isTask : Joi . boolean ( ) . default ( false ) ,
@@ -1824,7 +1833,8 @@ partiallyUpdateChallenge.schema = {
18241833 directProjectId : Joi . number ( ) ,
18251834 forumId : Joi . number ( ) . integer ( ) ,
18261835 isTask : Joi . boolean ( ) ,
1827- useSchedulingAPI : Joi . boolean ( )
1836+ useSchedulingAPI : Joi . boolean ( ) ,
1837+ pureV5Task : Joi . boolean ( )
18281838 } ) . unknown ( true ) ,
18291839 task : Joi . object ( ) . keys ( {
18301840 isTask : Joi . boolean ( ) . default ( false ) ,
0 commit comments