peoplegroup-connectors 0.1.38 → 0.1.43

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: ce7bbe7a63bb597ed928d7333a33c15a9250bb7a78275a5d3221570b6a0d33af
4
- data.tar.gz: 8654607403148b2398969daa729051617d4272df8c427ecf7db65e5ecc86b811
3
+ metadata.gz: 75a59479ea04ffa0d0a5f4cfef7f08cbb49d96b85832776dd282a4abd15d1145
4
+ data.tar.gz: 5df1d00b90ab125e50ee769ec52bef55f72f358d109648b6af07e18e11232547
5
5
  SHA512:
6
- metadata.gz: 04be80f29f17161b84fe5c101e73d856e513afdea5306546bafbc3e2c4f809cdaf4495210cb0f5b31c549c8eeb291d15690c7d4534a4f3639fe28244b1a1ff0e
7
- data.tar.gz: 0fd7ae60b6b1064b8d0780e642a1971148f019ca1910dc93be7615bdcea624782ce3945e374210f6220c25d7ee8fa7f76b133cf1288c402ad105036e63e183dd
6
+ metadata.gz: 6a70bea4498dbbe21aed0a5ecd3f300edc305b818990d9720f5b864651e66cd73bd93a7e6a79c605f72bbd60c73d84c2834fdaf1fd1be4fc354a7ee9b0927887
7
+ data.tar.gz: 4f25bef1ae6f25909887c359e1d0a66fac62658b0bd2306aa58d4a805cae2c7dcb693b0bb81becefeda12637ad9b367710592d1760e5ab786c242c5ce7aefde2
@@ -5,6 +5,8 @@ require 'bamboozled'
5
5
  module PeopleGroup
6
6
  module Connectors
7
7
  class Bamboo
8
+ EmployeeNotFoundError = Class.new(StandardError)
9
+
8
10
  def initialize(use_report: false)
9
11
  @use_report = use_report
10
12
  @client = Bamboozled.client(subdomain: 'gitlab', api_key: ENV['BAMBOO_API_KEY'])
@@ -14,10 +16,24 @@ module PeopleGroup
14
16
  employees.find { |emp| emp['id'] == id.to_s }
15
17
  end
16
18
 
19
+ def get_employee_details!(id)
20
+ employee_details = get_employee_details(id)
21
+ raise EmployeeNotFoundError, "No employee found with id #{id}" if employee_details.nil?
22
+
23
+ employee_details
24
+ end
25
+
17
26
  def get_employee(id)
18
27
  @client.employee.find(id, %w[firstName lastName jobTitle supervisor hireDate country location department division workEmail customCostCenter])
19
28
  end
20
29
 
30
+ def get_employee!(id)
31
+ employee = get_employee(id)
32
+ raise EmployeeNotFoundError, "No employee found with id #{id}" if employee.nil?
33
+
34
+ employee
35
+ end
36
+
21
37
  def search_employee(name)
22
38
  return if name.empty?
23
39
 
@@ -27,17 +43,34 @@ module PeopleGroup
27
43
  "#{emp['firstName']&.downcase} #{emp['lastName']&.downcase}",
28
44
  "#{emp['preferredName']&.downcase} #{emp['lastName']&.downcase}",
29
45
  "#{emp['firstName']&.downcase} #{emp['customPreferredLastName']&.downcase}",
30
- "#{emp['preferredName']&.downcase} #{emp['customPreferredLastName']&.downcase}"
46
+ "#{emp['preferredName']&.downcase} #{emp['customPreferredLastName']&.downcase}",
47
+ emp['fullName5']&.downcase # this is firstName middleName lastName
31
48
  ].include?(name.downcase)
32
49
  end
33
50
  end
34
51
  alias_method :search_team_member, :search_employee
35
52
 
