From 31990b3d3b6ea1d6b2bb68226007d1d996df0920 Mon Sep 17 00:00:00 2001 From: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com> Date: Thu, 3 Sep 2020 12:06:15 -0600 Subject: [PATCH] Add Recent Reports to Users' Admin User Page (#10058) [deploy] * Adds _reports partial and renders _reports.html.erb in /admin/users/edit.html.erb * Adds a Recent Reports sections and a toggle function to /admin/users/_reports * WIP: display feedback_messages in _reports.html.erb * Adds #set_feedback_messages to Admin::Users::Controller and adjusts _reports.html.erb * Adjusts #set_feedback_messages to look for message ids and adds to _reports.html.erb data * Remove accidental dead code from Admin::Users::Controller * Adjusts the else statement wording to be more fun * Adjusts style of recent reports to mirror style of recent reactions * Implement Admin UI changes to Recent Reports section of admin/users/:id/edit * Adds a link to the admin_feedback_messages_path for each report in _reports.html.erb * Adjusts the path used when a report is clicked on in _reports.html.erb * Adds #user_types check to feedback_message.rb to determine Affected, Offender, or Reporter in _reports --- app/controllers/admin/users_controller.rb | 14 +++++--------- app/models/feedback_message.rb | 8 ++++++++ app/views/admin/users/_reports.html.erb | 19 +++++++++++++++++++ app/views/admin/users/edit.html.erb | 2 +- 4 files changed, 33 insertions(+), 10 deletions(-) create mode 100644 app/views/admin/users/_reports.html.erb diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index 4dde6d852..14535f4f5 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -15,7 +15,7 @@ module Admin def edit @user = User.find(params[:id]) @notes = @user.notes.order(created_at: :desc).limit(10).load - set_related_reactions + set_feedback_messages end def show @@ -171,14 +171,10 @@ module Admin Credit.remove_from(org, amount) end - def set_related_reactions - user_article_ids = @user.articles.ids - user_comment_ids = @user.comments.ids - @related_vomit_reactions = Reaction.where(reactable_type: "Comment", reactable_id: user_comment_ids, - category: "vomit") - .or(Reaction.where(reactable_type: "Article", reactable_id: user_article_ids, category: "vomit")) - .or(Reaction.where(reactable_type: "User", user_id: @user.id, category: "vomit")) - .includes(:reactable) + def set_feedback_messages + @related_reports = FeedbackMessage.where(id: @user.reporter_feedback_messages.ids) + .or(FeedbackMessage.where(id: @user.affected_feedback_messages.ids)) + .or(FeedbackMessage.where(id: @user.offender_feedback_messages.ids)) .order(created_at: :desc).limit(15) end diff --git a/app/models/feedback_message.rb b/app/models/feedback_message.rb index 1d28c8b26..70d3764d5 100644 --- a/app/models/feedback_message.rb +++ b/app/models/feedback_message.rb @@ -26,4 +26,12 @@ class FeedbackMessage < ApplicationRecord def capitalize_status self.status = status.capitalize if status.present? end + + def user_types(user_id) + types = [] + types << "Affected" if user_id == affected_id + types << "Offender" if user_id == offender_id + types << "Reporter" if user_id == reporter_id + types + end end diff --git a/app/views/admin/users/_reports.html.erb b/app/views/admin/users/_reports.html.erb new file mode 100644 index 000000000..327d6c1c6 --- /dev/null +++ b/app/views/admin/users/_reports.html.erb @@ -0,0 +1,19 @@ +
+
+

Recent Reports

+ +
+
+ <% unless @related_reports.empty? %> + <% @related_reports.each do |report| %> + + <%= report.category.capitalize %> (<%= report.status %>) + <%= report.user_types(@user.id).to_sentence %>: <%= report.message %> + <%= report.created_at&.strftime("%b %e '%y") %> + + <% end %> + <% else %> +

Nothing to report here! 👀

+ <% end %> +
+
diff --git a/app/views/admin/users/edit.html.erb b/app/views/admin/users/edit.html.erb index a46c0adb4..34ce61345 100644 --- a/app/views/admin/users/edit.html.erb +++ b/app/views/admin/users/edit.html.erb @@ -48,7 +48,7 @@ <%= render "notes" %> -<%= render "negative_reactions" %> +<%= render "reports" %>