Class: Spree::ProductViewsToPurchasesReport
- Defined in:
- app/reports/spree/product_views_to_purchases_report.rb
Defined Under Namespace
Classes: Result
Constant Summary collapse
- DEFAULT_SORTABLE_ATTRIBUTE =
:product_name
- HEADERS =
{ product_name: :string, views: :integer, purchases: :integer, purchase_to_view_ratio: :integer }
- SEARCH_ATTRIBUTES =
{ start_date: :product_view_from, end_date: :product_view_till }
- SORTABLE_ATTRIBUTES =
[:product_name, :views, :purchases]
Constants inherited from Report
Instance Attribute Summary
Attributes inherited from Report
#current_page, #paginate, #records_per_page, #reporting_period, #search, #sortable_attribute, #sortable_type, #total_records
Instance Method Summary collapse
Methods inherited from Report
#active_record_sort, deeplink, #deeplink_properties, #generate, #get_results, #header_sorted?, #initialize, #name, #paginated?, #pagination_required?, #set_sortable_attributes, #time_scale_columns, #time_scale_columns_to_s, #time_scale_selects, #total_pages
Constructor Details
This class inherits a constructor from Spree::Report
Instance Method Details
#report_query ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'app/reports/spree/product_views_to_purchases_report.rb', line 20 def report_query page_events_ar = Arel::Table.new(:spree_page_events) purchase_line_items_ar = Arel::Table.new(:purchase_line_items) Spree::Report::QueryFragments.from_subquery(purchase_line_items, as: :purchase_line_items) .join(page_events_ar) .on(page_events_ar[:target_id].eq(purchase_line_items_ar[:product_id])) .where(page_events_ar[:target_type].eq(Arel::Nodes::Quoted.new('Spree::Product'))) .where(page_events_ar[:activity].eq(Arel::Nodes::Quoted.new('view'))) .group(purchase_line_items_ar[:product_id], purchase_line_items_ar[:product_name], purchase_line_items_ar[:product_slug], purchase_line_items_ar[:purchases]) .project( 'product_name', 'product_slug', 'COUNT(*) as views', 'purchases' ) end |