Files
astuto/app/controllers/comments_controller.rb

66 lines
1.5 KiB
Ruby
Raw Normal View History

2019-09-16 18:02:52 +02:00
class CommentsController < ApplicationController
before_action :authenticate_user!, only: [:create, :update]
2019-09-16 18:02:52 +02:00
def index
comments = Comment
2019-09-30 23:28:52 +02:00
.select(
:id,
:body,
:parent_id,
2019-10-01 19:15:03 +02:00
:is_post_update,
2019-09-30 23:28:52 +02:00
:updated_at,
'users.full_name as user_full_name',
'users.email as user_email',
)
2019-09-16 18:02:52 +02:00
.where(post_id: params[:post_id])
.left_outer_joins(:user)
.order(updated_at: :desc)
render json: comments
end
def create
comment = Comment.new(comment_params)
if comment.save
2022-06-10 12:03:33 +02:00
SendNotificationForCommentWorkflow.new(comment: comment).run
2019-09-30 23:28:52 +02:00
render json: comment.attributes.merge(
2022-06-10 12:03:33 +02:00
{ user_full_name: current_user.full_name, user_email: current_user.email }
2019-09-30 23:28:52 +02:00
), status: :created
else
2019-09-18 13:40:00 +02:00
render json: {
error: comment.errors.full_messages
2019-09-18 13:40:00 +02:00
}, status: :unprocessable_entity
end
end
def update
2019-10-09 15:23:59 +02:00
comment = Comment.find(params[:id])
2022-06-10 12:03:33 +02:00
authorize comment
comment.assign_attributes(comment_params)
if comment.save
render json: comment.attributes.merge(
2022-06-10 12:03:33 +02:00
{ user_full_name: current_user.full_name, user_email: current_user.email }
)
else
render json: {
error: comment.errors.full_messages
}, status: :unprocessable_entity
end
end
private
2022-06-10 12:03:33 +02:00
def comment_params
params
.require(:comment)
.permit(:body, :parent_id, :is_post_update)
.merge(
user_id: current_user.id,
post_id: params[:post_id]
)
end
2019-09-16 18:02:52 +02:00
end