@@ -157,17 +157,18 @@ async function parsePayload (payload, m2mToken, isCreated = true) {
157
157
if ( payload . phases ) {
158
158
const registrationPhase = _ . find ( payload . phases , p => p . phaseId === config . REGISTRATION_PHASE_ID )
159
159
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 ( )
162
163
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 ( )
164
165
data . submissionDuration = submissionPhase . duration
165
166
166
167
// Only Design can have checkpoint phase and checkpoint prizes
167
168
const checkpointPhase = _ . find ( payload . phases , p => p . phaseId === config . CHECKPOINT_SUBMISSION_PHASE_ID )
168
169
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 ( )
171
172
data . checkpointSubmissionDuration = checkpointPhase . duration
172
173
} else {
173
174
data . checkpointSubmissionStartsAt = null
@@ -301,7 +302,8 @@ processCreate.schema = {
301
302
tags : Joi . array ( ) . items ( Joi . string ( ) . required ( ) ) , // tag names
302
303
projectId : Joi . number ( ) . integer ( ) . positive ( ) . required ( ) ,
303
304
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 ( ) ,
305
307
} ) . unknown ( true ) . required ( )
306
308
} ) . required ( )
307
309
}
@@ -414,7 +416,8 @@ processUpdate.schema = {
414
416
} ) . unknown ( true ) )
415
417
} ) . unknown ( true ) ) . min ( 1 ) ,
416
418
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 ( )
418
421
} ) . unknown ( true ) . required ( )
419
422
} ) . required ( )
420
423
}
0 commit comments