peoplegroup-connectors 0.1.96 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8bf603701e7dc27da76fcc61f2a8a4047133e7933ea58ec0f2549efb1d709afe
4
- data.tar.gz: 8e600b62d801d284c831fb69fd55430d9322594b355ce5a65fe1cca335c387ff
3
+ metadata.gz: 52119b48d43178c73a802c6eb5361c052447bd6ee72a5a2a6d48b7fac5d19b41
4
+ data.tar.gz: 61af8cffaa0bbd000489f8ff493147bfbf2f7ffbd6e67a3daa93189f11305e2f
5
5
  SHA512:
6
- metadata.gz: abd0763536f8eeeb9769e8ee5c2996e27ea459194613ab3e8bb6db249feb9620fc0a283f01e791adb9ecb04638775dd75ff33a37fbc7a957dfd38dff5d449a76
7
- data.tar.gz: 07d010c5b8c01fbcfa8e2bc84e741280034974ce4e7499027f488c2af4ea0b190bfbffe55a61073a6db3a673d24a5a23c41a4209ed4cac708821c732fe74e174
6
+ metadata.gz: 4b5baabf6fa07a5e8c4c080682afddc5145d9419ece8d4c5df4b07f17ffdc0cbbd2ab1569148d136b749af31b0e03594e71ab936a0cf33b7e52e786d8bb25bcc
7
+ data.tar.gz: 331e0a2ecd5514ee3ed39a351d4c91fb4d7d3ac12c7a11227199810854a92324cf501d4ca18958ce2ca22719664927a5db504fff16cde6a88a2f00007974b545
data/README.md CHANGED
@@ -31,6 +31,8 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
31
31
 
32
32
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
33
33
 
34
+ For local development and manual testing, copy the contents of the `.env.example` file to a new file called `.env` and fill-in the environment variable values. You will then be able to run a REPL by running `bundle exec bin/console` from the root of the repository.
35
+
34
36
  ## Contributing and Code of Conduct
35
37
 
36
38
  Bug reports and pull requests are welcome on GitLab at https://gitlab.com/gitlab-com/people-group/peopleops-eng/connectors-gem. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
@@ -15,16 +15,21 @@ module PeopleGroup
15
15
  end
16
16
 
17
17
  def get_employee_details(id)
18
- employees.find { |emp| emp['id'] == id.to_s }
18
+ employees.find { |emp| emp['employeeNumber'] == id.to_s }
19
19
  end
20
20
  alias_method :get_team_member_details, :get_employee_details
21
21
 
22
22
  def get_employee_details!(id)
23
23
  employee_details = get_employee_details(id)
24
- raise EmployeeNotFoundError, "No employee found with id #{id}" if employee_details.nil?
24
+ raise EmployeeNotFoundError, "No team member found with employee number #{id}" if employee_details.nil?
25
25
 
26
26
  employee_details
27
27
  end
28
+ alias_method :get_team_member_details!, :get_employee_details!
29
+
30
+ def bamboo_id!(employee_number)
31
+ get_team_member_details!(employee_number)['id']
32
+ end
28
33
 
29
34
  def search_employee(name)
30
35
  return if name.empty?
@@ -109,7 +114,7 @@ module PeopleGroup
109
114
 
110
115
  def people_managers_in_functions(departments: [], divisions: [])
111
116
  active_and_current_team_members.select do |team_member|
112
- (departments.include?(team_member['department']) || divisions.include?(team_member['division'])) && has_direct_reports?(team_member['id'])
117
+ (departments.include?(team_member['department']) || divisions.include?(team_member['division'])) && has_direct_reports?(team_member['employeeNumber'])
113
118
  end
114
119
  end
115
120
 
@@ -119,17 +124,17 @@ module PeopleGroup
119
124
  while direct_reports_to_check.present?
120
125
  current_node = direct_reports_to_check.shift
121
126
  reports_to_return << current_node
122
- direct_reports_to_check.concat(direct_reports_for(current_node['id']))
127
+ direct_reports_to_check.concat(direct_reports_for(current_node['employeeNumber']))
123
128
  end
124
129
  reports_to_return
125
130
  end
126
131
 
127
132
  def direct_reports_for(id)
128
- active_and_current_team_members.select { |team_member| team_member['supervisorEId'] == id.to_s }
133
+ active_and_current_team_members.select { |team_member| team_member['supervisorId'] == id.to_s }
129
134
  end
