@@ -3,6 +3,8 @@ const Decimal = require("decimal.js");
33const constants = require ( "../../app-constants" ) ;
44const { PrizeSetTypeEnum } = require ( "@prisma/client" ) ;
55const { dedupeChallengeTerms } = require ( "./helper" ) ;
6+
7+ const SUBMISSION_PHASE_PRIORITY = [ "Topcoder Submission" , "Submission" ] ;
68/**
79 * Convert phases data to prisma model.
810 *
@@ -11,6 +13,7 @@ const { dedupeChallengeTerms } = require("./helper");
1113 * @param {Object } auditFields createdBy and updatedBy
1214 */
1315function convertChallengePhaseSchema ( challenge , result , auditFields ) {
16+ const phases = _ . isArray ( challenge . phases ) ? challenge . phases : [ ] ;
1417 // keep phase data
1518 const phaseFields = [
1619 "name" ,
@@ -25,24 +28,29 @@ function convertChallengePhaseSchema(challenge, result, auditFields) {
2528 "challengeSource" ,
2629 ] ;
2730 // current phase names
28- result . currentPhaseNames = _ . map (
29- _ . filter ( challenge . phases , ( p ) => p . isOpen === true ) ,
30- "name"
31- ) ;
32- // get registration date and submission date
33- _ . forEach ( challenge . phases , ( p ) => {
34- if ( p . name === "Registration" ) {
35- result . registrationStartDate = p . actualStartDate || p . scheduledStartDate ;
36- result . registrationEndDate = p . actualEndDate || p . scheduledEndDate ;
37- } else if ( p . name === "Submission" ) {
38- result . submissionStartDate = p . actualStartDate || p . scheduledStartDate ;
39- result . submissionEndDate = p . actualEndDate || p . scheduledEndDate ;
40- }
41- } ) ;
31+ result . currentPhaseNames = _ . map ( _ . filter ( phases , ( p ) => p . isOpen === true ) , "name" ) ;
32+
33+ const registrationPhase = _ . find ( phases , ( p ) => p . name === "Registration" ) ;
34+ const submissionPhase =
35+ _ . find ( phases , ( p ) => p . name === SUBMISSION_PHASE_PRIORITY [ 0 ] ) ||
36+ _ . find ( phases , ( p ) => p . name === SUBMISSION_PHASE_PRIORITY [ 1 ] ) ;
37+
38+ if ( registrationPhase ) {
39+ result . registrationStartDate =
40+ registrationPhase . actualStartDate || registrationPhase . scheduledStartDate ;
41+ result . registrationEndDate =
42+ registrationPhase . actualEndDate || registrationPhase . scheduledEndDate ;
43+ }
44+ if ( submissionPhase ) {
45+ result . submissionStartDate =
46+ submissionPhase . actualStartDate || submissionPhase . scheduledStartDate ;
47+ result . submissionEndDate =
48+ submissionPhase . actualEndDate || submissionPhase . scheduledEndDate ;
49+ }
4250 // set phases array data
43- if ( ! _ . isEmpty ( challenge . phases ) ) {
51+ if ( ! _ . isEmpty ( phases ) ) {
4452 result . phases = {
45- create : _ . map ( challenge . phases , ( p ) => {
53+ create : _ . map ( phases , ( p ) => {
4654 const phaseData = {
4755 phase : { connect : { id : p . phaseId } } ,
4856 ..._ . pick ( p , phaseFields ) ,
0 commit comments