Module: QueryReport::Helper

Defined in:
lib/query_report/helper.rb

Instance Method Summary collapse

Instance Method Details

#generate_csv_for_report(records) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/query_report/helper.rb', line 50

def generate_csv_for_report(records)
  if records.size > 0
    columns = records.first.keys
    CSV.generate do |csv|
      csv << columns
      records.each do |record|
        csv << record.values.collect { |val| val.kind_of?(String) ? view_context.strip_links(val) : val }
      end
    end
  else
    nil
  end
end

#pdf_for_report(options) ⇒ Object



37
38
39
# File 'lib/query_report/helper.rb', line 37

def pdf_for_report(options)
  query_report_pdf_template_class(options).new(@report).to_pdf.render
end

#query_report_pdf_template_class(options) ⇒ Object



41
42
43
44
45
46
47
48
# File 'lib/query_report/helper.rb', line 41

def query_report_pdf_template_class(options)
  options = QueryReport.config.pdf_options.merge(options)
  if options[:template_class]
    @template_class ||= options[:template_class].to_s.constantize
    return @template_class
  end
  QueryReport::ReportPdf
end

#render_report(options) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/query_report/helper.rb', line 19

def render_report(options)
  if (params[:send_as_email].to_i > 0)
    send_pdf_email(params[:email_to], params[:subject], params[:message], action_name, pdf_for_report(options))
  end

  @remote = false
  respond_to do |format|
    format.js do
      @remote = true
      render 'query_report/list'
    end
    format.html { render 'query_report/list' }
    format.json { render json: @report.all_records }
    format.csv { send_data generate_csv_for_report(@report.all_records), :disposition => "attachment;" }
    format.pdf { send_data pdf_for_report(options) }
  end
end

#reporter(query, options = {}, &block) ⇒ Object



12
13
14
15
16
17
# File 'lib/query_report/helper.rb', line 12

def reporter(query, options={}, &block)
  @report ||= QueryReport::Report.new(params, view_context, options)
  @report.query = query
  @report.instance_eval &block
  render_report(options)
end

#send_pdf_email(email, subject, message, file_name, attachment) ⇒ Object



64
65
66
67
68
# File 'lib/query_report/helper.rb', line 64

def send_pdf_email(email, subject, message, file_name, attachment)
  @user = current_user
  to = email.split(',')
  ReportMailer.send_report(@user, to, subject, message, file_name, attachment).deliver
end