Class: Railspress::Admin::ImportsController

Inherits:
BaseController
  • Object
show all
Defined in:
app/controllers/railspress/admin/imports_controller.rb

Instance Method Summary collapse

Instance Method Details

#createObject



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
# File 'app/controllers/railspress/admin/imports_controller.rb', line 12

def create
  uploaded_files = Array(import_params[:file]).reject(&:blank?)

  if uploaded_files.empty?
    redirect_to typed_admin_imports_path(type: import_params[:import_type]),
                alert: "Please select at least one file to import."
    return
  end

  # Create import record
  import = Import.create!(
    import_type: import_params[:import_type],
    filename: uploaded_files.size == 1 ? uploaded_files.first.original_filename : "#{uploaded_files.size} files",
    content_type: uploaded_files.first.content_type,
    status: "pending"
  )

  # Save uploaded files to tmp
  file_paths = save_uploaded_files(import, uploaded_files)

  # Enqueue job
  ImportPostsJob.perform_later(import.id, file_paths)

  redirect_to typed_admin_imports_path(type: import_params[:import_type]),
              notice: "Import started. #{uploaded_files.size} file(s) queued for processing."
end

#showObject



6
7
8
9
10
# File 'app/controllers/railspress/admin/imports_controller.rb', line 6

def show
  @import_type = params[:type]
  @back_path = { "posts" => admin_posts_path }[@import_type]
  @recent_imports = Import.by_type(@import_type).recent
end