class Admin::DashboardsController < OrbitBackendController #before_filter :set_current_user #before_filter :authenticate_user!, :except => [:index] # before_filter :is_admin? layout "basic_back_end" def index @module_app_contents, @module_app_contents_total = get_module_app_count('bulletin', 'page_context', 'web_link') @recent_updated = get_recently_updated('bulletin', 'page_context', 'web_link') @most_visited = get_most_visited('bulletin', 'page_context') end def reload_all_content @module_app_contents, @module_app_contents_total = get_module_app_count('bulletin', 'page_context', 'web_link') respond_to do |format| format.js { render 'reload', locals: {div_id: 'all_content'} } end end def reload_most_visited @most_visited = get_most_visited('bulletin', 'page_context') respond_to do |format| format.js { render 'reload', locals: {div_id: 'most_visited'} } end end def reload_recent_update @recent_updated = get_recently_updated('bulletin', 'page_context', 'web_link') respond_to do |format| format.js { render 'reload', locals: {div_id: 'recent_update'} } end end protected def get_module_app_count(*args) a = {} total = 0 args.each do |module_app| module_app_class = module_app.classify.constantize count = module_app_class.count a.merge!(module_app => count) total += count end [Kaminari.paginate_array(a.sort {|a,b| b[1]<=>a[1]}).page(params[:page]).per(5), total] end def get_recently_updated(*args) a = {} args.each do |module_app| module_app_class = module_app.classify.constantize objects = module_app_class.order_by(:updated_at, :desc).limit(20) objects.each do |object| a.merge!(object => object.updated_at) unless (object.archived rescue nil) end end sorted_objects = a.sort {|a,b| b[1]<=>a[1]} sorted_objects[0..19] Kaminari.paginate_array(sorted_objects).page(params[:page]).per(5) end def get_most_visited(*args) a = {} args.each do |module_app| module_app_class = module_app.classify.constantize objects = module_app_class.order_by(:view_count, :desc).limit(20) objects.each do |object| a.merge!(object => object.view_count) if object.view_count > 0 && (!object.archived rescue true) end end sorted_objects = a.sort {|a,b| b[1]<=>a[1]} sorted_objects[0..19] Kaminari.paginate_array(sorted_objects).page(params[:page]).per(5) end end