class DashboardCounter < Resque::Plugins::RestrictionJob @queue = :high def self.perform(*args) site = Site.first obj = new(*args) site.dashboard_counter[:visitors_this_week] = obj.display_visitors_this_week site.dashboard_counter[:visitors_this_month] = obj.display_visitors_this_month site.dashboard_counter[:visitors_this_year] = obj.display_visitors_this_year site.save OrbitLogger.info "DashboardCounter done #{site.dashboard_counter.to_s}" end def display_visitors(options={}) impressions = Impression.where(options).and(:referrer.ne => nil) impressions.map{|i| i[:session_hash]}.uniq.count end def display_visitors_today display_visitors(created_at: {'$gte' => Date.today.beginning_of_day, '$lte' => Date.today.end_of_day}) end def display_visitors_this_week display_visitors(created_at: {'$gte' => Date.today.beginning_of_week, '$lte' => Date.today.end_of_week}) end def display_visitors_this_month display_visitors(created_at: {'$gte' => Date.today.beginning_of_month, '$lte' => Date.today.end_of_month}) end def display_visitors_this_year display_visitors(created_at: {'$gte' => Date.today.beginning_of_year, '$lte' => Date.today.end_of_year}) end end