class Internal::ReactionsController < Internal::ApplicationController
  after_action only: [:update] do
    Audit::Logger.log(:moderator, current_user, params.dup)
  end

  def update
    @reaction = Reaction.find(params[:id])
    if @reaction.update(status: params[:status])
      Moderator::SinkArticles.call(@reaction.reactable_id) if confirmed_vomit_reaction?
      render json: { outcome: "Success" }
    else
      render json: { error: @reaction.errors.full_messages.to_sentence }, status: :unprocessable_entity
    end
  end

  private

  def confirmed_vomit_reaction?
    @reaction.reactable_type == "User" && @reaction.status == "confirmed" && @reaction.category == "vomit"
  end
end
