checkConsult($id); $user = $this->getLoginUser(); $validator = new UserLimitValidator(); $validator->checkDailyConsultLikeLimit($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 $consultLike; } protected function incrLikeCount(ConsultModel $consult) { $consult->like_count += 1; $consult->update(); } protected function decrLikeCount(ConsultModel $consult) { if ($consult->like_count > 0) { $consult->like_count -= 1; $consult->update(); } } protected function incrUserDailyConsultLikeCount(UserModel $user) { $this->eventsManager->fire('userDailyCounter:incrConsultLikeCount', $this, $user); } }