Skip to content

Instantly share code, notes, and snippets.

@maier-stefan
Created August 7, 2015 18:02
Show Gist options
  • Save maier-stefan/197e3b653e198f0c3bcb to your computer and use it in GitHub Desktop.
Save maier-stefan/197e3b653e198f0c3bcb to your computer and use it in GitHub Desktop.
Issue with datatable
class CampaignOfferIspReportDatatable < AjaxDatatablesRails::Base
def sortable_columns
# Declare strings in this format: ModelName.column_name
@sortable_columns ||= [
'Offer.name',
'Campaign.name',
'Carrier.name',
'visits',
'clicks',
'conversions',
'revenue',
'cost',
'profit',
'roi',
]
end
def searchable_columns
# Declare strings in this format: ModelName.column_name
@searchable_columns ||= [
'Offer.name',
'Campaign.name',
'Carrier.name',
]
end
private
def data
records.decorate.map do |record|
[
record.o_name,
record.c_name,
record.isp_name,
record.visits,
record.clicks,
record.conversions,
record.format_revenue,
record.format_cost,
record.format_profit,
record.format_roi,
record.format_cpv,
record.format_epv,
record.detail_link
]
end
end
def get_raw_records
daterange = Calculation.get_start_and_end_time(options[:daterange])
CampaignOfferIspReport.joins(campaign_offer: [:offer, :campaign]).joins(:carrier)
.where('offers.active = ?', true)
.where("start_time >= '#{daterange[:start_time]}'")
.where("end_time <= '#{daterange[:end_time]}'")
.having('sum(`campaign_offer_isp_reports`.`visits`) > ?',options[:min_visits].to_i)
.group(:campaign_offer_id, :carrier_id)
.select("carriers.name as isp_name","campaigns.name as c_name", "offers.name as o_name", :campaign_offer_id, :carrier_id, "sum(`campaign_offer_isp_reports`.`clicks`) as clicks","sum(`campaign_offer_isp_reports`.`cost`) as cost","sum(`campaign_offer_isp_reports`.`revenue`) as revenue", "sum(`campaign_offer_isp_reports`.`profit`) as profit", "sum(`campaign_offer_isp_reports`.`conversions`) as conversions", "sum(`campaign_offer_isp_reports`.`visits`) as visits" ,"MIN(`campaign_offer_isp_reports`.`start_time`) as start_time", "MAX(`campaign_offer_isp_reports`.`end_time`) as end_time")
.select("(((sum(`campaign_offer_isp_reports`.`revenue`) - sum(`campaign_offer_isp_reports`.`cost`)) / sum(`campaign_offer_isp_reports`.`cost`) ) * 100) as roi")
.select("(sum(`campaign_offer_isp_reports`.`cost`) / sum(`campaign_offer_isp_reports`.`visits`)) as cpv")
.select("(sum(`campaign_offer_isp_reports`.`cost`) / sum(`campaign_offer_isp_reports`.`clicks`)) as cpc")
.select("(sum(`campaign_offer_isp_reports`.`revenue`) / sum(`campaign_offer_isp_reports`.`visits`)) as epv")
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment