Sha256: 59dd898de4b1878f35ba6e5dde655f1e971358050d6539fe42258f06f7053345

Contents?: true

Size: 1.18 KB

Versions: 2

Compression:

Stored size: 1.18 KB

Contents

class Report < ActiveRecord::Base
  belongs_to :connect
  has_many :requirements, dependent: :destroy
  has_many :series, dependent: :destroy
  has_many :dictionaries, dependent: :destroy, as: :resource

  def report_date(params)
    results = {charts: [], texts: []}
    sql_code = self.sql_code
    self.requirements.each do |r|
      sql_code = params[r.sql_key].blank? ? sql_code.gsub(r.sql_default, r.sql_replace) : sql_code.gsub("${#{r.sql_key}}", params[r.sql_key])
    end
    sql_results = self.connect.exec(sql_code).clone
    series = self.series.clone
    series.each do |s|
      data = []
      sql_results.each do |r|
        name = self.is_sql_category ? r[self.category_name] : self.dictionaries.where(value: r[self.category_name]).first.key
        data << {category_name: name, value: r[s.sql_key].to_i}
      end
      results[:charts] << {series_name: s.name, data: data}
    end
    sql_results.each do |r|
      cols = []
      cols << (self.is_sql_category ? r[self.category_name] : self.dictionaries.where(value: r[self.category_name]).first.key)
      self.series.each do |s|
        cols << r[s.sql_key].to_i
      end
      results[:texts] << cols
    end
    results
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
treport-0.2.0 app/models/report.rb
treport-0.1.0 app/models/report.rb