130
135
 
131
136
  def has_direct_reports?(id)
132
- active_and_current_team_members.any? { |team_member| team_member['supervisorEId'] == id.to_s }
137
+ active_and_current_team_members.any? { |team_member| team_member['supervisorId'] == id.to_s }
133
138
  end
134
139
 
135
140
  def reports_in_departments(departments, exclude_email)
@@ -149,17 +154,26 @@ module PeopleGroup
149
154
  def create_employee(employee_details_hash)
150
155
  retry_on_error { @client.employee.add(employee_details_hash) }
151
156
  end
157
+ alias_method :create_team_member, :create_employee
152
158
 
153
- def update_employee(employee_id, employee_details_hash)
154
- retry_on_error { @client.employee.update(employee_id, employee_details_hash) }
159
+ def update_employee(employee_number, employee_details_hash)
160
+ id = bamboo_id!(employee_number)
161
+ retry_on_error { @client.employee.update(id, employee_details_hash) }
155
162
  end
163
+ alias_method :update_team_member, :update_employee
156
164
 
157
165
  def departments
158
- meta_fields.detect { |res| res['name'] == 'Department' }.dig('options').each_with_object([]) { |option, array| array << option['name'] if option['archived'] == 'no' } || []
166
+ meta_fields
167
+ .detect { |res| res['name'] == 'Department' }
168
+ .dig('options')
169
+ .each_with_object([]) { |option, array| array << option['name'] if option['archived'] == 'no' } || []
159
170
  end
160
171
 
161
172
  def divisions
162
- meta_fields.detect { |res| res['name'] == 'Division' }.dig('options').each_with_object([]) { |option, array| array << option['name'] if option['archived'] == 'no' } || []
173
+ meta_fields
174
+ .detect { |res| res['name'] == 'Division' }
175
+ .dig('options')
176
+ .each_with_object([]) { |option, array| array << option['name'] if option['archived'] == 'no' } || []
163
177
  end
164
178
 
165
179
  def locations
@@ -199,30 +213,36 @@ module PeopleGroup
199
213
  end
200
214
  alias_method :active_and_current_team_members, :active_and_current_employees
201
215
 
202
- def add_stock_options(employee_id, data)
203
- retry_on_error { @client.employee.add_table_row(employee_id, 'customEquity', data) }
216
+ def add_stock_options(employee_number, data)
217
+ id = bamboo_id!(employee_number)
218
+ retry_on_error { @client.employee.add_table_row(id, 'customEquity', data) }
204
219
  end
205
220
 
206
- def stock_options_data(employee_id)
207
- retry_on_error { @client.employee.table_data(employee_id, 'customEquity') }
221
+ def stock_options_data(employee_number)
222
+ id = bamboo_id!(employee_number)
223
+ retry_on_error { @client.employee.table_data(id, 'customEquity') }
208
224
  end
209
225
 
210
- def add_job_details(employee_id, data)
211
- retry_on_error { @client.employee.add_table_row(employee_id, 'jobInfo', data) }
226
+ def add_job_details(employee_number, data)
227
+ id = bamboo_id!(employee_number)
228
+ retry_on_error { @client.employee.add_table_row(id, 'jobInfo', data) }
212
229
  end
213
230
 
214
- def update_job_details(employee_id, data)
215
- current_data = job_details(employee_id) # it should only be one row as we just created this user
231
+ def update_job_details(employee_number, data)
232
+ id = bamboo_id!(employee_number)
233
+ current_data = job_details(employee_number) # it should only be one row as we just created this user
216
234
  row_id = current_data.first.dig('id')
217
- retry_on_error { @client.employee.update_table_row(employee_id, 'jobInfo', row_id, data) }
235
+ retry_on_error { @client.employee.update_table_row(id, 'jobInfo', row_id, data) }
218
236
  end
219
237
 
220
- def add_compensation_details(employee_id, data)
221
- retry_on_error { @client.employee.add_table_row(employee_id, 'compensation', data) }
238
+ def add_compensation_details(employee_number, data)
239
+ id = bamboo_id!(employee_number)
240
+ retry_on_error { @client.employee.add_table_row(id, 'compensation', data) }
222
241
  end
223
242
 
224
- def employment_statuses(employee_id)
225
- retry_on_error { @client.employee.table_data(employee_id, 'employmentStatus') }
243
+ def employment_statuses(employee_number)
244
+ id = bamboo_id!(employee_number)
245
+ retry_on_error { @client.employee.table_data(id, 'employmentStatus') }
226
246
  end
