summaryrefslogtreecommitdiff
path: root/app/controllers/admin/reports_controller.rb
blob: 55d4f55faeb09e2b6d0296d571b11e4890d5d287 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# frozen_string_literal: true

class Admin::ReportsController < ApplicationController
  include ReportsHelper
  before_action :check_auth
  before_action :load_report, only: [:show]

  def index
    @title = 'Admin - Reports'
    setup_pagination_and_tags

    if params[:rq] && params[:rq].present?
      @reports = Report.fancy_search(page: @page_num, per_page: @per_page, query: params[:rq]) do |search|
        search.add_sort open: :desc
        search.add_sort state: :desc
        search.add_sort created_at: :desc
      end.records
    else
      @reports = Report.fancy_search(page: @page_num, per_page: @per_page) do |search|
        search.add_query(bool: { should: [
          { term: { open: 'false' } },
          { bool: { must: [
            { term: { open: 'true' } },
            { bool: { must_not: { term: { admin_id: current_user.id.to_s } } } }
          ] } }
        ] })
        search.add_sort open: :desc
        search.add_sort state: :desc
        search.add_sort created_at: :desc
      end.records
      @my_reports = current_user.managed_reports.where(open: true).order(created_at: :desc).for_view
    end
  end

  def show
    @title = "Report: #{reported_thing @report.reportable}"
  end

  private

  def check_auth
    authorize! :manage, Report
  end

  def load_report
    @report = Report.find(params[:id])
  end
end