class ShopifyDashboardPlus::TrafficReport

Public Instance Methods

number_of_referrals() click to toggle source
# File lib/shopify_dashboard_plus/traffic_report.rb, line 11
def number_of_referrals
  referring_sites = Hash.new(0)
  referring_pages = Hash.new(0)

  @orders.each do |order|
    if order.attributes['referring_site'].empty?
      referring_pages['None'] += 1
      referring_sites['None'] += 1
    else
      host = get_host(order.referring_site)
      page = strip_protocol(order.referring_site)
      referring_pages[page] += 1
      referring_sites[host] += 1
    end
  end
  
  {
    :referral_sites    => referring_sites.sort.to_h,
    :top_referral_site => max_hash_key_exclude_value(referring_sites, 'none'),
    :referral_pages    => referring_pages.sort.to_h,
    :top_referral_page => max_hash_key_exclude_value(referring_pages, 'none')
  }
end
to_h() click to toggle source
# File lib/shopify_dashboard_plus/traffic_report.rb, line 61
def to_h
  traffic_revenue.merge(number_of_referrals)
end
traffic_revenue() click to toggle source
# File lib/shopify_dashboard_plus/traffic_report.rb, line 35
def traffic_revenue
  revenue_per_referral_page = Hash.new(0.0)
  revenue_per_referral_site = Hash.new(0.0)

  @orders.each do |order|
    order.line_items.each do |item|
      if order.attributes['referring_site'].empty?
        revenue_per_referral_page['None'] = revenue_per_referral_page['None'].plus(item.price)
        revenue_per_referral_site['None'] = revenue_per_referral_site['None'].plus(item.price)
      else
        host = get_host(order.referring_site)
        page = strip_protocol(order.referring_site)
        revenue_per_referral_site[host] = revenue_per_referral_site[host].plus(item.price)
        revenue_per_referral_page[page] = revenue_per_referral_page[page].plus(item.price)
      end
    end
  end
  
  {
    :revenue_per_referral_site => revenue_per_referral_site.sort.to_h,
    :top_referral_site_revenue => max_hash_key_exclude_value(revenue_per_referral_site, 'none'),
    :revenue_per_referral_page => revenue_per_referral_page.sort.to_h,
    :top_referral_page_revenue => max_hash_key_exclude_value(revenue_per_referral_page, 'none')
  }
end