debian-mirror-gitlab/app/controllers/groups/email_campaigns_controller.rb

70 lines
1.9 KiB
Ruby
Raw Normal View History

2021-03-11 19:13:27 +05:30
# frozen_string_literal: true
class Groups::EmailCampaignsController < Groups::ApplicationController
EMAIL_CAMPAIGNS_SCHEMA_URL = 'iglu:com.gitlab/email_campaigns/jsonschema/1-0-0'
2023-04-23 21:23:45 +05:30
feature_category :experimentation_activation
2022-07-23 23:45:48 +05:30
urgency :low
2021-03-11 19:13:27 +05:30
before_action :check_params
def index
track_click
redirect_to redirect_link
end
private
def track_click
2021-04-29 21:17:54 +05:30
if Gitlab.com?
2021-09-04 01:27:46 +05:30
message = Gitlab::Email::Message::InProductMarketing.for(@track).new(group: group, user: current_user, series: @series)
2021-06-08 01:23:25 +05:30
2021-04-29 21:17:54 +05:30
data = {
namespace_id: group.id,
track: @track.to_s,
series: @series,
2021-06-08 01:23:25 +05:30
subject_line: message.subject_line
2021-04-29 21:17:54 +05:30
}
context = SnowplowTracker::SelfDescribingJson.new(EMAIL_CAMPAIGNS_SCHEMA_URL, data)
2021-09-04 01:27:46 +05:30
::Gitlab::Tracking.event(self.class.name, 'click', context: [context], user: current_user, namespace: group)
2021-04-29 21:17:54 +05:30
else
::Users::InProductMarketingEmail.save_cta_click(current_user, @track, @series)
end
2021-03-11 19:13:27 +05:30
end
def redirect_link
case @track
when :create
create_track_url
when :verify
project_pipelines_url(group.projects.first)
2021-10-27 15:23:28 +05:30
when :trial, :trial_short
2021-03-11 19:13:27 +05:30
'https://about.gitlab.com/free-trial/'
2022-06-21 17:19:12 +05:30
when :team, :team_short
2021-03-11 19:13:27 +05:30
group_group_members_url(group)
2021-10-27 15:23:28 +05:30
when :admin_verify
2023-04-23 21:23:45 +05:30
project_settings_ci_cd_path(group.projects.first, anchor: 'js-runners-settings')
2021-03-11 19:13:27 +05:30
end
end
def create_track_url
[
new_project_url,
new_project_url(anchor: 'import_project'),
help_page_url('user/project/repository/repository_mirroring')
][@series]
end
def check_params
@track = params[:track]&.to_sym
@series = params[:series]&.to_i
track_valid = @track.in?(Namespaces::InProductMarketingEmailsService::TRACKS.keys)
2021-09-04 01:27:46 +05:30
return render_404 unless track_valid
2021-03-11 19:13:27 +05:30
2021-09-04 01:27:46 +05:30
series_valid = @series.in?(0..Namespaces::InProductMarketingEmailsService::TRACKS[@track][:interval_days].size - 1)
render_404 unless series_valid
2021-03-11 19:13:27 +05:30
end
end