Skip to content

Instantly share code, notes, and snippets.

@crova
Created December 13, 2017 11:40
Show Gist options
  • Save crova/80446895601dee3730fadaa160cb2be5 to your computer and use it in GitHub Desktop.
Save crova/80446895601dee3730fadaa160cb2be5 to your computer and use it in GitHub Desktop.
Why this works for one Model (SibTransac) and don't work for the other (DbCampaign)?!
def update
def db_campaign
@db_campaign = DbCampaign.find_by_id(params[:id])
end
respond_to do |format|
@db_campaign = DbCampaign.find_by_id(params[:id])
if @db_campaign.update(db_campaign_params)
format.html { redirect_to @db_campaign, notice: 'Campaign was successfully updated.' }
format.json { render :show, status: :ok, location: @db_campaign }
calculate_kpi
else
format.html { render :edit }
format.json { render json: @db_campaign.errors, status: :unprocessable_entity }
end
end
end
# Calculate the KPIs for a single campaign beign edited
def calculate_kpi
@db_campaign = DbCampaign.find_by_id(params[:id])
turnover = (@db_campaign.payout.to_f * @db_campaign.result.to_f)
cost = (@db_campaign.sent.to_f * @db_campaign.cpm.to_f) / 1000
@db_campaign.update_column(:turnover, turnover)
@db_campaign.update_column(:cost, cost)
margin = @db_campaign.turnover.to_f - @db_campaign.cost.to_f
ecpm = (@db_campaign.turnover.to_f / @db_campaign.sent.to_f) * 1000
orate = (@db_campaign.unique_views.to_f / @db_campaign.sent.to_f) * 100
crate = (@db_campaign.clicker.to_f / @db_campaign.sent.to_f) * 100
@db_campaign.update_column(:margin, margin)
@db_campaign.update_column(:ecpm, ecpm)
@db_campaign.update_column(:orate, orate)
@db_campaign.update_column(:crate, crate)
end
def update
def single_day_transac
@single_day_transac = SibTransac.find_by_id(params[:id])
end
respond_to do |format|
if @sib_transac.update(sib_transac_params)
format.html { redirect_to @sib_transac, notice: 'Sib transac was successfully updated.' }
format.json { render :show, status: :ok, location: @sib_transac }
calculate_kpi
else
format.html { render :edit }
format.json { render json: @sib_transac.errors, status: :unprocessable_entity }
end
end
end
# Calculate the KPIs for a single day beign edited
def calculate_kpi
@single_day_transac = SibTransac.find_by_id(params[:id])
turnover = (@single_day_transac.payout.to_f * @single_day_transac.result.to_f)
cost = (@single_day_transac.requests.to_f * @single_day_transac.cpm.to_f) / 1000
@single_day_transac.update_column(:turnover, turnover)
@single_day_transac.update_column(:cost, cost)
margin = (@single_day_transac.turnover.to_f - @single_day_transac.cost.to_f)
ecpm = (@single_day_transac.turnover.to_f / @single_day_transac.requests.to_f) * 1000
orate = (@single_day_transac.unique_opens.to_f / @single_day_transac.requests.to_f) * 100
crate = (@single_day_transac.unique_clicks.to_f / @single_day_transac.requests.to_f) * 100
@single_day_transac.update_column(:margin, margin)
@single_day_transac.update_column(:ecpm, ecpm)
@single_day_transac.update_column(:orate, orate)
@single_day_transac.update_column(:crate, crate)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment