peoplegroup-connectors 0.1.31 → 0.1.36

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: 8f8e9b381041269a553b63f9c64fc86de1dedf730ba10191d055b2d30eaeb205
4
- data.tar.gz: cd5512eef60b5d2bc05450790ed6181b013ac7f7bacc3c888a4c1c91fb4c5a65
3
+ metadata.gz: 8611752b4ca5e726cc88207388a89cb90a7ad49cfa57681409b857ee13d59c8e
4
+ data.tar.gz: adb086e3c860033292caff493bf483967223b11b534828b11db5a9f3ffca7ac0
5
5
  SHA512:
6
- metadata.gz: 85014b51651109152eff8a1232b13bc653f5d0855bc1408044ffd5f304bbe20768cd861c4683097bd7d9f8d4123a09f52ca5dd84dbf9948dd26f4eaf6522ee0f
7
- data.tar.gz: 8324034a0ce7ddd6038a56a0a5b9680a0a64f2cbdf8cece9b72f5bbc8a063743c85940577728bb7b7aca244dd00ff598762d806ba82b65f801da8e140b65ace6
6
+ metadata.gz: c4e1c9ab9341dc9731695024237f6f2d9f7febc87821926c5205dd345725affcfcc66732787fdf12bf3bcfaddbc01c27ff3409b38a900738980d187771219a66
7
+ data.tar.gz: b05f29c43918c58229fa3486b2935f0945355b31a925fc55fa1e0f38f10df45321548611ed34f50f715560da04ebd2b2f6ea85ce3a450d275885e66a996dbe3a
@@ -0,0 +1,4 @@
1
+ - slack_email: cristiano
2
+ bamboo_email: ccasella
3
+ - slack_email: kencjohnston
4
+ bamboo_email: kjohnston
@@ -7,7 +7,8 @@ module PeopleGroup
7
7
  class Bamboo
8
8
  MAX_RETRIES = 3
9
9
 
10
- def initialize
10
+ def initialize(use_report: false)
11
+ @use_report = use_report
11
12
  @client = Bamboozled.client(subdomain: 'gitlab', api_key: ENV['BAMBOO_API_KEY'])
12
13
  end
13
14
 
@@ -39,10 +40,24 @@ module PeopleGroup
39
40
  end
40
41
  alias_method :search_team_member_by_field, :search_employee_by_field
41
42
 
43
+ def slack_email_lookup_with_fallback(email)
44
+ file_path = File.join(__dir__, '../../../data/email_mapper.yml')
45
+ email_mapper = YAML.load_file(file_path)
46
+ email_hit = email_mapper.find { |mapping| mapping['slack_email'] == email.delete_suffix('@gitlab.com') }
47
+ email = "#{email_hit['bamboo_email']}@gitlab.com" if email_hit
48
+
49
+ employees.find { |employee| employee['workEmail'] == email }
50
+ end
51
+
42
52
  def fetch_manager(team_member)
43
53
  active_team_members.find { |tm| tm['id'] == team_member['supervisorEId'] }
44
54
  end
45
55
 
56
+ def fetch_manager_for_id(team_member_id)
57
+ team_member = get_employee_details(team_member_id)
58
+ active_team_members.find { |tm| tm['id'] == team_member['supervisorEId'] }
59
+ end
60
+
46
61
  def fetch_second_level_manager(team_member)
47
62
  fetch_manager(fetch_manager(team_member))
48
63
  end
@@ -71,7 +86,11 @@ module PeopleGroup
71
86
  retries = 0
72
87
 
73
88
  begin
74
- @employees ||= @client.report.custom(fields, 'JSON').reject { |employee| employee['lastName'] == 'Test-Gitlab' }
89
+ if @use_report
90
+ @employees ||= @client.report.find(@use_report, 'JSON', true).reject { |employee| employee['lastName'] == 'Test-Gitlab' }
91
+ else
92
+ @employees ||= @client.report.custom(fields, 'JSON').reject { |employee| employee['lastName'] == 'Test-Gitlab' }
93
+ end
75
94
  rescue Net::ReadTimeout, Bamboozled::GatewayError
76
95
  retry if (retries += 1) < MAX_RETRIES
77
96
  end
@@ -162,6 +181,14 @@ module PeopleGroup
162
181
  @client.employee.add_table_row(employee_id, 'customAdditionalInformation1', data)
163
182
  end
164
183
 
184
+ def additional_data(employee_id)
185
+ @client.employee.table_data(employee_id, 'employmentStatus')
186
+ end
187
+
188
+ def currency_conversion(employee_id)
189
+ @client.employee.table_data(employee_id, 'customCurrencyConversion')
190
+ end
191
+
165
192
  def add_bonus(team_member_id, comment)
166
193
  data = {
167
194
  customBonusdate: Date.today.to_s,
@@ -173,6 +200,10 @@ module PeopleGroup
173
200
  @client.employee.add_table_row(team_member_id, 'customBonus', data)
174
201
  end
175
202
 
203
+ def has_direct_reports?(id)
204
+ active_team_members.any? { |team_member| team_member['supervisorEId'] == id.to_s }
205
+ end
206
+
176
207
  private
177
208
 
178
209
  def meta_fields
@@ -18,6 +18,17 @@ module PeopleGroup
18
18
  nil
19
19
  end
20
20
 
21
+ def bamboo_email_lookup_with_fallback(email)
22
+ file_path = File.join(__dir__, '../../../data/email_mapper.yml')
23
+ email_mapper = YAML.load_file(file_path)
24
+ email_hit = email_mapper.find { |mapping| mapping['bamboo_email'] == email.delete_suffix('@gitlab.com') }
25
+ email = "#{email_hit['slack_email']}@gitlab.com" if email_hit
26
+
27
+ @client.users_lookupByEmail(email: email)
28
+ rescue ::Slack::Web::Api::Errors::SlackError
29
+ nil
30
+ end
31
+
21
32
  def find_user_by_id(id)
22
33
  @client.users_info(user: id)
23
34
  rescue ::Slack::Web::Api::Errors::SlackError
@@ -2,6 +2,6 @@
2
2
 
3
3
  module PeopleGroup
4
4
  module Connectors
5
- VERSION = '0.1.31'
5
+ VERSION = '0.1.36'
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.31
4
+ version: 0.1.36
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: 2021-03-26 00:00:00.000000000 Z
11
+ date: 2021-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gitlab
@@ -159,6 +159,7 @@ extra_rdoc_files: []
159
159
  files:
160
160
  - LICENSE.txt
161
161
  - README.md
162
+ - data/email_mapper.yml
162
163
  - lib/peoplegroup/connectors.rb
163
164
  - lib/peoplegroup/connectors/bamboo.rb
164
165
  - lib/peoplegroup/connectors/gitlab.rb