module CommLogistics::Base::Controller
  #各種リストの親
  class ListController < LogisticsController
    include CommLogistics::Modules::Print::Controller
    # @control_keysを継承先で設定してください
    def ext_index
      require 'config/site_config.rb'
      ars = get_record_list
      @multiple_id_cols ||= {}
      #opt = {:disp=>{:nil_str=>@disp_name_nil_str,:multiple_id_cols => @multiple_id_cols}}
      opt = HashWithIndifferentAccess.new
      opt[:disp] = {:multiple_id_cols => @multiple_id_cols, :disp_keys => {}, :disp_add_keys=>{}}
      #===============disp_keyの設定ここから
      #jsから送られてくる場合もあるので、そちらを最優先する。
      if !params[:disp_keys].blank? && params[:disp_keys].is_a?(Hash)
        params[:disp_keys].each do |key, hash_value|
          opt[:disp][:disp_keys][key]=hash_value
        end
      end
      #===============disp_keyの設定ここまで
      #jsから送られてくる場合もあるので、そちらを最優先する。
      if !params[:disp_add_keys].blank? && params[:disp_add_keys].is_a?(Hash)
        params[:disp_add_keys].each do |key, hash_value|
          opt[:disp][:disp_add_keys][key]=hash_value.values
        end
      end
      #===============disp_add_keysの設定ここまで
      respond_to do |format|
        format.ext_json do
          cnt = count_all
          opt[:disp][:nil_str] = @disp_name_nil_str || ''
          render :json => ars.ext_hashfy(opt).to_ext_json(@control_keys, cnt)
        end
        format.xls do
          resp = output_xls(ars.ext_hashfy(opt), params)
          resp[:file_name] = @control_keys + resp[:file_name]
          render :json => resp.to_json
        end
      end
    rescue => e
      logger.error(e.message + "\n" + e.backtrace.join("\n"))
      render :json => Comm::Tool::Json.result_json(false, e.message)
    end
    
    def print_sheet
      logger.debug('print_sheet @ list')
      arrange_params(params)
      params[:record_list] = get_record_list
      print_sheet_base
    end
    
    def arrange_params(params)
      if defined?(@pdf_sort_column)
        params[:sort] = @pdf_sort_column
      end
    end
  end
end