request->getPost(); $user = $this->getLoginUser(); $course = $this->checkCourseCache($post['course_id']); $validator = new UserDailyLimitValidator(); $validator->checkConsultLimit($user); $validator = new ConsultValidator(); $question = $validator->checkQuestion($post['question']); $consult = new ConsultModel(); $consult->course_id = $course->id; $consult->user_id = $user->id; $consult->question = $question; $consult->create(); $this->incrCourseConsultCount($course); $this->incrUserDailyConsultCount($user); return $consult; } protected function incrCourseConsultCount(CourseModel $course) { $this->eventsManager->fire('courseCounter:incrConsultCount', $this, $course); } protected function incrUserDailyConsultCount(UserModel $user) { $this->eventsManager->fire('userDailyCounter:incrConsultCount', $this, $user); } }