Class: Readiness::SupportSuperFormProcessor::GlobalIRSMSubscriptionsNFR

Inherits:
Client
  • Object
show all
Defined in:
lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_nfr.rb

Overview

Defines the class GlobalIRSMSubscriptionsNFR within the module Zendesk.

Author:

  • Jason Colyer

Since:

  • 1.0.42

Class Method Summary collapse

Methods inherited from Client

auth_error, bad_request_error, convert_actions, convert_conditions, convert_standard_names_to_ids, convert_ticket_form_agent_conditions, convert_ticket_form_brands, convert_ticket_form_end_user_conditions, convert_ticket_form_names_to_ids, convert_view_names_to_ids, convert_view_restrictions, covert_ticket_form_field_ids, create_package!, erb_renderer, handle_request_error, not_found_error, not_processible_error, put_into_archive, recursively_deflate_directory, timestamp_filename, to_clean_json, to_clean_json_with_key, to_hash, to_nearly_clean_json, to_nearly_clean_json_with_key, to_param_string, write_entries

Class Method Details

.bodyString

Returns the ticket body

Returns:

  • (String)

Author:

  • Jason Colyer

Since:

  • 1.0.42



191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
# File 'lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_nfr.rb', line 191

def self.body
  <<~STRING
    <p>
      Greetings,
    </p>
    <p>
      A request has been filed for Self-managed NFR license request.
    </p>
    <p>
      Please note that this is an <b>INTERNAL</b> ticket and should <b>NEVER</b> be shared with anyone. Please do not CC, BCC, forward, or anything else that can send the information from this ticket. <b>NEVER</b> add <i>anyone</i> outside of GitLab to this ticket or communications stemming from this ticket.
    </p>
    <p>
      The information for this is as follows:
    </p>
    <ul>
      <li>Contact's name: #{contact_name}</li>
      <li>
      Contact's email: #{contact_email}
        <a href="https://www.zuora.com/platform/apps/search?searchTerm=#{contact_email}" target='_blank'>(Zuora Search)</a>
        <a href="https://customers.gitlab.com/admin/customer?model_name=customer&query=#{contact_email}" target='_blank'>(Portal Search)</a>
      </li>
      <li>Contact's company: #{company}</li>
      <li>#{Readiness::SupportSuperFormProcessor::Shared.()}</li>
      <li>License end date: #{license_end_date}</li>
      <li>User count: #{current}</li>
      <li>Plan: #{plan}</li>
      <li>Trial: Yes</li>
    </ul>
    <p>
      Some additional context for this request is:
    </p>
    <pre>
      #{context}
    </pre>
    <p>
      You can find the workflow for this ticket
      <a href='https://handbook.gitlab.com/handbook/support/license-and-renewals/workflows/self-managed/generating_nfr_licenses/' target='_blank'>here</a>
    </p>
  STRING
end

.companyObject

Sets the global variable company

Author:

  • Jason Colyer

Since:

  • 1.0.42



145
146
147
# File 'lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_nfr.rb', line 145

def self.company
  @company ||= ENV.fetch('COMPANY')
end

.contact_emailObject

Sets the global variable contact_email

Author:

  • Jason Colyer

Since:

  • 1.0.42



136
137
138
# File 'lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_nfr.rb', line 136

def self.contact_email
  @contact_email ||= ENV.fetch('CONTACT_EMAIL')
end

.contact_nameObject

Sets the global variable contact_name

Author:

  • Jason Colyer

Since:

  • 1.0.42



127
128
129
# File 'lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_nfr.rb', line 127

def self.contact_name
  @contact_name ||= ENV.fetch('CONTACT_NAME')
end

.contextObject

Sets the global variable context

Author:

  • Jason Colyer

Since:

  • 1.0.42



118
119
120
# File 'lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_nfr.rb', line 118

def self.context
  @context ||= ENV.fetch('LNR_OTHER_CONTEXT')
end

.currentObject

Sets the global variable current

Author:

  • Jason Colyer

Since:

  • 1.0.42



163
164
165
# File 'lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_nfr.rb', line 163

def self.current
  @current ||= ENV.fetch('SEAT_COUNT')
end

.license_end_dateObject

Sets the global variable license_end_date

Author:

  • Jason Colyer

Since:

  • 1.0.42



154
155
156
# File 'lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_nfr.rb', line 154

def self.license_end_date
  @license_end_date ||= ENV.fetch('EXPIRATION_DATE')
end

.planObject

Sets the global variable plan

Author:

  • Jason Colyer

Since:

  • 1.0.42



181
182
183
# File 'lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_nfr.rb', line 181

def self.plan
  @plan ||= ENV.fetch('SM_PLAN')
end

.process!(gitlab_client, gitlab_admin_client, zendesk_client) ⇒ Object

Process a Global Internal Request Self-Managed Subscriptions NFR request

Author:

  • Jason Colyer

Since:

  • 1.0.42



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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_nfr.rb', line 18

