creatorId($comment->artwork_id); if ($creatorId) { $this->userStats->incrementCommentsReceived($creatorId); } // The commenter is "active" $this->userStats->ensureRow($comment->user_id); $this->userStats->setLastActiveAt($comment->user_id); $this->mentionSync->syncForComment($comment); } public function updated(ArtworkComment $comment): void { if ($comment->wasChanged(['content', 'raw_content', 'rendered_content', 'parent_id'])) { $this->mentionSync->syncForComment($comment); } } /** Soft delete. */ public function deleted(ArtworkComment $comment): void { $creatorId = $this->creatorId($comment->artwork_id); if ($creatorId) { $this->userStats->decrementCommentsReceived($creatorId); } $this->mentionSync->deleteForComment((int) $comment->id); } /** Hard delete after soft delete — already decremented; nothing to do. */ public function forceDeleted(ArtworkComment $comment): void { // Only decrement if the comment was NOT already soft-deleted // (to avoid double-decrement). if ($comment->deleted_at === null) { $creatorId = $this->creatorId($comment->artwork_id); if ($creatorId) { $this->userStats->decrementCommentsReceived($creatorId); } } $this->mentionSync->deleteForComment((int) $comment->id); } public function restored(ArtworkComment $comment): void { $this->mentionSync->syncForComment($comment); } private function creatorId(int $artworkId): ?int { $id = DB::table('artworks') ->where('id', $artworkId) ->value('user_id'); return $id !== null ? (int) $id : null; } }