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



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
77
78
79
80
# File 'app/controllers/admin/user_reports_controller.rb', line 37

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



100
101
102
103
104
105
106
# File 'app/controllers/admin/user_reports_controller.rb', line 100

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



108
109
110
111
112
113
114
115
116
# File 'app/controllers/admin/user_reports_controller.rb', line 108

def download_report

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

#editObject

GET /user_reports/1/edit



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

def edit; end

#indexObject

GET /user_reports GET /user_reports.json



9
10
11
12
13
14
15
16
17
18
19
20
21
# 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 = UserReport.where(user_id: current_user.id).where("(properties->>'year' = ? )", params[:year]).page params[:page] if current_user.user_type == "client" && params[:year] != nil && params[:year] != ''

  if request.xhr?
    render action: :index ,layout: false
  else
    render action: :index, layout: true
  end
end

#newObject

GET /user_reports/new



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

def new
  @user_report = UserReport.new
end

#showObject

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



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

def show; end

#updateObject

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



84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'app/controllers/admin/user_reports_controller.rb', line 84

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