def self.process!(gitlab_client, gitlab_admin_client, zendesk_client)
  @gitlab_client = gitlab_client
  @gitlab_admin_client = gitlab_admin_client
  @zendesk_client = zendesk_client
  @ticket_forms = Readiness::Zendesk::TicketForms.list(@zendesk_client)
  @ticket_fields = Readiness::Zendesk::TicketFields.list(@zendesk_client)
  @lnr_form = Readiness::Zendesk::TicketForms.find_by_name(@zendesk_client, 'L&R', @ticket_forms)
  @area_of_focus_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'Area of Focus', @ticket_fields)
  @ticket_stage_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'Ticket Stage', @ticket_fields)
  @prfs_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'Preferred Region for Support', @ticket_fields)
  @plan_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'GitLab Plan', @ticket_fields)
  @sales_name_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'Sales contact name', @ticket_fields)
  @sales_email_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'Sales contact email', @ticket_fields)
  @severity_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'Customer Severity (maps to priority, do not change)', @ticket_fields)
  @arr_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'Ticket ARR', @ticket_fields)
  @priority_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'Customer Priority', @ticket_fields)
  @ir_category_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'IR Category', @ticket_fields)
  @ir_submitter_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'IR Submitter', @ticket_fields)
  @channel_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'Channel (Received at email)', @ticket_fields)
  search = Readiness::Zendesk::Users.find_many(@zendesk_client, [379855863520, 12816218763676])
  end_user = search.detect { |s| s.email == 'gitlab_support@example.com' }        
  requester
  zd_user
  unless zd_user.tags.include? 'partner_support_agent'
    Readiness::SupportSuperFormProcessor::Shared.not_partner_support_member(requester_email)
  end
  if current.to_i > 25 || Date.parse(license_end_date) > (Date.today + 1.years)
    Readiness::SupportSuperFormProcessor::Shared.invalid_nfr_request(requester_email)
  end
  ticket = Readiness::Zendesk::Tickets.new
  ticket.email_ccs = [
    { user_id: zd_user.id }
  ]
  ticket.requester_id = end_user.id
  ticket.submitter_id = end_user.id
  ticket.comment = { html_body: body }
  ticket.subject = 'Internal Request - SM - NFR license request'
  ticket.tags = %w[lnr_internal_request lnr_valid_request lnr_sm_license lnr_sm_nfr]
  ticket.priority = request_priority
  ticket.status = 'new'
  ticket.ticket_form_id = @lnr_form.id
  ticket.custom_fields = [
    { id: @area_of_focus_field.id, value: 'aof_lnr' },
    { id: @ticket_stage_field.id, value: 'stage-frt' },
    { id: @prfs_field.id, value: 'all_regions' },
    { id: @plan_field.id, value: 'free_plan' },
    { id: @sales_name_field.id, value: zd_user.name },
    { id: @sales_email_field.id, value: zd_user.email },
    { id: @severity_field.id, value: 'sev3' },
    { id: @arr_field.id, value: '0' },
    { id: @priority_field.id, value: 'medium' },
    { id: @ir_category_field.id, value: 'ir_sm_nfr' },
    { id: @ir_submitter_field.id, value: zd_user.email },
    { id: @channel_field.id, value: 'created_by_agent' }          
  ]
  create = Readiness::Zendesk::Tickets.create!(@zendesk_client, ticket)
  puts "Ticket created: #{create.id}"
end

.request_priorityObject

Sets the global variable request_priority

Author:

  • Jason Colyer

Since:

  • 1.0.42



109
110
111
# File 'lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_nfr.rb', line 109

def self.request_priority
  @request_priority ||= ENV.fetch('PRIORITY')
end

.requesterObject

Sets the global variable requester

Author:

  • Jason Colyer

Since:

  • 1.0.42



82
83
84
# File 'lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_nfr.rb', line 82

def self.requester
  @requester ||= Readiness::SupportSuperFormProcessor::Shared.gitlab_user_check(@gitlab_admin_client, requester_email)
end

.requester_emailObject

Sets the global variable requester_email

Author:

  • Jason Colyer

Since:

  • 1.0.42



100
101
102
# File 'lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_nfr.rb', line 100

def self.requester_email
  @requester_email ||= ENV.fetch('REQUESTER_EMAIL')
end

Sets the global variable sfdc_account_link

Author:

  • Jason Colyer

Since:

  • 1.0.42



172
173
174
# File 'lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_nfr.rb', line 172

def self.
  @sfdc_account_link ||= ENV.fetch('SFDC_ACCOUNT')
end

.zd_userObject

Sets the global variable zd_user

Author:

  • Jason Colyer

Since:

  • 1.0.42



91
92
93
# File 'lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_nfr.rb', line 91

def self.zd_user
  @zd_user ||= Readiness::SupportSuperFormProcessor::Shared.zendesk_user_check(@zendesk_client, requester_email)
end