46 lines
1.2 KiB
Ruby
46 lines
1.2 KiB
Ruby
class Api::V1::Accounts::CampaignsController < Api::V1::Accounts::BaseController
|
|
before_action :campaign, except: [:index, :create]
|
|
before_action :check_authorization
|
|
|
|
def index
|
|
@campaigns = Current.account.campaigns
|
|
end
|
|
|
|
def show; end
|
|
|
|
def create
|
|
@campaign = Current.account.campaigns.create!(campaign_params)
|
|
end
|
|
|
|
def update
|
|
@campaign.update!(campaign_params)
|
|
end
|
|
|
|
def destroy
|
|
@campaign.destroy!
|
|
head :ok
|
|
end
|
|
|
|
def analytics_metrics; end
|
|
|
|
def analytics_contacts
|
|
campaign_messages = @campaign.campaign_messages.includes(:contact)
|
|
campaign_messages = campaign_messages.by_status(params[:status]) if params[:status].present?
|
|
|
|
page = params[:page] || 1
|
|
per_page = params[:per_page] || 25
|
|
@paginated_messages = campaign_messages.page(page).per(per_page)
|
|
end
|
|
|
|
private
|
|
|
|
def campaign
|
|
@campaign ||= Current.account.campaigns.find_by(display_id: params[:id])
|
|
end
|
|
|
|
def campaign_params
|
|
params.require(:campaign).permit(:title, :description, :message, :enabled, :trigger_only_during_business_hours, :inbox_id, :sender_id,
|
|
:scheduled_at, audience: [:type, :id], trigger_rules: {}, template_params: {})
|
|
end
|
|
end
|