Class: Readiness::SupportSuperFormProcessor::GlobalIROrderManagement

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

Overview

Defines the class GlobalIROrderManagement 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



242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
# File 'lib/support_readiness/support_super_form_processor/global_ir_order_management.rb', line 242

def self.body
  <<~STRING
    <p>
      Greetings,
    </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>
      A request has been filed for Order Management.
    </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.sfdc_opportunity_string(opp_link)}</li>
      <li>#{Readiness::SupportSuperFormProcessor::Shared.()}</li>
      <li>Subscription name: #{sub_name}</li>
      <li>Subscription ID: #{sub_id}</li>
      <li>Start date: #{start_date}</li>
      <li>End date: #{end_date}</li>
      <li>User count: #{current}</li>
      <li>Previous user count: #{previous}</li>
      <li>True-up count: #{trueup}</li>
      <li>Plan: #{plan}</li>
    </ul>
    <p>
      Some additional context for this request is:
    </p>
    <pre>
      #{context}
    </pre>
  STRING
end

.companyObject

Sets the global variable company

Author:

  • Jason Colyer

Since:

  • 1.0.42



142
143
144
# File 'lib/support_readiness/support_super_form_processor/global_ir_order_management.rb', line 142

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

.contact_emailObject

Sets the global variable contact_email

Author:

  • Jason Colyer

Since:

  • 1.0.42



133
134
135
# File 'lib/support_readiness/support_super_form_processor/global_ir_order_management.rb', line 133

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



124
125
126
# File 'lib/support_readiness/support_super_form_processor/global_ir_order_management.rb', line 124

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

.contextObject

Sets the global variable context

Author:

  • Jason Colyer

Since:

  • 1.0.42



115
116
117
# File 'lib/support_readiness/support_super_form_processor/global_ir_order_management.rb', line 115

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

.currentObject

Sets the global variable current

Author:

  • Jason Colyer

Since:

  • 1.0.42



196
197
198
# File 'lib/support_readiness/support_super_form_processor/global_ir_order_management.rb', line 196

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

.end_dateObject

Sets the global variable end_date

Author:

  • Jason Colyer

Since:

  • 1.0.42



187
188
189
# File 'lib/support_readiness/support_super_form_processor/global_ir_order_management.rb', line 187

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

Sets the global variable opp_link

Author:

  • Jason Colyer

Since:

  • 1.0.42



151
152
153
# File 'lib/support_readiness/support_super_form_processor/global_ir_order_management.rb', line 151

def self.opp_link
  @opp_link ||= ENV.fetch('SFDC_OPPORTUNITY')
end

.planObject

Sets the global variable plan

Author:

  • Jason Colyer

Since:

  • 1.0.42



232
233
234
# File 'lib/support_readiness/support_super_form_processor/global_ir_order_management.rb', line 232

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

.previousObject

Sets the global variable previous

Author:

  • Jason Colyer

Since:

  • 1.0.42



205
206
207
# File 'lib/support_readiness/support_super_form_processor/global_ir_order_management.rb', line 205

def self.previous
  @previous ||= ENV.fetch('PREVIOUS_COUNT')
end

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

Process a Global Internal Request OEM License 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
# File 'lib/support_readiness/support_super_form_processor/global_ir_order_management.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? 'order_management_team'
    Readiness::SupportSuperFormProcessor::Shared.not_order_management_member(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 - Order Management'
  ticket.tags = %w[lnr_internal_request lnr_valid_request lnr_order_management]
  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_order_management' },
    { 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



106
107
108
# File 'lib/support_readiness/support_super_form_processor/global_ir_order_management.rb', line 106

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

.requesterObject

Sets the global variable requester

Author:

  • Jason Colyer

Since:

  • 1.0.42



79
80
81
# File 'lib/support_readiness/support_super_form_processor/global_ir_order_management.rb', line 79

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



97
98
99
# File 'lib/support_readiness/support_super_form_processor/global_ir_order_management.rb', line 97

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



223
224
225
# File 'lib/support_readiness/support_super_form_processor/global_ir_order_management.rb', line 223

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

.start_dateObject

Sets the global variable start_date

Author:

  • Jason Colyer

Since:

  • 1.0.42



178
179
180
# File 'lib/support_readiness/support_super_form_processor/global_ir_order_management.rb', line 178

def self.start_date
  @start_date ||= ENV.fetch('START_DATE')
end

.sub_idObject

Sets the global variable sub_id

Author:

  • Jason Colyer

Since:

  • 1.0.42



169
170
171
# File 'lib/support_readiness/support_super_form_processor/global_ir_order_management.rb', line 169

def self.sub_id
  @sub_id ||= ENV.fetch('ZUORA_SUB_ID')
end

.sub_nameObject

Sets the global variable sub_name

Author:

  • Jason Colyer

Since:

  • 1.0.42



160
161
162
# File 'lib/support_readiness/support_super_form_processor/global_ir_order_management.rb', line 160

def self.sub_name
  @sub_name ||= ENV.fetch('SUB_NAME')
end

.trueupObject

Sets the global variable trueup

Author:

  • Jason Colyer

Since:

  • 1.0.42



214
215
216
# File 'lib/support_readiness/support_super_form_processor/global_ir_order_management.rb', line 214

def self.trueup
  @trueup ||= ENV.fetch('TRUEUP_COUNT')
end

.zd_userObject

Sets the global variable zd_user

Author:

  • Jason Colyer

Since:

  • 1.0.42



88
89
90
# File 'lib/support_readiness/support_super_form_processor/global_ir_order_management.rb', line 88

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