public function determineCurrentStep(Semester $semester, $interviewedAssistantsCount, $assignedInterviewsCount, $totalAssistantsCount) { $today = new DateTime("now"); // Step 1 Before Admission if ($today < $semester->getAdmissionStartDate() && $today > $semester->getSemesterStartDate()) { return 1 + ($today->format('U') - $semester->getSemesterStartDate()->format('U')) / ($semester->getAdmissionStartDate()->format('U') - $semester->getSemesterStartDate()->format('U')); } // Step 2 Admission has started if ($today < $semester->getAdmissionEndDate() && $today > $semester->getAdmissionStartDate()) { return 2 + ($today->format('U') - $semester->getAdmissionStartDate()->format('U')) / ($semester->getAdmissionEndDate()->format('U') - $semester->getAdmissionStartDate()->format('U')); } // Step 3 Interviewing // No interviews are assigned yet if ($assignedInterviewsCount == 0 && $interviewedAssistantsCount == 0) { return 3; } elseif ($assignedInterviewsCount > 0) { return 3 + $interviewedAssistantsCount / ($assignedInterviewsCount + $interviewedAssistantsCount); } // Step 4 Distribute to schools // All interviews are conducted, but no one has been accepted yet if ($totalAssistantsCount == 0) { return 4; } // Step 5 Operating phase if ($today < $semester->getSemesterEndDate() && $today > $semester->getAdmissionEndDate()) { return 5 + ($today->format('U') - $semester->getAdmissionEndDate()->format('U')) / ($semester->getSemesterEndDate()->format('U') - $semester->getAdmissionEndDate()->format('U')); } // Something is wrong return -1; }
public function testSetSemesterEndDate() { // New datetime variable $today = new DateTime("now"); // new entity $semester = new Semester(); // Use the setSemesterEndDate method $semester->setSemesterEndDate($today); // Assert the result $this->assertEquals($today, $semester->getSemesterEndDate()); }