Sha256: 0b95ed583a09d6fb633c272da3a9586da30bffec1d5b31cb64c42301e91b8952

Contents?: true

Size: 1.12 KB

Versions: 5

Compression:

Stored size: 1.12 KB

Contents

module Dossier
  class ReportsController < ApplicationController
    def show
      report = report_class.new(params[:options] || {})
      report.run

      respond_to do |format|
        format.html do
          begin
            render template: "dossier/reports/#{report_class.report_name}", locals: {report: report}
          rescue ActionView::MissingTemplate => e
            render template: 'dossier/reports/show', locals: {report: report}
          end
        end

        format.json do
          render :json => report.results.hashes
        end

        format.csv do
          set_content_disposition!
          self.response_body = StreamCSV.new(report.raw_results.arrays)
        end

        format.xls do
          set_content_disposition!
          self.response_body = Xls.new(report.raw_results.arrays)
        end
      end
    end

    private

    def report_class
      Dossier.name_to_class(params[:report])
    end

    def set_content_disposition!
      headers["Content-Disposition"] = %[attachment;filename=#{params[:report]}-report_#{Time.now.strftime('%m-%d-%Y_%H-%M-%S')}.#{params[:format]}]
    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
dossier-2.5.2 app/controllers/dossier/reports_controller.rb
dossier-2.5.1 app/controllers/dossier/reports_controller.rb
dossier-2.5.0 app/controllers/dossier/reports_controller.rb
dossier-2.4.0 app/controllers/dossier/reports_controller.rb
dossier-2.3.0 app/controllers/dossier/reports_controller.rb