gitcoinco/code_fund_ads

View on GitHub
app/controllers/campaign_dailies_controller.rb

Summary

Maintainability
A
1 hr
Test Coverage
class CampaignDailiesController < ApplicationController
  include Campaigns::Stashable

  before_action :authenticate_user!
  before_action :set_campaign

  def index
    @summary = @campaign.summary(@start_date, @end_date)
    daily_summaries = @campaign.daily_summaries_by_day(@start_date, @end_date).unscope(:order)
    @pagy, @daily_summaries = pagy(daily_summaries)

    respond_to do |format|
      format.html
      format.csv do
        send_data(
          @campaign.daily_csv(@start_date, @end_date),
          filename: "campaign-daily-report-#{@campaign.id}-#{@start_date.to_s("yyyymmdd")}-#{@end_date.to_s("yyyymmdd")}.csv"
        )
      end
    end
  end

  private

  def set_campaign
    @campaign = if authorized_user.can_admin_system?
      Campaign.find(params[:campaign_id])
    else
      Current.organization&.campaigns&.find(params[:campaign_id])
    end
  end
end