@@ -157,17 +157,18 @@ async function parsePayload (payload, m2mToken, isCreated = true) {
157157 if ( payload . phases ) {
158158 const registrationPhase = _ . find ( payload . phases , p => p . phaseId === config . REGISTRATION_PHASE_ID )
159159 const submissionPhase = _ . find ( payload . phases , p => p . phaseId === config . SUBMISSION_PHASE_ID )
160- data . registrationStartsAt = new Date ( ) . toISOString ( )
161- data . registrationEndsAt = new Date ( Date . now ( ) + ( registrationPhase || submissionPhase ) . duration ) . toISOString ( )
160+ const startDate = payload . startDate ? new Date ( payload . startDate ) : new Date ( )
161+ data . registrationStartsAt = startDate . toISOString ( )
162+ data . registrationEndsAt = new Date ( startDate . getTime ( ) + ( registrationPhase || submissionPhase ) . duration ) . toISOString ( )
162163 data . registrationDuration = ( registrationPhase || submissionPhase ) . duration
163- data . submissionEndsAt = new Date ( Date . now ( ) + submissionPhase . duration ) . toISOString ( )
164+ data . submissionEndsAt = new Date ( startDate . getTime ( ) + submissionPhase . duration ) . toISOString ( )
164165 data . submissionDuration = submissionPhase . duration
165166
166167 // Only Design can have checkpoint phase and checkpoint prizes
167168 const checkpointPhase = _ . find ( payload . phases , p => p . phaseId === config . CHECKPOINT_SUBMISSION_PHASE_ID )
168169 if ( checkpointPhase ) {
169- data . checkpointSubmissionStartsAt = new Date ( ) . toISOString ( )
170- data . checkpointSubmissionEndsAt = new Date ( Date . now ( ) + checkpointPhase . duration ) . toISOString ( )
170+ data . checkpointSubmissionStartsAt = startDate . toISOString ( )
171+ data . checkpointSubmissionEndsAt = new Date ( startDate . getTime ( ) + checkpointPhase . duration ) . toISOString ( )
171172 data . checkpointSubmissionDuration = checkpointPhase . duration
172173 } else {
173174 data . checkpointSubmissionStartsAt = null
@@ -301,7 +302,8 @@ processCreate.schema = {
301302 tags : Joi . array ( ) . items ( Joi . string ( ) . required ( ) ) , // tag names
302303 projectId : Joi . number ( ) . integer ( ) . positive ( ) . required ( ) ,
303304 copilotId : Joi . number ( ) . integer ( ) . positive ( ) . optional ( ) ,
304- status : Joi . string ( ) . valid ( _ . values ( Object . keys ( constants . createChallengeStatusesMap ) ) ) . required ( )
305+ status : Joi . string ( ) . valid ( _ . values ( Object . keys ( constants . createChallengeStatusesMap ) ) ) . required ( ) ,
306+ startDate : Joi . date ( ) ,
305307 } ) . unknown ( true ) . required ( )
306308 } ) . required ( )
307309}
@@ -414,7 +416,8 @@ processUpdate.schema = {
414416 } ) . unknown ( true ) )
415417 } ) . unknown ( true ) ) . min ( 1 ) ,
416418 tags : Joi . array ( ) . items ( Joi . string ( ) . required ( ) ) . min ( 1 ) , // tag names
417- projectId : Joi . number ( ) . integer ( ) . positive ( ) . allow ( null )
419+ projectId : Joi . number ( ) . integer ( ) . positive ( ) . allow ( null ) ,
420+ startDate : Joi . date ( )
418421 } ) . unknown ( true ) . required ( )
419422 } ) . required ( )
420423}
0 commit comments