53
+ def search_employee!(name)
54
+ employee = search_employee(name)
55
+ raise EmployeeNotFoundError, "No employee found with name #{name}" if employee.nil?
56
+
57
+ employee
58
+ end
59
+ alias_method :search_team_member!, :search_employee!
60
+
36
61
  def search_employee_by_field(field:, value:)
37
62
  employees.find { |employee| employee[field] == value.to_s }
38
63
  end
39
64
  alias_method :search_team_member_by_field, :search_employee_by_field
40
65
 
66
+ def search_employee_by_field!(field:, value:)
67
+ employee = search_employee_by_field(field: field, value: value)
68
+ raise EmployeeNotFoundError, "No employee found with #{field}: #{value}" if employee.nil?
69
+
70
+ employee
71
+ end
72
+ alias_method :search_team_member_by_field!, :search_employee_by_field!
73
+
41
74
  def slack_email_lookup_with_fallback(email)
42
75
  file_path = File.join(__dir__, '../../../data/email_mapper.yml')
43
76
  email_mapper = YAML.load_file(file_path)
@@ -47,19 +80,47 @@ module PeopleGroup
47
80
  employees.find { |employee| employee['workEmail'] == email }
48
81
  end
49
82
 
83
+ def slack_email_lookup_with_fallback!(email)
84
+ employee = slack_email_lookup_with_fallback(email)
85
+ raise EmployeeNotFoundError, "No employee found with Slack email #{email}" if employee.nil?
86
+
87
+ employee
88
+ end
89
+
50
90
  def fetch_manager(team_member)
51
91
  active_team_members.find { |tm| tm['id'] == team_member['supervisorEId'] }
52
92
  end
53
93
 
94
+ def fetch_manager!(team_member)
95
+ manager = fetch_manager(team_member)
96
+ raise EmployeeNotFoundError, "Manager not found for employee #{team_member['id']}" if manager.nil?
97
+
98
+ manager
99
+ end
100
+
54
101
  def fetch_manager_for_id(team_member_id)
55
102
  team_member = get_employee_details(team_member_id)
56
103
  active_team_members.find { |tm| tm['id'] == team_member['supervisorEId'] }
57
104
  end
58
105
 
106
+ def fetch_manager_for_id!(team_member_id)
107
+ manager = fetch_manager_for_id(team_member_id)
108
+ raise EmployeeNotFoundError, "No manager found with id #{team_member_id}" if manager.nil?
109
+
110
+ manager
111
+ end
112
+
59
113
  def fetch_second_level_manager(team_member)
60
114
  fetch_manager(fetch_manager(team_member))
61
115
  end
62
116
 
117
+ def fetch_second_level_manager!(team_member)
118
+ manager = fetch_second_level_manager(team_member)
119
+ raise EmployeeNotFoundError, "No second level manager found for employee #{team_member['id']}" if manager.nil?
120
+
121
+ manager
122
+ end
123
+
63
124
  def create_employee(employee_details_hash)
64
125
  @client.employee.add(employee_details_hash)
65
126
  end
@@ -49,6 +49,10 @@ module PeopleGroup
49
49
  retry_on_error { @client.create_issue_note(project, id, text) }
50
50
  end
51
51
 
52
+ def edit_issue(project, id, options)
53
+ retry_on_error { @client.edit_issue(project, id, options) }
54
+ end
55
+
52
56
  def get_onboarding_issues(project, args)
53
57
  retry_on_error { @client.issues(project, args).auto_paginate }
54
58
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module PeopleGroup
4
4
  module Connectors
5
- VERSION = '0.1.38'
5
+ VERSION = '0.1.43'
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.38
4
+ version: 0.1.43
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-04-22 00:00:00.000000000 Z
11
+ date: 2021-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gitlab
@@ -205,7 +205,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
205
205
  - !ruby/object:Gem::Version
206
206
  version: '0'
207
207
  requirements: []
208
- rubygems_version: 3.1.4
208
+ rubygems_version: 3.2.3
209
209
  signing_key:
210
210
  specification_version: 4
211
211
  summary: Library for our shared connectors.