OSDN Git Service

CSV処理がテストに通るよう修正
[elecoma/elecoma.git] / app / controllers / admin / totals_controller.rb
1 # -*- coding: utf-8 -*-
2 require 'ostruct'
3 require 'totalizer'
4
5 class Admin::TotalsController < Admin::BaseController
6   before_filter :admin_permission_check_term
7
8   def index
9
10     params[:search] ||= {}
11     [:month, :date_from, :date_to, :sale_start_from, :sale_start_to].each do | key |
12       params[:search][key] = parse_date_select(params[:search], key)
13     end
14     params[:search][:retailer_id] ||= session[:admin_user].retailer_id
15     if !session[:admin_user].master_shop? && params[:search][:retailer_id] != session[:admin_user].retailer_id
16       raise ActiveRecord::RecordNotFound
17     end
18     @search = OpenStruct.new(params[:search])
19     params[:page] ||= 'term'
20     @agent = Totalizer.get_instance(params[:page])
21     if not @agent
22       params[:page] = 'term'
23       @agent = Totalizer.get_instance(params[:page])
24     end
25     @sale_start_enabled = (params[:page] == 'product')
26     params[:type] ||= @agent.default_type
27     @title = @agent.title
28     @list_view = @agent.columns
29     @links = @agent.links
30     @labels = @agent.labels
31     begin
32       @records = @agent.get_records(params)
33     rescue => e
34       logger.error e.message
35       e.backtrace.each{|bt|logger.error(bt)}
36     end
37     @total = @agent.total
38     begin
39       flash[:graph] = @agent.graph
40     rescue =>e
41       logger.error(e.message)
42       e.backtrace.each{|bt|logger.error(bt)}
43     end
44     @selected_retailer = params[:search][:retailer_id].to_i
45   end
46
47   def graph
48     if flash[:graph]
49       send_data flash[:graph], :type => 'image/png', :disposition => 'inline'
50     else
51       head :status => :not_found
52     end
53   end
54
55   def csv
56     totalizer = Object.const_get("#{params[:page]}_totalizer".classify)
57     csv_data, filename = totalizer.csv(params)
58     send_data(csv_data.tosjis, :type => "application/octet-stream; name=#{filename}; charset=shift_jis; header=present",:disposition => 'attachment', :filename => filename)
59   end
60 end
61