@@ -9106,12 +9106,16 @@ public void closeSoftwareContest(TCSubject tcSubject, long projectId, long winne
9106
9106
9107
9107
com .topcoder .project .phases .Project projectPhases = projectServices .getPhases (contest .getId ());
9108
9108
com .topcoder .project .phases .Phase [] phases = projectPhases .getAllPhases ();
9109
- boolean needToUpdate = false ;
9109
+ boolean phaseNeedToUpdate = false ;
9110
+ boolean phaseHasClosed = false ;
9110
9111
//make sure we have submission phase is opened if not update it
9111
9112
for (com .topcoder .project .phases .Phase phase : phases ) {
9112
9113
if (PROJECT_SUBMISSION_PHASE_NAME .equals (phase .getPhaseType ().getName ())) {
9113
9114
if (phase .getPhaseStatus ().getId () != PhaseStatus .OPEN .getId ()) {
9114
- needToUpdate = true ;
9115
+ phaseNeedToUpdate = true ;
9116
+ if (phase .getPhaseStatus ().getId () == PhaseStatus .CLOSED .getId ()){
9117
+ phaseHasClosed = true ;
9118
+ }
9115
9119
phase .setPhaseStatus (PhaseStatus .OPEN );
9116
9120
}
9117
9121
} else if (PROJECT_ITERATIVE_REVIEW_PHASE_NAME .equals (phase .getPhaseType ().getName ()) ||
@@ -9130,7 +9134,7 @@ public void closeSoftwareContest(TCSubject tcSubject, long projectId, long winne
9130
9134
}
9131
9135
}
9132
9136
}
9133
- if (needToUpdate ) {
9137
+ if (phaseNeedToUpdate ) {
9134
9138
projectPhases .setPhases (new HashSet <com .topcoder .project .phases .Phase >(Arrays .asList (phases )));
9135
9139
projectServices .updatePhases (projectPhases , String .valueOf (tcSubject .getUserId ()));
9136
9140
}
@@ -9145,42 +9149,28 @@ public void closeSoftwareContest(TCSubject tcSubject, long projectId, long winne
9145
9149
com .topcoder .project .phases .Phase submissionPhase = null ;
9146
9150
com .topcoder .project .phases .Phase reviewPhase = null ;
9147
9151
for (com .topcoder .project .phases .Phase phase : phases ) {
9148
- if (PROJECT_REGISTRATION_PHASE_NAME .equals (phase .getPhaseType ().getName ()) ||
9149
- PROJECT_SUBMISSION_PHASE_NAME .equals (phase .getPhaseType ().getName ()) ||
9150
- PROJECT_REVIEW_PHASE_NAME .equals (phase .getPhaseType ().getName ()) ||
9152
+ if (PROJECT_SUBMISSION_PHASE_NAME .equals (phase .getPhaseType ().getName ())) {
9153
+ if (phaseNeedToUpdate && !phaseHasClosed ) {
9154
+ //submission is scheduled
9155
+ phase .setActualStartDate (new Date ());
9156
+ phase .setActualEndDate (new Date ());
9157
+ } else if (!phaseNeedToUpdate ){
9158
+ //phase already open
9159
+ phase .setActualEndDate (new Date ());
9160
+ }
9161
+ phase .setPhaseStatus (PhaseStatus .CLOSED );
9162
+ submissionPhase = phase ;
9163
+ } else if (PROJECT_REVIEW_PHASE_NAME .equals (phase .getPhaseType ().getName ()) ||
9151
9164
PROJECT_ITERATIVE_REVIEW_PHASE_NAME .equals (phase .getPhaseType ().getName ())) {
9152
- Date currentDate = new Date ();
9153
- //length 1 hour
9154
- long length = 60 * MINUTE_IN_MILIS ;
9155
- //reg start 3h before
9156
- Date regStartDate = new Date (currentDate .getTime () - 180 * MINUTE_IN_MILIS );
9157
- //submision start 2h before
9158
- Date submissionStartDate = new Date (currentDate .getTime () - 120 * MINUTE_IN_MILIS );
9159
- //submission end / review start 1h before
9160
- Date submissionEndDate = new Date (currentDate .getTime () - 60 * MINUTE_IN_MILIS );
9161
-
9162
- if (PROJECT_SUBMISSION_PHASE_NAME .equals (phase .getPhaseType ().getName ())) {
9163
- phase .setScheduledStartDate (submissionStartDate );
9164
- phase .setActualStartDate (submissionStartDate );
9165
- phase .setScheduledEndDate (submissionEndDate );
9166
- phase .setActualEndDate (submissionEndDate );
9167
- phase .setLength (length );
9168
- phase .setPhaseStatus (PhaseStatus .CLOSED );
9169
- submissionPhase = phase ;
9170
- } else if (PROJECT_REGISTRATION_PHASE_NAME .equals (phase .getPhaseType ().getName ())) {
9171
- phase .setScheduledStartDate (regStartDate );
9172
- phase .setFixedStartDate (regStartDate );
9173
- phase .setActualStartDate (regStartDate );
9174
- phase .setScheduledEndDate (submissionEndDate );
9175
- phase .setActualEndDate (submissionEndDate );
9176
- phase .setLength (2 * length );
9177
- phase .setPhaseStatus (PhaseStatus .CLOSED );
9178
- } else {
9179
- phase .setScheduledStartDate (submissionEndDate );
9180
- phase .setActualStartDate (submissionEndDate );
9181
- phase .setScheduledEndDate (currentDate );
9182
- phase .setLength (length );
9165
+ if (phase .getPhaseStatus ().getId () == PhaseStatus .SCHEDULED .getId ()) {
9166
+ phase .setActualStartDate (new Date ());
9167
+ phase .setScheduledEndDate (null );
9168
+ phase .setScheduledStartDate (phase .calcStartDate ());
9169
+ phase .setScheduledEndDate (phase .calcEndDate ());
9183
9170
phase .setPhaseStatus (PhaseStatus .OPEN );
9171
+ }
9172
+ if (phase .getPhaseStatus ().getId () != PhaseStatus .CLOSED .getId ()) {
9173
+ //skiping closed iterative review
9184
9174
reviewPhase = phase ;
9185
9175
}
9186
9176
}
0 commit comments