checkConsult($id); $user = $this->getLoginUser(); $validator = new UserDailyLimitValidator(); $validator->checkConsultLikeLimit($user); $validator = new ConsultValidator(); $consultLike = $validator->checkIfLiked($consult->id, $user->id); if (!$consultLike) { $consultLike = new ConsultLikeModel(); $consultLike->create([ 'consult_id' => $consult->id, 'user_id' => $user->id, ]); $this->incrLikeCount($consult); } else { if ($consultLike->deleted == 0) { $consultLike->update(['deleted' => 1]); $this->decrLikeCount($consult); } else { $consultLike->update(['deleted' => 0]); $this->incrLikeCount($consult); } } $this->incrUserDailyConsultLikeCount($user); return $consult; } protected function incrLikeCount(ConsultModel $consult) { $this->getPhEventsManager()->fire('consultCounter:incrLikeCount', $this, $consult); } protected function decrLikeCount(ConsultModel $consult) { $this->getPhEventsManager()->fire('consultCounter:decrLikeCount', $this, $consult); } protected function incrUserDailyConsultLikeCount(UserModel $user) { $this->getPhEventsManager()->fire('userDailyCounter:incrConsultLikeCount', $this, $user); } /** * @return EventsManager */ protected function getPhEventsManager() { return $this->getDI()->get('eventsManager'); } }