Class: Raport::Report

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/raport/report.rb,
app/services/raport/report/renderer.rb

Defined Under Namespace

Classes: Renderer

Instance Method Summary collapse

Instance Method Details

#collectionObject



185
186
187
188
189
190
191
192
# File 'app/models/raport/report.rb', line 185

def collection
  @collection ||= begin
    query = select.present? ? resource_class.select(*select) : resource_class
    query = query.joins(*joins) if joins.any?
    query = query.where(where) if where.present?
    query.select("DISTINCT ON (#{resource_class.table_name}.id) #{resource_class.table_name}.*")
  end
end

#default_filenameObject



198
199
200
# File 'app/models/raport/report.rb', line 198

def default_filename
  [I18n.l(Time.zone.now, format: :dashed), action_name ? resource_class.human_attribute_name(action_name) : nil, resource_class.model_name.human(count: :other)].join('-')
end

#display_status_nameObject



223
224
225
# File 'app/models/raport/report.rb', line 223

def display_status_name
  self.class.human_state_name(state)
end

#downloadable?Boolean

Instance Methods


Returns:

  • (Boolean)


161
162
163
# File 'app/models/raport/report.rb', line 161

def downloadable?
  finished? || failed? && file?
end

#enqueue!Object



173
174
175
# File 'app/models/raport/report.rb', line 173

def enqueue!
  ReportsJob.perform_later(self)
end

#filenameObject



202
203
204
205
# File 'app/models/raport/report.rb', line 202

def filename
  encoding_options = { invalid: :replace, undef: :replace, replace: '', universal_newline: true }
  @filename ||= [name || default_filename, format].join('.').gsub('.csv.csv', '.csv').encode(Encoding.find('ASCII'), encoding_options)
end

#formatObject



181
182
183
# File 'app/models/raport/report.rb', line 181

def format
  @format ||= template.scan(/\.(.*?)\./).first.first.to_sym
end

#perform!Object



169
170
171
# File 'app/models/raport/report.rb', line 169

def perform!
  ReportJob.new(id).perform
end


215
216
217
# File 'app/models/raport/report.rb', line 215

def permalink(format = nil)
  [Rails.application.routes.url_helpers.admin_report_path(self.to_param, locale: I18n.locale), format].compact.join('.')
end

#resource_classObject



194
195
196
# File 'app/models/raport/report.rb', line 194

def resource_class
  @resource_class ||= resource_class_name.constantize
end

#status_css_classesObject



219
220
221
# File 'app/models/raport/report.rb', line 219

def status_css_classes
  Admin::BaseController.helpers.status_css_class(state).join(' ')
end

#template_pathObject



177
178
179
# File 'app/models/raport/report.rb', line 177

def template_path
  @template_path ||= File.path(template).gsub('app/views', '').split('.').first
end

#tmp_file_identifierObject



211
212
213
# File 'app/models/raport/report.rb', line 211

def tmp_file_identifier
  'tempfile'
end

#tmp_filenameObject



207
208
209
# File 'app/models/raport/report.rb', line 207

def tmp_filename
  @tmp_filename ||= [filename, tmp_file_identifier].join('.')
end

#working?Boolean

Returns:

  • (Boolean)


165
166
167
# File 'app/models/raport/report.rb', line 165

def working?
  pending? || active?
end