Class: Admin::UserReportsController

Inherits:
AdminController
  • Object
show all
Defined in:
app/controllers/admin/user_reports_controller.rb

Instance Method Summary collapse

Instance Method Details

#createObject

POST /user_reports POST /user_reports.json



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'app/controllers/admin/user_reports_controller.rb', line 33

def create

  params = user_report_params
  #params[:created_by_id] = current_user.id

  file = params[:attachment]
  s3 = Aws::S3::Resource.new(
    access_key_id: ENV['AWS_ACCESS_KEY_ID'],
    secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
  )
  bucket = s3.bucket('usig.reports')
  
  filename = params[:attachment].original_filename
  obj = bucket.object(filename)
  obj.upload_file(file, acl: 'public-read')

  attachment_params = {
    s3_url: true,
    mime: params[:attachment].content_type,
    name: filename,
    url: obj.public_url,
    size: params[:attachment].size,
  }

  file_extension = File.extname(filename)
  params[:name] = File.basename(filename, file_extension)
  params[:description] = File.basename(filename, file_extension)
  params[:attachment] = attachment_params
  params[:properties] = { "year" => Date.current.year }
  params[:status] = "active"

  @user_report = UserReport.new(params)
  
  respond_to do |format|
    if @user_report.save
      
      format.html { redirect_to admin_user_reports_path, notice: 'User report was successfully created.' }
      format.json { render :index, status: :created, location: @user_report }
    else
      format.html { render :new }
      format.json { render json: @user_report.errors, status: :unprocessable_entity }
    end
  end
end

#destroyObject

DELETE /user_reports/1 DELETE /user_reports/1.json



96
97
98
99
100
101
102
# File 'app/controllers/admin/user_reports_controller.rb', line 96

def destroy
  @user_report.destroy
  respond_to do |format|
    format.html { redirect_to admin_user_reports_url, notice: 'User report was successfully destroyed.' }
    format.json { head :no_content }
  end
end

#download_reportObject



104
105
106
107
108
109
110
111
112
# File 'app/controllers/admin/user_reports_controller.rb', line 104

def download_report

  url = params[:url]
  filename = File.basename(url)
  require 'open-uri'
  data = open(url) 
  send_data data.read, filename: filename
  
end

#editObject

GET /user_reports/1/edit



29
# File 'app/controllers/admin/user_reports_controller.rb', line 29

def edit; end

#indexObject

GET /user_reports GET /user_reports.json



9
10
11
12
13
14
15
16
17
# File 'app/controllers/admin/user_reports_controller.rb', line 9

def index
  @user_reports = UserReport.page params[:page] if current_user.user_type == "admin"
  @user_reports = UserReport.where(user_id: current_user.id).page params[:page] if current_user.user_type == "client"

  @user_reports = UserReport.where("(properties->>'year' = ? )", params[:year]).page params[:page] if current_user.user_type == "admin" && params[:year] != nil && params[:year] != ''
  @user_reports = UUserReport.where(user_id: current_user.id).page params[:page] if current_user.user_type == "client" && params[:year] != nil && params[:year] != ''

  render action: :index, layout: request.xhr?.nil?
end

#newObject

GET /user_reports/new



24
25
26
# File 'app/controllers/admin/user_reports_controller.rb', line 24

def new
  @user_report = UserReport.new
end

#showObject

GET /user_reports/1 GET /user_reports/1.json



21
# File 'app/controllers/admin/user_reports_controller.rb', line 21

def show; end

#updateObject

PATCH/PUT /user_reports/1 PATCH/PUT /user_reports/1.json



80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'app/controllers/admin/user_reports_controller.rb', line 80

def update
  params = user_report_params
  params[:updated_by_id] = current_user.id
  respond_to do |format|
    if @user_report.update(params)
      format.html { redirect_to admin_user_reports_path, notice: 'User report was successfully updated.' }
      format.json { render :show, status: :ok, location: @user_report }
    else
      format.html { render :edit }
      format.json { render json: @user_report.errors, status: :unprocessable_entity }
    end
  end
end