public function handle($data) { $this->validate_request(["assessment" => ["profile", "questions"]]); $assessment = $data->{"assessment"}; $profileJson = $assessment->{"profile"}; if (isset($profileJson->{"assessment-id"})) { $id = Token::decode($profileJson->{"assessment-id"}); } else { $id = Token::generateNewToken(TOKEN_ASSESSMENT); } $name = $profileJson->{"assessment-name"}; $displayname = isset($profileJson->{"display-name"}) ? $profileJson->{"display-name"} : $name; $profile = new AssessmentProfile($id, $name, $displayname); $questions = []; foreach ($assessment->{"questions"} as $questionData) { $questionJson = obj_to_array($questionData); if (isset($questionData->{"question-id"})) { $questionId = Token::decode($questionData->{"question-id"}); } else { $questionId = Token::generateNewToken(TOKEN_QUESTION); } $question = []; $question["id"] = $questionId->toString(); $question["data"] = $questionJson; $questions[] = $question; } return ["assessment" => AssessmentBackend::create_assessment($profile, $questions)->toExternalForm()]; }
public function handle($data) { $this->validate_request(["assignment", "answers"]); $assignmentId = Token::decode($data->{'assignment'}); $user = UserBackend::fetch_user_profile($this->params['id']); $assignment = AssignmentBackend::fetch_assignment_profile($assignmentId); $answers = AssessmentBackend::fetch_assessment_answers(new AssessmentProfile($assignment['assessment-id'])); $provided = $data->{'answers'}; $scores = []; foreach ($answers as $answer) { /** @var Token $question */ $question = $answer['question-id']; $score = ["question-id" => $question->toString(), "question-number" => $answer['question-number'], "max-score" => 1]; if ($answer['question-type'] == QuestionType::MULTI_CHOICE) { $score['score'] = $this->mark_multichoice_question($answer['answer-value'], $provided->{$question->toString()}); } elseif ($answer['question-type'] == QuestionType::ANSWER) { $score['score'] = $this->mark_answer_question($answer['answer-value'], $provided->{$question->toString()}); } $scores[] = $score; } if (count($scores) != count($answers)) { throw new EndpointExecutionException("An error has occurred whilst executing this endpoint"); } UserBackend::add_assignment_scores($user, $assignmentId, $assignment['assessment-id'], $scores); return ["scores" => $scores]; }
public function handle($data) { $assessments = []; /** @var AssessmentProfile $assessment */ foreach (AssessmentBackend::fetch_all_assessments() as $assessment) { $assessments[] = $assessment->toExternalForm(); } return ["count" => count($assessments), "assessments" => $assessments]; }
private function handlePost($data) { $this->validate_request(["question"]); $profile = AssessmentBackend::fetch_assessment_profile(Token::decode($this->params['id'])); $questionId = Token::decode($this->params['question']); $question = []; $question["id"] = $questionId->toString(); $question["data"] = obj_to_array($data->{"question"}); AssessmentBackend::update_question($profile, $questionId, $question); return $this->handleGet($data); }
public function handle($data) { $this->validate_request(["question"]); $assessment = AssessmentBackend::fetch_assessment_profile(Token::decode($this->params['id'])); $questionJson = obj_to_array($data->{"question"}); if (isset($data->{"question"}->{"question-id"})) { $questionId = Token::decode($data->{"question"}->{"question-id"}); } else { $questionId = Token::generateNewToken(TOKEN_QUESTION); } $question = []; $question["id"] = $questionId->toString(); $question["data"] = $questionJson; AssessmentBackend::add_question($assessment, $question); return []; }
public function handleDelete($data) { AssessmentBackend::delete_assessment(new AssessmentProfile(Token::decode($this->params['id']))); return []; }