227
247
 
228
248
  def time_off_types
@@ -233,17 +253,19 @@ module PeopleGroup
233
253
  time_off_types['timeOffTypes'].find { |type| type['name'] == name }
234
254
  end
235
255
 
236
- def time_off_estimate(employee_id, end_date = Date.today)
237
- retry_on_error { @client.employee.time_off_estimate(employee_id, end_date) }
256
+ def time_off_estimate(employee_number, end_date = Date.today)
257
+ id = bamboo_id!(employee_number)
258
+ retry_on_error { @client.employee.time_off_estimate(id, end_date) }
238
259
  end
239
260
 
240
- def time_off_adjustment(employee_id, options)
241
- retry_on_error { @client.employee.time_off_balance_adjustment(employee_id, options) }
261
+ def time_off_adjustment(employee_number, options)
262
+ id = bamboo_id!(employee_number)
263
+ retry_on_error { @client.employee.time_off_balance_adjustment(id, options) }
242
264
  end
243
265
 
244
- def accrued_days(employee_id)
266
+ def accrued_days(employee_number)
245
267
  employee_accruals_type = time_off_type('Employee Accruals')
246
- total_accruals = time_off_estimate(employee_id).find { |type| type['timeOffType'] == employee_accruals_type['id'] }
268
+ total_accruals = time_off_estimate(employee_number).find { |type| type['timeOffType'] == employee_accruals_type['id'] }
247
269
 
248
270
  total_accruals['balance'].to_f
249
271
  end
@@ -252,75 +274,88 @@ module PeopleGroup
252
274
  @time_off_policies ||= retry_on_error { @client.meta.time_off_policies }
253
275
  end
254
276
 
255
- def employee_time_off_policies(employee_id)
256
- retry_on_error { @client.employee.time_off_policies(employee_id) }
277
+ def employee_time_off_policies(employee_number)
278
+ id = bamboo_id!(employee_number)
279
+ retry_on_error { @client.employee.time_off_policies(id) }
257
280
  end
258
281
  alias_method :team_member_time_off_policies, :employee_time_off_policies
259
282
 
260
- def add_time_off_policy(employee_id, time_off_policy_id, accrual_start_date)
283
+ def add_time_off_policy(employee_number, time_off_policy_id, accrual_start_date)
261
284
  policies = [{ timeOffPolicyId: time_off_policy_id, accrualStartDate: accrual_start_date }]
285
+ id = bamboo_id!(employee_number)
262
286
 
263
- retry_on_error { @client.employee.add_time_off_policies(employee_id, policies) }
287
+ retry_on_error { @client.employee.add_time_off_policies(id, policies) }
264
288
  end
265
289
 
266
- def remove_time_off_policy(employee_id, time_off_policy_id)
290
+ def remove_time_off_policy(employee_number, time_off_policy_id)
267
291
  # A nil accrual start date removes a policy assignment
268
292
  # Reference: https://documentation.bamboohr.com/reference#time-off-assign-time-off-policies-for-an-employee
269
- add_time_off_policy(employee_id, time_off_policy_id, nil)
293
+ add_time_off_policy(employee_number, time_off_policy_id, nil)
270
294
  end
271
295
 
272
- def job_details(employee_id)
273
- retry_on_error { @client.employee.table_data(employee_id, 'jobInfo') }
296
+ def job_details(employee_number)
297
+ id = bamboo_id!(employee_number)
298
+ retry_on_error { @client.employee.table_data(id, 'jobInfo') }
274
299
  end
275
300
 
276
- def resumes_folder_id(employee_id)
277
- @resumes_folder_id ||= files(employee_id).dig('categories').find { |folder| folder['name'] == 'Resumes and Applications' }.dig('id')
301
+ def resumes_folder_id(employee_number)
302
+ @resumes_folder_id ||= files(employee_number).dig('categories').find { |folder| folder['name'] == 'Resumes and Applications' }.dig('id')
278
303
  end
279
304
 
280
- def contract_folder_id(employee_id)
281
- @contract_folder_id ||= files(employee_id).dig('categories').find { |folder| folder['name'] == 'Contracts & Changes' }.dig('id')
305
+ def contract_folder_id(employee_number)
306
+ @contract_folder_id ||= files(employee_number).dig('categories').find { |folder| folder['name'] == 'Contracts & Changes' }.dig('id')
282
307
  end
