request->getPost(); $course = $this->checkCourse($post['course_id']); $user = $this->getLoginUser(); $validator = new CourseUserValidator(); $courseUser = $validator->checkCourseUser($course->id, $user->id); $validator->checkIfReviewed($course->id, $user->id); $validator = new ReviewValidator(); $data = [ 'course_id' => $course->id, 'owner_id' => $user->id, ]; $data['content'] = $validator->checkContent($post['content']); $data['rating1'] = $validator->checkRating($post['rating1']); $data['rating2'] = $validator->checkRating($post['rating2']); $data['rating3'] = $validator->checkRating($post['rating3']); $review = new ReviewModel(); $review->create($data); $this->updateCourseUserReview($courseUser); $this->incrCourseReviewCount($course); $this->updateCourseRating($course); return $review; } protected function updateCourseUserReview(CourseUserModel $courseUser) { $courseUser->reviewed = 1; $courseUser->update(); } protected function incrCourseReviewCount(CourseModel $course) { $course->review_count += 1; $course->update(); } public function updateCourseRating(CourseModel $course) { $service = new CourseStatService(); $service->updateRating($course->id); } }