Skip to content
This repository was archived by the owner on Jan 23, 2025. It is now read-only.

Commit f9091d9

Browse files
authored
Merge pull request #221 from deedee/fix_phase_date_while_closing_challenge
fix phase date validation while closing challenge
2 parents 11b1184 + 19bc5cc commit f9091d9

File tree

2 files changed

+27
-48
lines changed

2 files changed

+27
-48
lines changed

services/contest_service_facade/src/java/main/com/topcoder/service/facade/contest/ejb/ContestServiceFacadeBean.java

+27-37
Original file line numberDiff line numberDiff line change
@@ -9106,12 +9106,16 @@ public void closeSoftwareContest(TCSubject tcSubject, long projectId, long winne
91069106

91079107
com.topcoder.project.phases.Project projectPhases = projectServices.getPhases(contest.getId());
91089108
com.topcoder.project.phases.Phase[] phases = projectPhases.getAllPhases();
9109-
boolean needToUpdate = false;
9109+
boolean phaseNeedToUpdate = false;
9110+
boolean phaseHasClosed = false;
91109111
//make sure we have submission phase is opened if not update it
91119112
for (com.topcoder.project.phases.Phase phase : phases) {
91129113
if (PROJECT_SUBMISSION_PHASE_NAME.equals(phase.getPhaseType().getName())) {
91139114
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+
}
91159119
phase.setPhaseStatus(PhaseStatus.OPEN);
91169120
}
91179121
} else if (PROJECT_ITERATIVE_REVIEW_PHASE_NAME.equals(phase.getPhaseType().getName()) ||
@@ -9130,7 +9134,7 @@ public void closeSoftwareContest(TCSubject tcSubject, long projectId, long winne
91309134
}
91319135
}
91329136
}
9133-
if (needToUpdate) {
9137+
if (phaseNeedToUpdate) {
91349138
projectPhases.setPhases(new HashSet<com.topcoder.project.phases.Phase>(Arrays.asList(phases)));
91359139
projectServices.updatePhases(projectPhases, String.valueOf(tcSubject.getUserId()));
91369140
}
@@ -9145,42 +9149,28 @@ public void closeSoftwareContest(TCSubject tcSubject, long projectId, long winne
91459149
com.topcoder.project.phases.Phase submissionPhase = null;
91469150
com.topcoder.project.phases.Phase reviewPhase = null;
91479151
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()) ||
91519164
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());
91839170
phase.setPhaseStatus(PhaseStatus.OPEN);
9171+
}
9172+
if (phase.getPhaseStatus().getId() != PhaseStatus.CLOSED.getId()) {
9173+
//skiping closed iterative review
91849174
reviewPhase = phase;
91859175
}
91869176
}

services/project_services/src/java/main/com/topcoder/project/service/impl/ProjectServicesImpl.java

-11
Original file line numberDiff line numberDiff line change
@@ -2083,17 +2083,10 @@ public FullProjectData updateProject(Project projectHeader, String projectHeader
20832083
if (p.getPhaseType().getId() == PhaseType.REGISTRATION_PHASE.getId() && projectHeader.getProjectStatus().getId() == ProjectStatus.DRAFT.getId()) {
20842084
if (projectHeader.getProperty(ProjectPropertyType.PRIVATE_PROJECT) != null && "1".equals(projectHeader.getProperty(ProjectPropertyType.PRIVATE_PROJECT))) {
20852085
if (p.getPhaseStatus().getId() != PhaseStatus.CLOSED.getId()) {
2086-
Date now = new Date();
2087-
p.setFixedStartDate(now);
2088-
p.setActualStartDate(now);
2089-
p.setActualEndDate(new Date(System.currentTimeMillis()+5*60*1000));
20902086
p.setPhaseStatus(PhaseStatus.CLOSED);
20912087
}
20922088
} else {
20932089
if (p.getPhaseStatus().getId() == PhaseStatus.CLOSED.getId()) {
2094-
p.setActualStartDate(null);
2095-
p.setActualEndDate(null);
2096-
p.setFixedStartDate(null);
20972090
p.setPhaseStatus(PhaseStatus.SCHEDULED);
20982091
}
20992092
}
@@ -5171,10 +5164,6 @@ private void setNewPhasesProperties(Project projectHeader,
51715164
if (p.getPhaseType().getId() == PhaseType.REGISTRATION_PHASE.getId()) {
51725165
if (projectHeader.getProperty(ProjectPropertyType.PRIVATE_PROJECT) != null && projectHeader.getProperty(ProjectPropertyType.PRIVATE_PROJECT).equals("1") && projectHeader.getProjectStatus().getId() == ProjectStatus.DRAFT.getId()) {
51735166
p.setPhaseStatus(PhaseStatus.CLOSED);
5174-
Date now = new Date();
5175-
p.setFixedStartDate(now);
5176-
p.setActualStartDate(now);
5177-
p.setActualEndDate(new Date(System.currentTimeMillis()+5*60*1000));
51785167
}
51795168
}
51805169
}

0 commit comments

Comments
 (0)