283
308
 
284
- def add_file(employee_id, file_name, file, folder_id)
309
+ def add_file(employee_number, file_name, file, folder_id)
310
+ id = bamboo_id!(employee_number)
311
+
285
312
  options = {
286
313
  category: folder_id,
287
314
  fileName: file_name,
288
315
  share: 'yes',
289
316
  file: file
290
317
  }
291
- retry_on_error { @client.employee.add_file(employee_id, options) }
318
+ retry_on_error { @client.employee.add_file(id, options) }
292
319
  end
293
320
 
294
- def add_employment_status(employee_id, data)
295
- retry_on_error { @client.employee.add_table_row(employee_id, 'employmentStatus', data) }
321
+ def add_employment_status(employee_number, data)
322
+ id = bamboo_id!(employee_number)
323
+ retry_on_error { @client.employee.add_table_row(id, 'employmentStatus', data) }
296
324
  end
297
325
 
298
- def add_currency_conversion(employee_id, data)
299
- retry_on_error { @client.employee.add_table_row(employee_id, 'customCurrencyConversion', data) }
326
+ def add_currency_conversion(employee_number, data)
327
+ id = bamboo_id!(employee_number)
328
+ retry_on_error { @client.employee.add_table_row(id, 'customCurrencyConversion', data) }
300
329
  end
301
330
 
302
- def add_on_target_earnings(employee_id, data)
303
- retry_on_error { @client.employee.add_table_row(employee_id, 'customOnTargetEarnings', data) }
331
+ def add_on_target_earnings(employee_number, data)
332
+ id = bamboo_id!(employee_number)
333
+ retry_on_error { @client.employee.add_table_row(id, 'customOnTargetEarnings', data) }
304
334
  end
305
335
 
306
- def add_signing_bonus(employee_id, data)
307
- retry_on_error { @client.employee.add_table_row(employee_id, 'customBonus', data) }
336
+ def add_signing_bonus(employee_number, data)
337
+ id = bamboo_id!(employee_number)
338
+ retry_on_error { @client.employee.add_table_row(id, 'customBonus', data) }
308
339
  end
309
340
 
310
- def add_family_member(employee_id, data)
311
- retry_on_error { @client.employee.add_table_row(employee_id, 'customFamilyMember', data) }
341
+ def add_family_member(employee_number, data)
342
+ id = bamboo_id!(employee_number)
343
+ retry_on_error { @client.employee.add_table_row(id, 'customFamilyMember', data) }
312
344
  end
313
345
 
314
- def add_additional_data(employee_id, data)
315
- retry_on_error { @client.employee.add_table_row(employee_id, 'customAdditionalInformation1', data) }
346
+ def add_additional_data(employee_number, data)
347
+ id = bamboo_id!(employee_number)
348
+ retry_on_error { @client.employee.add_table_row(id, 'customAdditionalInformation1', data) }
316
349
  end
317
350
 
318
- def additional_data(employee_id)
319
- retry_on_error { @client.employee.table_data(employee_id, 'employmentStatus') }
351
+ def additional_data(employee_number)
352
+ id = bamboo_id!(employee_number)
353
+ retry_on_error { @client.employee.table_data(id, 'employmentStatus') }
320
354
  end
321
355
 
322
- def currency_conversion(employee_id)
323
- retry_on_error { @client.employee.table_data(employee_id, 'customCurrencyConversion') }
356
+ def currency_conversion(employee_number)
357
+ id = bamboo_id!(employee_number)
358
+ retry_on_error { @client.employee.table_data(id, 'customCurrencyConversion') }
324
359
  end
325
360
 
326
361
  def add_bonus(employee_number, comment)
@@ -350,8 +385,9 @@ module PeopleGroup
350
385
  @meta_fields ||= retry_on_error { @client.meta.lists }
351
386
  end
352
387
 
353
- def files(employee_id)
354
- @files ||= retry_on_error { @client.employee.files(employee_id) }
388
+ def files(employee_number)
389
+ id = bamboo_id!(employee_number)
390
+ @files ||= retry_on_error { @client.employee.files(id) }
355
391
  end
356
392
 
357
393
  def retry_on_error(&block)
@@ -14,14 +14,14 @@ module PeopleGroup
14
14
  @workday.workers.map { |worker| format_worker(worker) }
15
15
  end
16
16
 
