Welcome to mirror list, hosted at ThFree Co, Russian Federation.

email_campaigns_controller.rb « groups « controllers « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: cbb0176ea7bd417a51e656a77dbb5f2ab5cc42a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# frozen_string_literal: true

class Groups::EmailCampaignsController < Groups::ApplicationController
  include InProductMarketingHelper
  include Gitlab::Tracking::ControllerConcern

  EMAIL_CAMPAIGNS_SCHEMA_URL = 'iglu:com.gitlab/email_campaigns/jsonschema/1-0-0'

  feature_category :navigation

  before_action :check_params

  def index
    track_click
    redirect_to redirect_link
  end

  private

  def track_click
    data = {
      namespace_id: group.id,
      track: @track,
      series: @series,
      subject_line: subject_line(@track, @series)
    }

    track_self_describing_event(EMAIL_CAMPAIGNS_SCHEMA_URL, data: data)
  end

  def redirect_link
    case @track
    when :create
      create_track_url
    when :verify
      project_pipelines_url(group.projects.first)
    when :trial
      'https://about.gitlab.com/free-trial/'
    when :team
      group_group_members_url(group)
    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)
    series_valid = @series.in?(0..Namespaces::InProductMarketingEmailsService::INTERVAL_DAYS.size - 1)

    render_404 unless track_valid && series_valid
  end
end