gitlab_support_readiness 1.0.41 → 1.0.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/lib/support_readiness/mailgun/client.rb +2 -1
  3. data/lib/support_readiness/mailgun/emails.rb +1 -1
  4. data/lib/support_readiness/support_super_form_processor/create_article.rb +375 -0
  5. data/lib/support_readiness/support_super_form_processor/create_macro.rb +183 -0
  6. data/lib/support_readiness/support_super_form_processor/edit_macro.rb +161 -0
  7. data/lib/support_readiness/support_super_form_processor/enable_us_government.rb +236 -0
  8. data/lib/support_readiness/support_super_form_processor/global_ir_dotcom_subscriptions_billing_entity_change.rb +218 -0
  9. data/lib/support_readiness/support_super_form_processor/global_ir_dotcom_subscriptions_extension.rb +238 -0
  10. data/lib/support_readiness/support_super_form_processor/global_ir_dotcom_subscriptions_investigate.rb +238 -0
  11. data/lib/support_readiness/support_super_form_processor/global_ir_dotcom_subscriptions_link.rb +213 -0
  12. data/lib/support_readiness/support_super_form_processor/global_ir_dotcom_subscriptions_nfr.rb +224 -0
  13. data/lib/support_readiness/support_super_form_processor/global_ir_dotcom_subscriptions_reset_seat_qsr.rb +194 -0
  14. data/lib/support_readiness/support_super_form_processor/global_ir_dotcom_trials_edit.rb +198 -0
  15. data/lib/support_readiness/support_super_form_processor/global_ir_dotcom_trials_extension.rb +228 -0
  16. data/lib/support_readiness/support_super_form_processor/global_ir_dotcom_trials_over_plan.rb +219 -0
  17. data/lib/support_readiness/support_super_form_processor/global_ir_hackerone_license.rb +172 -0
  18. data/lib/support_readiness/support_super_form_processor/global_ir_oem_license.rb +241 -0
  19. data/lib/support_readiness/support_super_form_processor/global_ir_order_management.rb +267 -0
  20. data/lib/support_readiness/support_super_form_processor/global_ir_other.rb +137 -0
  21. data/lib/support_readiness/support_super_form_processor/global_ir_provison_failure.rb +179 -0
  22. data/lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_did_not_receive.rb +191 -0
  23. data/lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_multiyear.rb +188 -0
  24. data/lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_nfr.rb +215 -0
  25. data/lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_resend.rb +188 -0
  26. data/lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_scl.rb +194 -0
  27. data/lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_temp.rb +234 -0
  28. data/lib/support_readiness/support_super_form_processor/global_ir_sm_trials_edit.rb +203 -0
  29. data/lib/support_readiness/support_super_form_processor/global_ir_sm_trials_extension.rb +233 -0
  30. data/lib/support_readiness/support_super_form_processor/global_ir_sm_trials_new.rb +223 -0
  31. data/lib/support_readiness/support_super_form_processor/global_ir_wider_community_license.rb +247 -0
  32. data/lib/support_readiness/support_super_form_processor/global_set_collaboration_id.rb +151 -0
  33. data/lib/support_readiness/support_super_form_processor/global_set_org_ase.rb +293 -0
  34. data/lib/support_readiness/support_super_form_processor/global_toggle_escalation.rb +142 -0
  35. data/lib/support_readiness/support_super_form_processor/gratis_support_extension.rb +247 -0
  36. data/lib/support_readiness/support_super_form_processor/gratis_support_former_customer.rb +288 -0
  37. data/lib/support_readiness/support_super_form_processor/gratis_support_migration.rb +238 -0
  38. data/lib/support_readiness/support_super_form_processor/gratis_support_other.rb +221 -0
  39. data/lib/support_readiness/support_super_form_processor/gratis_support_prospect.rb +288 -0
  40. data/lib/support_readiness/support_super_form_processor/gratis_support_upgrade.rb +298 -0
  41. data/lib/support_readiness/support_super_form_processor/namespace_availability.rb +213 -0
  42. data/lib/support_readiness/support_super_form_processor/pd_shadow_modification.rb +189 -0
  43. data/lib/support_readiness/support_super_form_processor/sa_request_for_support.rb +214 -0
  44. data/lib/support_readiness/support_super_form_processor/shared.rb +518 -0
  45. data/lib/support_readiness/support_super_form_processor/team_member_license.rb +144 -0
  46. data/lib/support_readiness/support_super_form_processor/two_fa_exemption.rb +260 -0
  47. data/lib/support_readiness/support_super_form_processor/usgov_ir_order_management.rb +252 -0
  48. data/lib/support_readiness/support_super_form_processor/usgov_ir_other.rb +136 -0
  49. data/lib/support_readiness/support_super_form_processor/usgov_ir_sm_subs_did_not_receive.rb +162 -0
  50. data/lib/support_readiness/support_super_form_processor/usgov_ir_sm_subs_multiyear.rb +159 -0
  51. data/lib/support_readiness/support_super_form_processor/usgov_ir_sm_subs_nfr.rb +196 -0
  52. data/lib/support_readiness/support_super_form_processor/usgov_ir_sm_subs_resend.rb +159 -0
  53. data/lib/support_readiness/support_super_form_processor/usgov_ir_sm_subs_scl.rb +160 -0
  54. data/lib/support_readiness/support_super_form_processor/usgov_ir_sm_subs_temp.rb +219 -0
  55. data/lib/support_readiness/support_super_form_processor/usgov_ir_sm_trials_edit.rb +189 -0
  56. data/lib/support_readiness/support_super_form_processor/usgov_ir_sm_trials_extension.rb +219 -0
  57. data/lib/support_readiness/support_super_form_processor/usgov_ir_sm_trials_new.rb +209 -0
  58. data/lib/support_readiness/support_super_form_processor/usgov_set_collaboration_id.rb +151 -0
  59. data/lib/support_readiness/support_super_form_processor/usgov_set_org_ase.rb +295 -0
  60. data/lib/support_readiness/support_super_form_processor.rb +67 -0
  61. data/lib/support_readiness.rb +1 -0
  62. metadata +59 -2
