@@ -9113,7 +9113,20 @@ public void closeSoftwareContest(TCSubject tcSubject, long projectId, long winne
9113
9113
if (phase .getPhaseStatus ().getId () != PhaseStatus .OPEN .getId ()) {
9114
9114
needToUpdate = true ;
9115
9115
phase .setPhaseStatus (PhaseStatus .OPEN );
9116
- break ;
9116
+ }
9117
+ } else if (PROJECT_ITERATIVE_REVIEW_PHASE_NAME .equals (phase .getPhaseType ().getName ()) ||
9118
+ PROJECT_REVIEW_PHASE_NAME .equals (phase .getPhaseType ().getName ())){
9119
+ //check whether iterative/review open and winner has been choosen
9120
+ //which mean challenge has been close
9121
+ if (phase .getPhaseStatus ().getId () == PhaseStatus .OPEN .getId ()) {
9122
+ Submission [] submissions = uploadManager .getProjectSubmissions (contest .getId ());
9123
+ for (Submission submission : submissions ){
9124
+ if (submission .getPlacement () != null && submission .getPlacement () == 1L ){
9125
+ logger .error ("Challenge has been closed" );
9126
+ throw new ContestServiceException ("Winner for this challenge has been selected or " +
9127
+ "challenge has been closed before" );
9128
+ }
9129
+ }
9117
9130
}
9118
9131
}
9119
9132
}
@@ -9139,7 +9152,7 @@ public void closeSoftwareContest(TCSubject tcSubject, long projectId, long winne
9139
9152
Date currentDate = new Date ();
9140
9153
//length 1 hour
9141
9154
long length = 60 * MINUTE_IN_MILIS ;
9142
- //submision start 3h before
9155
+ //reg start 3h before
9143
9156
Date regStartDate = new Date (currentDate .getTime () - 180 * MINUTE_IN_MILIS );
9144
9157
//submision start 2h before
9145
9158
Date submissionStartDate = new Date (currentDate .getTime () - 120 * MINUTE_IN_MILIS );
@@ -9231,8 +9244,33 @@ public void cancelSoftwareContestByUser(TCSubject tcSubject, long projectId) thr
9231
9244
logger .debug ("Entering #cancelSoftwareContestByUser" );
9232
9245
try {
9233
9246
Project contest = projectServices .getProject (projectId );
9247
+ com .topcoder .project .phases .Project projectPhases = projectServices .getPhases (contest .getId ());
9248
+ com .topcoder .project .phases .Phase [] phases = projectPhases .getAllPhases ();
9249
+
9250
+ //check whether iterative/review open and winner has been choosen
9251
+ //which mean challenge has been close before
9252
+ for (com .topcoder .project .phases .Phase phase : phases ) {
9253
+ if (PROJECT_ITERATIVE_REVIEW_PHASE_NAME .equals (phase .getPhaseType ().getName ()) ||
9254
+ PROJECT_REVIEW_PHASE_NAME .equals (phase .getPhaseType ().getName ())){
9255
+ //check whether iterative/review open and winner has been choosen
9256
+ //which mean challenge has been close
9257
+ if (phase .getPhaseStatus ().getId () == PhaseStatus .OPEN .getId ()) {
9258
+ Submission [] submissions = uploadManager .getProjectSubmissions (contest .getId ());
9259
+ for (Submission submission : submissions ){
9260
+ if (submission .getPlacement () != null && submission .getPlacement () == 1L ){
9261
+ logger .error ("Challenge has been closed" );
9262
+ throw new ContestServiceException ("Can't cancel this challenge because winner " +
9263
+ "for this challenge has been selected or challenge has been closed before" );
9264
+ }
9265
+ }
9266
+ }
9267
+ }
9268
+ }
9269
+
9234
9270
contest .setProjectStatus (ProjectStatus .CANCELLED_CLIENT_REQUEST );
9235
9271
projectManager .updateProject (contest , "cancel-client request" , String .valueOf (tcSubject .getUserId ()));
9272
+ } catch (ContestServiceException e ) {
9273
+ throw e ;
9236
9274
} catch (Exception e ) {
9237
9275
logger .error ("Failed to update challenge" );
9238
9276
throw new ContestServiceException ("Failed to update challenge" , e );
0 commit comments