17
- def get_employee_details(id)
18
- employees.find { |emp| emp['id'] == id.to_s }
17
+ def get_employee_details(employee_number)
18
+ employees.find { |emp| emp['employeeNumber'] == employee_number.to_s }
19
19
  end
20
20
  alias_method :get_team_member_details, :get_employee_details
21
21
 
22
- def get_employee_details!(id)
23
- employee_details = get_employee_details(id)
24
- raise EmployeeNotFoundError, "No employee found with id #{id}" if employee_details.nil?
22
+ def get_employee_details!(employee_number)
23
+ employee_details = get_employee_details(employee_number)
24
+ raise EmployeeNotFoundError, "No team member found with employee number #{employee_number}" if employee_details.nil?
25
25
 
26
26
  employee_details
27
27
  end
@@ -33,7 +33,7 @@ module PeopleGroup
33
33
  return nil if worker.nil?
34
34
 
35
35
  {
36
- 'id' => worker.dig(:worker_data, :worker_id),
36
+ 'employeeNumber' => worker.dig(:worker_data, :worker_id),
37
37
  'firstName' => worker.dig(:worker_data, :personal_data, :name_data, :legal_name_data, :name_detail_data, :first_name),
38
38
  'lastName' => worker.dig(:worker_data, :personal_data, :name_data, :legal_name_data, :name_detail_data, :last_name),
39
39
  'preferredName' => worker.dig(:worker_data, :personal_data, :name_data, :preferred_name_data, :name_detail_data, :first_name),
@@ -2,6 +2,6 @@
2
2
 
3
3
  module PeopleGroup
4
4
  module Connectors
5
- VERSION = '0.1.96'
5
+ VERSION = '0.2.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: peoplegroup-connectors
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.96
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - lien van den steen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-31 00:00:00.000000000 Z
11
+ date: 2022-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gitlab
@@ -128,14 +128,14 @@ dependencies:
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '3.2'
131
+ version: '3.11'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '3.2'
138
+ version: '3.11'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: rubocop
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -150,34 +150,48 @@ dependencies:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0.91'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rake
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '13.0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '13.0'
153
167
  - !ruby/object:Gem::Dependency
154
168
  name: gitlab-styles
155
169
  requirement: !ruby/object:Gem::Requirement
156
170
  requirements:
157
171
  - - "~>"
158
172
  - !ruby/object:Gem::Version
159
- version: '6.6'
173
+ version: '7.0'
160
174
  type: :development
161
175
  prerelease: false
162
176
  version_requirements: !ruby/object:Gem::Requirement
163
177
  requirements:
164
178
  - - "~>"
165
179
  - !ruby/object:Gem::Version
166
- version: '6.6'
180
+ version: '7.0'
167
181
  - !ruby/object:Gem::Dependency
168
182
  name: rubocop-packaging
169
183
  requirement: !ruby/object:Gem::Requirement
170
184
  requirements:
171
185
  - - "~>"
172
186
  - !ruby/object:Gem::Version
173
- version: '0.1'
187
+ version: '0.5'
174
188
  type: :development
175
189
  prerelease: false
176
190
  version_requirements: !ruby/object:Gem::Requirement
177
191
  requirements:
178
192
  - - "~>"
179
193
  - !ruby/object:Gem::Version
180
- version: '0.1'
194
+ version: '0.5'
181
195
  - !ruby/object:Gem::Dependency
182
196
  name: rubocop-rspec
183
197
  requirement: !ruby/object:Gem::Requirement
@@ -220,6 +234,20 @@ dependencies:
220
234
  - - "~>"
221
235
  - !ruby/object:Gem::Version
222
236
  version: '0.21'
237
+ - !ruby/object:Gem::Dependency
238
+ name: byebug
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - "~>"
242
+ - !ruby/object:Gem::Version
243
+ version: '11.1'
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - "~>"
249
+ - !ruby/object:Gem::Version
250
+ version: '11.1'
223
251
  description: Avoid repeating methods in different projects for our connectos.
224
252
  email:
225
253
  - lvandensteen@gitlab.com
@@ -262,7 +290,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
262
290
  - !ruby/object:Gem::Version
263
291
  version: '0'
264
292
  requirements: []
265
- rubygems_version: 3.2.22
293
+ rubygems_version: 3.2.32
266
294
  signing_key:
267
295
  specification_version: 4
268
296
  summary: Library for our shared connectors.