boardService->getBoardBySlug($slug, checkScope: false); if (! $board) { return $this->notFound('sirsoft-board::messages.boards.error_404'); } $result = $this->reactionService->react( (int) Auth::id(), $board, $postId, (int) $request->validated('reaction_type_id'), ); $messageKey = match ($result['action']) { 'change' => 'sirsoft-board::messages.reaction.change_success', 'remove' => 'sirsoft-board::messages.reaction.remove_success', default => 'sirsoft-board::messages.reaction.add_success', }; return $this->success($messageKey, [ 'action' => $result['action'], 'my_reaction_type_id' => $result['reaction_type_id'], 'reaction_counts' => $result['reaction_counts'], ]); } catch (PostNotFoundException $e) { return $this->notFound('sirsoft-board::messages.post.not_found'); } catch (ReactionNotAllowedException $e) { return $this->error($e->getMessage(), 422, ['code' => 'reaction_not_allowed']); } catch (\Exception $e) { return $this->error('sirsoft-board::messages.reaction.failed', 500, $e->getMessage()); } } }