예제 #1
0
 public static function run()
 {
     $class = get_called_class();
     TEST($class, "{$class}.student.saveEditSubmitAndDelete", function ($class) {
         // Create job
         global $MJob;
         $jobId = new MongoId($MJob->save([], false));
         $studentId = new MongoId();
         // make sure saving an application for a job with no application
         // fails
         EQ(null, ApplicationStudent::save($jobId, $studentId, []));
         // create application for job
         $questionId = new MongoId();
         $questions = [$questionId];
         ApplicationJob::createOrUpdate($jobId, $questions);
         $answers = [['_id' => $questionId, 'answer' => 'swag']];
         $firstApplication = ApplicationStudent::save($jobId, $studentId, $answers);
         NEQ(null, $firstApplication);
         $applicationId = $firstApplication->getId();
         NEQ(null, $firstApplication->getQuestions());
         EQ('swag', $firstApplication->getQuestions()[0]['answer']);
         // edit application
         ApplicationStudent::edit($applicationId, [['_id' => $questionId, 'answer' => 'qswag']]);
         $editedApplication = ApplicationModel::getSavedForJob($jobId)[0];
         EQ('qswag', $editedApplication['questions'][0]['answer']);
         // submit application
         TRUE(ApplicationStudent::submitSaved($applicationId));
         TRUE(ApplicationModel::checkSubmitted($applicationId));
         // submit new application
         $secondStudent = new MongoId();
         $secondApplication = ApplicationStudent::submitNew($jobId, $secondStudent, $answers);
         TRUE(ApplicationModel::checkSubmitted($secondApplication->getId()));
         // create, save, and delete application
         $thirdStudent = new MongoId();
         $applicationToDelete = ApplicationStudent::save($jobId, $thirdStudent, $answers)->getId();
         TRUE(ApplicationModel::applicationExists($jobId, $thirdStudent));
         TRUE(ApplicationStudent::deleteSaved($applicationToDelete));
     });
     TEST($class, "{$class}.student.getUnclaimedAndClaimed", function ($class) {
         TRUE(false, 'TODO: Write test');
     });
     TEST($class, "{$class}.job.createOrUpdate", function ($class) {
         // Try to create/update application for nonexistent job
         FALSE(ApplicationJob::createOrUpdate(new MongoId(), []));
         // Create job
         global $MJob;
         $jobId = new MongoId($MJob->save([], false));
         // Try to create application for job
         $oldQuestionId = new MongoId();
         $oldQuestions = [$oldQuestionId];
         TRUE(ApplicationJob::createOrUpdate($jobId, $oldQuestions));
         EQ($MJob::getApplicationQuestionIds($jobId), $oldQuestions);
         // Try to change one question in application for job
         $newQuestionId = new MongoId();
         $newQuestions = [$newQuestionId];
         TRUE(ApplicationJob::createOrUpdate($jobId, $newQuestions));
         EQ($MJob::getApplicationQuestionIds($jobId), $newQuestions);
         TRUE(false, 'TODO: Check to make sure student applications are updated right.');
     });
 }
 public static function apply(array $restOfRoute)
 {
     global $params;
     StudentController::requireLogin();
     $jobId = self::getIdFromRoute($restOfRoute);
     if (is_null($jobId)) {
         return;
     }
     $studentId = $_SESSION['_id'];
     $application = ApplicationJob::get($jobId);
     // Make sure job exists.
     if (!self::checkJobExists($jobId)) {
         return;
     }
     // Saving of application.
     if (isset($params['questions'])) {
         ApplicationStudent::save($jobId, $studentId, $params['questions']);
         return;
     }
     $submitted = false;
     // Submitting of application.
     if ($params) {
         self::submit($jobId, $studentId, $params);
     }
     $entry = JobModel::getById($jobId);
     $companyId = $entry['company'];
     $company = CompanyModel::getById($companyId);
     $questions = array();
     if (ApplicationModel::applicationExists($jobId, $studentId)) {
         $applicationData = ApplicationModel::getApplication($jobId, $studentId);
         $application = new ApplicationStudent($applicationData);
         $applicationId = $application->getId();
         $submitted = ApplicationModel::checkSubmitted($application->getId());
         if ($submitted) {
             //student succesfully submitted application
             self::redirect("../application/{$applicationId}");
         }
         foreach ($application->getQuestions() as $question) {
             $_id = $question['_id'];
             $questions[] = ['_id' => $_id, 'text' => Question::getTextById($_id), 'answer' => $question['answer']];
         }
     } else {
         JobModel::incrementApply($jobId);
         foreach ($application->getQuestions() as $questionId) {
             $answer = '';
             $answers = StudentModel::getAnswers($studentId);
             $answers = arrayToHashByKey($answers, '_id');
             if (isset($answers[$questionId . ''])) {
                 $answer = $answers[$questionId . '']['answer'];
             } else {
                 $answer = '';
             }
             $questions[] = ['_id' => $questionId, 'text' => Question::getTextById($questionId), 'answer' => $answer];
         }
     }
     self::render('jobs/applications/apply', ['questions' => $questions, 'jobtitle' => $entry['title'], 'companytitle' => $company['name'], 'jobId' => $jobId, 'submitted' => $submitted]);
 }