@@ -0,0 +1,228 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Defines the module Readiness.
4
+ module Readiness
5
+ # Defines the module SupportSuperFormProcessor
6
+ module SupportSuperFormProcessor
7
+ ##
8
+ # Defines the class GlobalIRDotcomTrialsExtension within the module {Readiness::Zendesk}.
9
+ #
10
+ # @author Jason Colyer
11
+ # @since 1.0.42
12
+ class GlobalIRDotcomTrialsExtension < Readiness::Client
13
+ ##
14
+ # Process a Global Internal Request GitLab.com Trials Extension request
15
+ #
16
+ # @author Jason Colyer
17
+ # @since 1.0.42
18
+ def self.process!(gitlab_client, gitlab_admin_client, zendesk_client)
19
+ @gitlab_client = gitlab_client
20
+ @gitlab_admin_client = gitlab_admin_client
21
+ @zendesk_client = zendesk_client
22
+ requester
23
+ zd_user
24
+ unless Readiness::GitLab::Namespaces.exists?(client, namespace_provided)
25
+ Readiness::SupportSuperFormProcessor::Shared.invalid_namespace(requester_email, namespace_provided)
26
+ end
27
+ @namespace = Readiness::GitLab::Namespaces.find!(@gitlab_admin_client, namespace_provided)
28
+ ticket = Readiness::Zendesk::Tickets.new
29
+ ticket.email_cc_ids = [zd_user.id]
30
+ ticket.requester_id = 379855863520
31
+ ticket.submitter_id = 379855863520
32
+ ticket.comment = { html_body: body }
33
+ ticket.subject = 'Internal Request - GitLab.com - Extend an existing trial'
34
+ ticket.tags = %w[lnr_internal_request lnr_valid_request lnr_saas_trial lnr_saas_trial_extension]
35
+ ticket.priority = request_priority
36
+ ticket.status = 'new'
37
+ ticket.ticket_form_id = 360000071293
38
+ ticket.custom_fields = [
39
+ { id: 4414446722578, value: 'ticket_group_not_applicable' },
40
+ { id: 360020614420, value: 'aof_lnr' },
41
+ { id: 360020735259, value: 'stage-frt' },
42
+ { id: 360018253094, value: 'all_regions' },
43
+ { id: 360004394559, value: 'free_plan' },
44
+ { id: 360005183820, value: zd_user.name },
45
+ { id: 360005248219, value: zd_user.email },
46
+ { id: 360020735319, value: 'sev3' },
47
+ { id: 360020288373, value: '0' },
48
+ { id: 360014776453, value: 'medium' },
49
+ { id: 6978426204828, value: 'ir_extend_saas_trial' },
50
+ { id: 6978366086428, value: zd_user.email },
51
+ { id: 45195248, value: 'created_by_agent' }
52
+ ]
53
+ create = Readiness::Zendesk::Tickets.create!(@zendesk_client, ticket)
54
+ puts "Ticket created: https://gitlab.zendesk.com/agent/tickets/#{create.id}"
55
+ end
56
+
57
+ ##
58
+ # Sets the global variable requester
59
+ #
60
+ # @author Jason Colyer
61
+ # @since 1.0.42
62
+ def self.requester
63
+ @requester ||= Readiness::SupportSuperFormProcessor::Shared.gitlab_user_check(@gitlab_admin_client, requester_email)
64
+ end
65
+
66
+ ##
67
+ # Sets the global variable zd_user
68
+ #
69
+ # @author Jason Colyer
70
+ # @since 1.0.42
71
+ def self.zd_user
72
+ @zd_user ||= Readiness::SupportSuperFormProcessor::Shared.zendesk_user_check(@zendesk_client, requester_email)
73
+ end
74
+
75
+ ##
76
+ # Sets the global variable requester_email
77
+ #
78
+ # @author Jason Colyer
79
+ # @since 1.0.42
80
+ def self.requester_email
81
+ @requester_email ||= ENV.fetch('REQUESTER_EMAIL')
82
+ end
83
+
84
+ ##
85
+ # Sets the global variable request_priority
86
+ #
87
+ # @author Jason Colyer
88
+ # @since 1.0.42
89
+ def self.request_priority
90
+ @request_priority ||= ENV.fetch('INTERNAL_REQUEST_GLOBAL_PRIORITY')
91
+ end
92
+
93
+ ##
94
+ # Sets the global variable namespace_provided
95
+ #
96
+ # @author Jason Colyer
97
+ # @since 1.0.42
98
+ def self.namespace_provided
99
+ @namespace_provided ||= ENV.fetch('SAAS_TRIAL_EXTEND_NAMESPACE')
100
+ end
101
+
102
+ ##
103
+ # Sets the global variable context
104
+ #
105
+ # @author Jason Colyer
106
+ # @since 1.0.42
107
+ def self.context
108
+ @context ||= ENV.fetch('INTERNAL_REQUEST_GLOBAL_CONTEXT')
109
+ end
110
+
111
+ ##
112
+ # Sets the global variable contact_name
113
+ #
114
+ # @author Jason Colyer
115
+ # @since 1.0.42
116
+ def self.contact_name
117
+ @contact_name ||= ENV.fetch('INTERNAL_REQUEST_GLOBAL_CONTACT_NAME')
118
+ end
119
+
120
+ ##
121
+ # Sets the global variable contact_email
122
+ #
123
+ # @author Jason Colyer
124
+ # @since 1.0.42
125
+ def self.contact_email
126
+ @contact_email ||= ENV.fetch('INTERNAL_REQUEST_GLOBAL_EMAIL')
127
+ end
128
+
129
+ ##
130
+ # Sets the global variable company
131
+ #
132
+ # @author Jason Colyer
133
+ # @since 1.0.42
134
+ def self.company
135
+ @company ||= ENV.fetch('INTERNAL_REQUEST_GLOBAL_COMPANY_NAME')
136
+ end
137
+
138
+ ##
139
+ # Sets the global variable opp_link
140
+ #
141
+ # @author Jason Colyer
142
+ # @since 1.0.42
143
+ def self.opp_link
144
+ @opp_link ||= ENV.fetch('SAAS_TRIAL_EXTEND_SFDC_OPPORTUNITY')
145
+ end
146
+
147
+ ##
148
+ # Sets the global variable extension_date
149
+ #
150
+ # @author Jason Colyer
151
+ # @since 1.0.42
152
+ def self.extension_date
153
+ @extension_date ||= ENV.fetch('SAAS_TRIAL_EXTEND_EXPIRATION')
154
+ end
155
+
156
+ ##
157
+ # Sets the global variable plan
158
+ #
159
+ # @author Jason Colyer
160
+ # @since 1.0.42
161
+ def self.plan
162
+ @plan ||= ENV.fetch('SAAS_TRIAL_EXTEND_PLAN')
163
+ end
164
+
165
+ ##
166
+ # Sets the global variable sfdc_account_link
167
+ #
168
+ # @author Jason Colyer
169
+ # @since 1.0.42
170
+ def self.sfdc_account_link
171
+ @sfdc_account_link ||= ENV.fetch('SAAS_TRIAL_EXTEND_SFDC_ACCOUNT')
172
+ end
173
+
174
+ ##
175
+ # Sets the global variable reason
176
+ #
177
+ # @author Jason Colyer
178
+ # @since 1.0.42
179
+ def self.reason
180
+ @reason ||= ENV.fetch('SAAS_TRIAL_EXTEND_REASON')
181
+ end
182
+
183
+ ##
184
+ # Returns the ticket body
185
+ #
186
+ # @author Jason Colyer
187
+ # @since 1.0.42
188
+ # @return [String]
189
+ def self.body
190
+ <<~STRING
191
+ <p>
192
+ Greetings,
193
+ </p>
194
+ <p>
195
+ 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.
196
+ </p>
197
+ <p>
198
+ A request has been filed for Extend a gitlab.com trial.
199
+ </p>
200
+ <p>
201
+ The information for this is as follows:
202
+ </p>
203
+ <ul>
204
+ <li>Customer's name: #{contact_name}</li>
205
+ <li>
206
+ Contact's email: #{contact_email}
207
+ <a href="https://www.zuora.com/platform/apps/search?searchTerm=#{contact_email}" target='_blank'>(Zuora Search)</a>
208
+ <a href="https://customers.gitlab.com/admin/customer?model_name=customer&query=#{contact_email}" target='_blank'>(Portal Search)</a>
209
+ </li>
210
+ <li>Customer's company: #{company}</li>
211
+ <li>#{Readiness::SupportSuperFormProcessor::Shared.sfdc_account_string(sfdc_account_link)}</li>
212
+ <li>#{Readiness::SupportSuperFormProcessor::Shared.sfdc_opportunity_string(opp_link)}</li>
213
+ <li>GitLab.com namespace: #{@namespace.path}</li>
214
+ <li>Desired expiration date: #{extension_date}</li>
215
+ <li>Plan: #{plan}</li>
216
+ <li>Reason for extension: #{reason}</li>
217
+ </ul>
218
+ <p>
219
+ Some additional context for this request is:
220
+ </p>
221
+ <pre>
222
+ #{context}
223
+ </pre>
224
+ STRING
225
+ end
226
+ end
227
+ end
228
+ end
@@ -0,0 +1,219 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Defines the module Readiness.
4
+ module Readiness
5
+ # Defines the module SupportSuperFormProcessor
6
+ module SupportSuperFormProcessor
7
+ ##
8
+ # Defines the class GlobalIRDotcomTrialsOverPlan within the module {Readiness::Zendesk}.
9
+ #
10
+ # @author Jason Colyer
11
+ # @since 1.0.42
12
+ class GlobalIRDotcomTrialsOverPlan < Readiness::Client
13
+ ##
14
+ # Process a Global Internal Request GitLab.com Trials Over Plan request
15
+ #
16
+ # @author Jason Colyer
17
+ # @since 1.0.42
18
+ def self.process!(gitlab_client, gitlab_admin_client, zendesk_client)
19
+ @gitlab_client = gitlab_client
20
+ @gitlab_admin_client = gitlab_admin_client
21
+ @zendesk_client = zendesk_client
22
+ requester
23
+ zd_user
24
+ unless Readiness::GitLab::Namespaces.exists?(client, namespace_provided)
25
+ Readiness::SupportSuperFormProcessor::Shared.invalid_namespace(requester_email, namespace_provided)
26
+ end
27
+ @namespace = Readiness::GitLab::Namespaces.find!(@gitlab_admin_client, namespace_provided)
28
+ ticket = Readiness::Zendesk::Tickets.new
29
+ ticket.email_cc_ids = [zd_user.id]
30
+ ticket.requester_id = 379855863520
31
+ ticket.submitter_id = 379855863520
32
+ ticket.comment = { html_body: body }
33
+ ticket.subject = 'Internal Request - GitLab.com - Request trial over plan'
34
+ ticket.tags = %w[lnr_internal_request lnr_valid_request lnr_saas_trial lnr_saas_trial_over_plan]
35
+ ticket.priority = request_priority
36
+ ticket.status = 'new'
37
+ ticket.ticket_form_id = 360000071293
38
+ ticket.custom_fields = [
39
+ { id: 4414446722578, value: 'ticket_group_not_applicable' },
40
+ { id: 360020614420, value: 'aof_lnr' },
41
+ { id: 360020735259, value: 'stage-frt' },
42
+ { id: 360018253094, value: 'all_regions' },
43
+ { id: 360004394559, value: 'free_plan' },
44
+ { id: 360005183820, value: zd_user.name },
45
+ { id: 360005248219, value: zd_user.email },
46
+ { id: 360020735319, value: 'sev3' },
47
+ { id: 360020288373, value: '0' },
48
+ { id: 360014776453, value: 'medium' },
49
+ { id: 6978426204828, value: 'ir_extend_saas_trial' },
50
+ { id: 6978366086428, value: zd_user.email },
51
+ { id: 45195248, value: 'created_by_agent' }
52
+ ]
53
+ create = Readiness::Zendesk::Tickets.create!(@zendesk_client, ticket)
54
+ puts "Ticket created: https://gitlab.zendesk.com/agent/tickets/#{create.id}"
55
+ end
56
+
57
+ ##
58
+ # Sets the global variable requester
59
+ #
60
+ # @author Jason Colyer
61
+ # @since 1.0.42
62
+ def self.requester
63
+ @requester ||= Readiness::SupportSuperFormProcessor::Shared.gitlab_user_check(@gitlab_admin_client, requester_email)
64
+ end
65
+
66
+ ##
67
+ # Sets the global variable zd_user
68
+ #
69
+ # @author Jason Colyer
70
+ # @since 1.0.42
71
+ def self.zd_user
72
+ @zd_user ||= Readiness::SupportSuperFormProcessor::Shared.zendesk_user_check(@zendesk_client, requester_email)
73
+ end
74
+
75
+ ##
76
+ # Sets the global variable requester_email
77
+ #
78
+ # @author Jason Colyer
79
+ # @since 1.0.42
80
+ def self.requester_email
81
+ @requester_email ||= ENV.fetch('REQUESTER_EMAIL')
82
+ end
83
+
84
+ ##
85
+ # Sets the global variable request_priority
86
+ #
87
+ # @author Jason Colyer
88
+ # @since 1.0.42
89
+ def self.request_priority
90
+ @request_priority ||= ENV.fetch('INTERNAL_REQUEST_GLOBAL_PRIORITY')
91
+ end
92
+
93
+ ##
94
+ # Sets the global variable namespace_provided
95
+ #
96
+ # @author Jason Colyer
97
+ # @since 1.0.42
98
+ def self.namespace_provided
99
+ @namespace_provided ||= ENV.fetch('SAAS_TRIAL_OVER_PLAN_NAMESPACE')
100
+ end
101
+
102
+ ##
103
+ # Sets the global variable context
104
+ #
105
+ # @author Jason Colyer
106
+ # @since 1.0.42
107
+ def self.context
108
+ @context ||= ENV.fetch('INTERNAL_REQUEST_GLOBAL_CONTEXT')
109
+ end
110
+
111
+ ##
112
+ # Sets the global variable contact_name
113
+ #
114
+ # @author Jason Colyer
115
+ # @since 1.0.42
116
+ def self.contact_name
117
+ @contact_name ||= ENV.fetch('INTERNAL_REQUEST_GLOBAL_CONTACT_NAME')
118
+ end
119
+
120
+ ##
121
+ # Sets the global variable contact_email
122
+ #
123
+ # @author Jason Colyer
124
+ # @since 1.0.42
125
+ def self.contact_email
126
+ @contact_email ||= ENV.fetch('INTERNAL_REQUEST_GLOBAL_EMAIL')
127
+ end
128
+
129
+ ##
130
+ # Sets the global variable company
131
+ #
132
+ # @author Jason Colyer
133
+ # @since 1.0.42
134
+ def self.company
135
+ @company ||= ENV.fetch('INTERNAL_REQUEST_GLOBAL_COMPANY_NAME')
136
+ end
137
+
138
+ ##
139
+ # Sets the global variable start_date
140
+ #
141
+ # @author Jason Colyer
142
+ # @since 1.0.42
143
+ def self.start_date
144
+ @start_date ||= ENV.fetch('SAAS_TRIAL_OVER_PLAN_START')
145
+ end
146
+
147
+ ##
148
+ # Sets the global variable extension_date
149
+ #
150
+ # @author Jason Colyer
151
+ # @since 1.0.42
152
+ def self.extension_date
153
+ @extension_date ||= ENV.fetch('SAAS_TRIAL_OVER_PLAN_EXPIRATION')
154
+ end
155
+
156
+ ##
157
+ # Sets the global variable sfdc_account_link
158
+ #
159
+ # @author Jason Colyer
160
+ # @since 1.0.42
161
+ def self.sfdc_account_link
162
+ @sfdc_account_link ||= ENV.fetch('SAAS_TRIAL_OVER_PLAN_SFDC_ACCOUNT')
163
+ end
164
+
165
+ ##
166
+ # Sets the global variable opp_link
167
+ #
168
+ # @author Jason Colyer
169
+ # @since 1.0.42
170
+ def self.opp_link
171
+ @opp_link ||= ENV.fetch('SAAS_TRIAL_OVER_PLAN_SFDC_OPPORTUNITY')
172
+ end
173
+
174
+
175
+ ##
176
+ # Returns the ticket body
177
+ #
178
+ # @author Jason Colyer
179
+ # @since 1.0.42
180
+ # @return [String]
181
+ def self.body
182
+ <<~STRING
183
+ <p>
184
+ Greetings,
185
+ </p>
186
+ <p>
187
+ 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.
188
+ </p>
189
+ <p>
190
+ A request has been filed for Request trial over plan.
191
+ </p>
192
+ <p>
193
+ The information for this is as follows:
194
+ </p>
195
+ <ul>
196
+ <li>Customer's name: #{contact_name}</li>
197
+ <li>
198
+ Contact's email: #{contact_email}
199
+ <a href="https://www.zuora.com/platform/apps/search?searchTerm=#{contact_email}" target='_blank'>(Zuora Search)</a>
200
+ <a href="https://customers.gitlab.com/admin/customer?model_name=customer&query=#{contact_email}" target='_blank'>(Portal Search)</a>
201
+ </li>
202
+ <li>Customer's company: #{company}</li>
203
+ <li>#{Readiness::SupportSuperFormProcessor::Shared.sfdc_account_string(sfdc_account_link)}</li>
204
+ <li>#{Readiness::SupportSuperFormProcessor::Shared.sfdc_opportunity_string(opp_link)}</li>
205
+ <li>GitLab.com namespace: #{@namespace.path}</li>
206
+ <li>Desired start date: #{start_date}</li>
207
+ <li>Desired expiration date: #{extension_date}</li>
208
+ </ul>
209
+ <p>
210
+ Some additional context for this request is:
211
+ </p>
212
+ <pre>
213
+ #{context}
214
+ </pre>
215
+ STRING
216
+ end
217
+ end
218
+ end
219
+ end
@@ -0,0 +1,172 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Defines the module Readiness.
4
+ module Readiness
5
+ # Defines the module SupportSuperFormProcessor
6
+ module SupportSuperFormProcessor
7
+ ##
8
+ # Defines the class GlobalIRHackeroneLicense within the module {Readiness::Zendesk}.
9
+ #
10
+ # @author Jason Colyer
11
+ # @since 1.0.42
12
+ class GlobalIRHackeroneLicense < Readiness::Client
13
+ ##
14
+ # Process a Global Internal Request Hackerone License request
15
+ #
16
+ # @author Jason Colyer
17
+ # @since 1.0.42
18
+ def self.process!(gitlab_client, gitlab_admin_client, zendesk_client)
19
+ @gitlab_client = gitlab_client
20
+ @gitlab_admin_client = gitlab_admin_client
21
+ @zendesk_client = zendesk_client
22
+ requester
23
+ zd_user
24
+ ticket = Readiness::Zendesk::Tickets.new
25
+ ticket.email_cc_ids = [zd_user.id]
26
+ ticket.requester_id = 379855863520
27
+ ticket.submitter_id = 379855863520
28
+ ticket.comment = { html_body: body }
29
+ ticket.subject = 'Internal Request - SM - Hacker One Reporter License'
30
+ ticket.tags = %w[lnr_internal_request lnr_valid_request lnr_hackerone]
31
+ ticket.priority = request_priority
32
+ ticket.status = 'new'
33
+ ticket.ticket_form_id = 360000071293
34
+ ticket.custom_fields = [
35
+ { id: 4414446722578, value: 'ticket_group_not_applicable' },
36
+ { id: 360020614420, value: 'aof_lnr' },
37
+ { id: 360020735259, value: 'stage-frt' },
38
+ { id: 360018253094, value: 'all_regions' },
39
+ { id: 360004394559, value: 'free_plan' },
40
+ { id: 360005183820, value: zd_user.name },
41
+ { id: 360005248219, value: zd_user.email },
42
+ { id: 360020735319, value: 'sev3' },
43
+ { id: 360020288373, value: '0' },
44
+ { id: 360014776453, value: 'medium' },
45
+ { id: 6978426204828, value: 'ir_hackerone' },
46
+ { id: 6978366086428, value: zd_user.email },
47
+ { id: 45195248, value: 'created_by_agent' }
48
+ ]
49
+ create = Readiness::Zendesk::Tickets.create!(@zendesk_client, ticket)
50
+ puts "Ticket created: https://gitlab.zendesk.com/agent/tickets/#{create.id}"
51
+ end
52
+
53
+ ##
54
+ # Sets the global variable requester
55
+ #
56
+ # @author Jason Colyer
57
+ # @since 1.0.42
58
+ def self.requester
59
+ @requester ||= Readiness::SupportSuperFormProcessor::Shared.gitlab_user_check(@gitlab_admin_client, requester_email)
60
+ end
61
+
62
+ ##
63
+ # Sets the global variable zd_user
64
+ #
65
+ # @author Jason Colyer
66
+ # @since 1.0.42
67
+ def self.zd_user
68
+ @zd_user ||= Readiness::SupportSuperFormProcessor::Shared.zendesk_user_check(@zendesk_client, requester_email)
69
+ end
70
+
71
+ ##
72
+ # Sets the global variable requester_email
73
+ #
74
+ # @author Jason Colyer
75
+ # @since 1.0.42
76
+ def self.requester_email
77
+ @requester_email ||= ENV.fetch('REQUESTER_EMAIL')
78
+ end
79
+
80
+ ##
81
+ # Sets the global variable request_priority
82
+ #
83
+ # @author Jason Colyer
84
+ # @since 1.0.42
85
+ def self.request_priority
86
+ @request_priority ||= ENV.fetch('INTERNAL_REQUEST_GLOBAL_PRIORITY')
87
+ end
88
+
89
+ ##
90
+ # Sets the global variable context
91
+ #
92
+ # @author Jason Colyer
93
+ # @since 1.0.42
94
+ def self.context
95
+ @context ||= ENV.fetch('INTERNAL_REQUEST_GLOBAL_CONTEXT')
96
+ end
97
+
98
+ ##
99
+ # Sets the global variable contact_name
100
+ #
101
+ # @author Jason Colyer
102
+ # @since 1.0.42
103
+ def self.contact_name
104
+ @contact_name ||= ENV.fetch('INTERNAL_REQUEST_GLOBAL_CONTACT_NAME')
105
+ end
106
+
107
+ ##
108
+ # Sets the global variable contact_email
109
+ #
110
+ # @author Jason Colyer
111
+ # @since 1.0.42
112
+ def self.contact_email
113
+ @contact_email ||= ENV.fetch('INTERNAL_REQUEST_GLOBAL_EMAIL')
114
+ end
115
+
116
+ ##
117
+ # Sets the global variable company
118
+ #
119
+ # @author Jason Colyer
120
+ # @since 1.0.42
121
+ def self.company
122
+ @company ||= ENV.fetch('INTERNAL_REQUEST_GLOBAL_COMPANY_NAME')
123
+ end
124
+
125
+ ##
126
+ # Returns the ticket body
127
+ #
128
+ # @author Jason Colyer
129
+ # @since 1.0.42
130
+ # @return [String]
131
+ def self.body
132
+ <<~STRING
133
+ <p>
134
+ Greetings
135
+ </p>
136
+ <p>
137
+ 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.
138
+ </p>
139
+ <p>
140
+ A request has been filed for Hacker One Reporter License.
141
+ </p>
142
+ <p>
143
+ The information for this is as follows:
144
+ </p>
145
+ <ul>
146
+ <li>Contact's name: #{contact_name}</li>
147
+ <li>
148
+ Contact's email: #{contact_email}
149
+ <a href="https://www.zuora.com/platform/apps/search?searchTerm=#{contact_email}" target='_blank'>(Zuora Search)</a>
150
+ <a href="https://customers.gitlab.com/admin/customer?model_name=customer&query=#{contact_email}" target='_blank'>(Portal Search)</a>
151
+ </li>
152
+ <li>Company: H1 Reporter Award - #{company}</li>
153
+ <li>Plan: Ultimate</li>
154
+ <li>Number of users: 5</li>
155
+ <li>Reason for license: HackerOne Reporter Award</li>
156
+ <li>License duration: 1 year</li>
157
+ <li>Trial: Yes</li>
158
+ </ul>
159
+ <p>
160
+ Some additional context for this request is:
161
+ </p>
162
+ <pre>
163
+ #{context}
164
+ </pre>
165
+ <p>
166
+ You can find the workflow for this ticket <a href='https://handbook.gitlab.com/handbook/support/license-and-renewals/workflows/self-managed/generating_hackerone_reporter_licenses/' target='_blank'>here</a>
167
+ </p>
168
+ STRING
169
+ end
170
+ end
171
+ end
172
+ end