docbrown/app/controllers/internal/feedback_messages_controller.rb
Andy Zhao ecbb9d4ab1 [Done] New Reporting System MVP (#408)
* Move validations from controller to model

* Add new columns to feedback message model

* Use polymorphic notes relationship

* MVP of ticketing system

* Use new URL for reported_url param

* Add missing files

* Add validations and tests for feedback_messages

* Clean up some html

* Update create spec and add update spec

* Add mail tests and lint

* Add link to user profile
2018-06-19 16:41:31 -04:00

37 lines
1.3 KiB
Ruby

class Internal::FeedbackMessagesController < Internal::ApplicationController
layout "internal"
def index
@feedback_type = params[:state] || "abuse-reports"
@feedback_messages = FeedbackMessage.
where(feedback_type: @feedback_type).
order("created_at DESC").
page(params[:page] || 1).per(25)
end
def update
@feedback_message = FeedbackMessage.find(params[:id])
@feedback_message.status = feedback_message_params[:status]
@feedback_message.reviewer_id = feedback_message_params[:reviewer_id]
note = @feedback_message.find_or_create_note(@feedback_message.feedback_type)
note.content = feedback_message_params[:note][:content]
if @feedback_message.save! && note.save!
@feedback_message.touch(:last_reviewed_at)
flash[:success] = "Report ##{@feedback_message.id} saved. Remember to send emails!"
redirect_to "/internal/reports?state=#{@feedback_message.feedback_type}"
else
@feedback_messages = FeedbackMessage.where(feedback_type: @feedback_type)
flash[:error] = @feedback_message.errors.full_messages
render "index.html.erb", state: @feedback_message.feedback_type
end
end
private
def feedback_message_params
params[:feedback_message].permit(
:status, :reviewer_id,
note: [:content, :reason],
)
end
end