Add CSV download for ordergroups
This commit is contained in:
parent
389f205a6b
commit
71fd6f2a24
4 changed files with 56 additions and 2 deletions
|
@ -1,10 +1,14 @@
|
||||||
# encoding: utf-8
|
# encoding: utf-8
|
||||||
class Admin::OrdergroupsController < Admin::BaseController
|
class Admin::OrdergroupsController < Admin::BaseController
|
||||||
inherit_resources
|
inherit_resources
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@ordergroups = Ordergroup.undeleted.order('name ASC')
|
@ordergroups = Ordergroup.undeleted.order('name ASC')
|
||||||
|
|
||||||
|
if request.format.csv?
|
||||||
|
send_data OrdergroupsCsv.new(@ordergroups).to_csv, filename: 'ordergroups.csv', type: 'text/csv'
|
||||||
|
end
|
||||||
|
|
||||||
# if somebody uses the search field:
|
# if somebody uses the search field:
|
||||||
unless params[:query].blank?
|
unless params[:query].blank?
|
||||||
@ordergroups = @ordergroups.where('name LIKE ?', "%#{params[:query]}%")
|
@ordergroups = @ordergroups.where('name LIKE ?', "%#{params[:query]}%")
|
||||||
|
|
|
@ -39,6 +39,12 @@ class Ordergroup < Group
|
||||||
.group('groups.id')
|
.group('groups.id')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.custom_fields
|
||||||
|
fields = FoodsoftConfig[:custom_fields] && FoodsoftConfig[:custom_fields][:ordergroup]
|
||||||
|
return [] unless fields
|
||||||
|
fields.map(&:deep_symbolize_keys)
|
||||||
|
end
|
||||||
|
|
||||||
def last_user_activity
|
def last_user_activity
|
||||||
last_active_user = users.order('users.last_activity DESC').first
|
last_active_user = users.order('users.last_activity DESC').first
|
||||||
if last_active_user
|
if last_active_user
|
||||||
|
|
|
@ -2,6 +2,9 @@
|
||||||
|
|
||||||
- content_for :actionbar do
|
- content_for :actionbar do
|
||||||
= link_to t('.new_ordergroup'), new_admin_ordergroup_path, class: 'btn btn-primary'
|
= link_to t('.new_ordergroup'), new_admin_ordergroup_path, class: 'btn btn-primary'
|
||||||
|
= link_to url_for(search: params[:q], format: :csv), class: 'btn' do
|
||||||
|
= glyph :download
|
||||||
|
CSV
|
||||||
|
|
||||||
- content_for :sidebar do
|
- content_for :sidebar do
|
||||||
%p= t('.first_paragraph', url: link_to(t('.new_ordergroups'), new_admin_ordergroup_path)).html_safe
|
%p= t('.first_paragraph', url: link_to(t('.new_ordergroups'), new_admin_ordergroup_path)).html_safe
|
||||||
|
@ -12,4 +15,4 @@
|
||||||
= text_field_tag :query, params[:query], class: 'input-medium search-query',
|
= text_field_tag :query, params[:query], class: 'input-medium search-query',
|
||||||
placeholder: t('admin.search_placeholder')
|
placeholder: t('admin.search_placeholder')
|
||||||
#ordergroups
|
#ordergroups
|
||||||
= render "ordergroups"
|
= render "ordergroups"
|
||||||
|
|
41
lib/ordergroups_csv.rb
Normal file
41
lib/ordergroups_csv.rb
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
class OrdergroupsCsv < RenderCSV
|
||||||
|
include ApplicationHelper
|
||||||
|
|
||||||
|
def header
|
||||||
|
row = [
|
||||||
|
Ordergroup.human_attribute_name(:id),
|
||||||
|
Ordergroup.human_attribute_name(:name),
|
||||||
|
Ordergroup.human_attribute_name(:description),
|
||||||
|
Ordergroup.human_attribute_name(:account_balance),
|
||||||
|
Ordergroup.human_attribute_name(:created_on),
|
||||||
|
Ordergroup.human_attribute_name(:contact_person),
|
||||||
|
Ordergroup.human_attribute_name(:contact_phone),
|
||||||
|
Ordergroup.human_attribute_name(:contact_address),
|
||||||
|
Ordergroup.human_attribute_name(:break_start),
|
||||||
|
Ordergroup.human_attribute_name(:break_end),
|
||||||
|
Ordergroup.human_attribute_name(:last_user_activity),
|
||||||
|
Ordergroup.human_attribute_name(:last_order),
|
||||||
|
]
|
||||||
|
row + Ordergroup.custom_fields.map { |f| f[:label] }
|
||||||
|
end
|
||||||
|
|
||||||
|
def data
|
||||||
|
@object.each do |o|
|
||||||
|
row = [
|
||||||
|
o.id,
|
||||||
|
o.name,
|
||||||
|
o.description,
|
||||||
|
o.account_balance,
|
||||||
|
o.created_on,
|
||||||
|
o.contact_person,
|
||||||
|
o.contact_phone,
|
||||||
|
o.contact_address,
|
||||||
|
o.break_start,
|
||||||
|
o.break_end,
|
||||||
|
o.last_user_activity,
|
||||||
|
o.last_order.try(:starts),
|
||||||
|
]
|
||||||
|
yield row + Ordergroup.custom_fields.map { |f| o.settings.custom_fields[f[:name]] }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue