public function updateReview(DB $db, APIRequest $request, APIResponse $response) { $this->vars->review = new PerformanceReview(); $this->vars->review->loadById($db, $request->get('reviewId')); //validate? foreach ($request->post('questions') as $questionId => $answerPost) { $answer = new ReviewAnswer(); if (!$answer->loadOneWhere($db, 'question_id = ? and review_id = ?', [$questionId, $this->vars->review->id])) { $answer->questionId = $questionId; $answer->reviewId = $this->vars->review->id; } $answer->text = $answerPost['text']; $answer->scale = $answerPost['scale']; $answer->store($db); } if ($_POST['action'] == 'submit') { $this->vars->review->submitted = 'yes'; $this->vars->review->submittedYmdt = gmdate('Y-m-d H:i:s'); $this->vars->review->submit($db); $updater = new WorkflowUpdater(); $workflow = new Workflow(); $workflow->loadOneWhere($db, 'table_row_id = ? and type = ?', [$this->vars->review->id, 'review']); $updater->complete($db, $workflow); } $response->success(); }
public function updateReview(APIRequest $request, APIResponse $response) { $reviewId = $request->get('id'); try { //The API could use a different Request object, as long as it implements the right //interface. $reviewAnswers = new ReviewAnswersRequest($reviewId, $request->post('questions')); } catch (InvalidArgumentException $exception) { //invalid data posted. $response->errorCode(400); $response->errorMessage('You did it wrong!'); return true; } $this->getPerformanceReviewService()->answerReviewQuestions($reviewAnswers); $response->successCode(200); return true; }