Sha256: ec0a7fda7367f78af931b40aa79e3092844b2e30f2686d42c3f7bdc4c47565d4

Contents?: true

Size: 1.47 KB

Versions: 1

Compression:

Stored size: 1.47 KB

Contents

module ErpApp
  module Desktop
    module SecurityManagement
      class BaseController < ::ErpApp::Desktop::BaseController

        # used for related_searchbox
        def search
          if params[:model].blank? or (params[:displayField].blank? and params[:search_fields].blank?)
            render :inline => '[]'
          else
            related_model = params[:model].camelize.constantize
            query = related_model

            unless params[:search_fields].blank?
              #related_searchbox
              search_fields = params[:search_fields].split(',')
              unless params[:query].blank?
                sql = ''
                search_fields.each_with_index do |f, i|
                  sql += " OR " if i > 0
                  sql += "UPPER(#{f}) LIKE UPPER('%#{params[:query]}%')"
                end
                query = query.where(sql)
              end
              query = query.paginate(:page => page, :per_page => per_page)
            end

            total = query.count
            data = query.all
            render :inline => {:data => data, :total => total}.to_json
          end
        end

        protected
        def page
          offset = params[:start].to_f
          offset > 0 ? (offset / params[:limit].to_f).to_i + 1 : 1
        end

        def per_page
          params[:limit].nil? ? 10 : params[:limit].to_i
        end

      end
    end #SecurityManagement
  end #Desktop
end #ErpApp

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
erp_app-4.0.0 app/controllers/erp_app/desktop/security_management/base_controller.rb