about summary refs log tree commit diff
path: root/app/controllers/admin/disputes/appeals_controller.rb
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2022-02-17 22:31:21 +0100
committerGitHub <noreply@github.com>2022-02-17 22:31:21 +0100
commitc8ef003c6b40e9b7212f43f1b5706b0967fcfe8a (patch)
tree7ab6dc75943d22b27df0ac411483b34f79e72211 /app/controllers/admin/disputes/appeals_controller.rb
parentec4f9066189fbab4368a275e9cd654dc7ad48217 (diff)
parent41a8606627216e8ed32fb562d245327e5985ba2d (diff)
Merge pull request #1692 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
Diffstat (limited to 'app/controllers/admin/disputes/appeals_controller.rb')
-rw-r--r--app/controllers/admin/disputes/appeals_controller.rb40
1 files changed, 40 insertions, 0 deletions
diff --git a/app/controllers/admin/disputes/appeals_controller.rb b/app/controllers/admin/disputes/appeals_controller.rb
new file mode 100644
index 000000000..32e5e2f6f
--- /dev/null
+++ b/app/controllers/admin/disputes/appeals_controller.rb
@@ -0,0 +1,40 @@
+# frozen_string_literal: true
+
+class Admin::Disputes::AppealsController < Admin::BaseController
+  before_action :set_appeal, except: :index
+
+  def index
+    authorize :appeal, :index?
+
+    @appeals = filtered_appeals.page(params[:page])
+  end
+
+  def approve
+    authorize @appeal, :approve?
+    log_action :approve, @appeal
+    ApproveAppealService.new.call(@appeal, current_account)
+    redirect_to disputes_strike_path(@appeal.strike)
+  end
+
+  def reject
+    authorize @appeal, :approve?
+    log_action :reject, @appeal
+    @appeal.reject!(current_account)
+    UserMailer.appeal_rejected(@appeal.account.user, @appeal)
+    redirect_to disputes_strike_path(@appeal.strike)
+  end
+
+  private
+
+  def filtered_appeals
+    Admin::AppealFilter.new(filter_params.with_defaults(status: 'pending')).results.includes(strike: :account)
+  end
+
+  def filter_params
+    params.slice(:page, *Admin::AppealFilter::KEYS).permit(:page, *Admin::AppealFilter::KEYS)
+  end
+
+  def set_appeal
+    @appeal = Appeal.find(params[:id])
+  end
+end