peoplegroup-connectors 0.1.81 → 0.1.85

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: 59bf4a7262edf9f57f6cb78d1af2c51f26878aa2b03c5024e0675f34f7325b2d
4
- data.tar.gz: 4ca9690f2e103c0435cdcb2ad92ff782a2c777ffcf82aab0737f0fa0e0e8272b
3
+ metadata.gz: ad0028411b8229e27b10a2ed4082d465ac19f8707f105906224d40e8ee470ee0
4
+ data.tar.gz: 64bb20ee1c4c92a0e4fc9ba3d008ae606ff5e1805de82aa2ea580773cf92ecb6
5
5
  SHA512:
6
- metadata.gz: 5ac63c2ce2f22471a1ba87af06621243a0ef62ac0922ff4af153a31fa04e6bf7c6dc414c1b59a245e6120e273694f43c755e596a9930c7d51dbb9a1f8f930421
7
- data.tar.gz: fb23d5463e6bb43775698dce503de8ccd55a2d6c30dcfdeb7e3916d5dff57e62a785c8294eafd03e633693f94bbd1df1891fcfa4c03da6aaa61bdc857d8d2f8e
6
+ metadata.gz: fbed757134acb64151d4ca000d7e4bd90e8d73b2cabd3e08742d1a13b6e5089bf6a5bc3fd3496915e992a45da3baa344697a39637188c6f6cba415df9699e820
7
+ data.tar.gz: 12ef9db327a385db19cbb28210ef1791decb64cab07e7cb0cdcf6e94db1bf51d8466811e389fabbb649123c4f1df827187732c1c9199c6f3a1762fce5cb0bad1
@@ -1,7 +1,5 @@
1
1
  - slack_email: cristiano
2
2
  bamboo_email: ccasella
3
- - slack_email: kencjohnston
4
- bamboo_email: kjohnston
5
3
  - slack_email: jmeshell
6
4
  bamboo_email: jporter
7
5
  - slack_email: mjacob
@@ -0,0 +1,85 @@
1
+ # frozen_string_literal: true
2
+
3
+ # The HRIS module makes Workday responses look like BambooHR responses
4
+ module PeopleGroup
5
+ module Connectors
6
+ class Hris
7
+ EmployeeNotFoundError = Class.new(StandardError)
8
+
9
+ def initialize
10
+ @workday = Workday.new
11
+ end
12
+
13
+ def employees
14
+ @workday.workers.map { |worker| format_worker(worker) }
15
+ end
16
+
17
+ def get_employee_details(id)
18
+ employees.find { |emp| emp['id'] == id.to_s }
19
+ end
20
+ alias_method :get_team_member_details, :get_employee_details
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?
25
+
26
+ employee_details
27
+ end
28
+
29
+ def get_employee(id)
30
+ format_worker(@workday.get_worker(id))
31
+ end
32
+
33
+ def get_employee!(id)
34
+ employee = get_employee(id)
35
+ raise EmployeeNotFoundError, "No employee found with id #{id}" if employee.nil?
36
+
37
+ employee
38
+ end
39
+
40
+ private
41
+
42
+ # Convert Workday worker to BambooHR employee
43
+ def format_worker(worker)
44
+ return nil if worker.nil?
45
+
46
+ {
47
+ 'id' => worker.dig(:worker_data, :worker_id),
48
+ 'firstName' => worker.dig(:worker_data, :personal_data, :name_data, :legal_name_data, :name_detail_data, :first_name),
49
+ 'lastName' => worker.dig(:worker_data, :personal_data, :name_data, :legal_name_data, :name_detail_data, :last_name),
50
+ 'preferredName' => worker.dig(:worker_data, :personal_data, :name_data, :preferred_name_data, :name_detail_data, :first_name),
51
+ 'customPreferredLastName' => worker.dig(:worker_data, :personal_data, :name_data, :preferred_name_data, :name_detail_data, :last_name),
52
+ **format_emails(worker),
53
+ 'status' => worker.dig(:worker_data, :employment_data, :worker_status_data, :active) == '1' ? 'Active' : 'Inactive',
54
+ 'hireDate' => worker.dig(:worker_data, :employment_data, :worker_status_data, :hire_date).to_s,
55
+ 'jobTitle' => worker.dig(:worker_data, :employment_data, :worker_job_data, :position_data, :position_title)
56
+ }
57
+ end
58
+
59
+ def format_emails(worker)
60
+ formatted_emails = {
61
+ 'workEmail' => nil,
62
+ 'homeEmail' => nil
63
+ }
64
+
65
+ email_addresses = worker.dig(:worker_data, :personal_data, :contact_data, :email_address_data)
66
+
67
+ return formatted_emails if email_addresses.nil?
68
+
69
+ # If there is only one email, Workday returns a hash
70
+ # If there are more than one, Workday returns an array of hashes
71
+ # rubocop:disable Style/ArrayCoercion
72
+ email_addresses = [email_addresses] unless email_addresses.is_a?(Array)
73
+ # rubocop:enable Style/ArrayCoercion
74
+
75
+ email_addresses.each do |email_address_data|
76
+ email_type = email_address_data.dig(:usage_data, :type_data, :type_reference, :id).second
77
+ formatted_emails['workEmail'] = email_address_data[:email_address] if email_type == 'WORK'
78
+ formatted_emails['homeEmail'] = email_address_data[:email_address] if email_type == 'HOME'
79
+ end
80
+
81
+ formatted_emails
82
+ end
83
+ end
84
+ end
85
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module PeopleGroup
4
4
  module Connectors
5
- VERSION = '0.1.81'
5
+ VERSION = '0.1.85'
6
6
  end
7
7
  end
@@ -42,6 +42,31 @@ module PeopleGroup
42
42
  end
43
43
  end
44
44
 
45
+ def get_worker(id)
46
+ message = {
47
+ 'wd:Request_References' => {
48
+ 'wd:Worker_Reference' => {
49
+ 'wd:ID' => id,
50
+ attributes!: {
51
+ 'wd:ID' => {
52
+ 'wd:type' => 'Employee_ID'
53
+ }
54
+ }
55
+ }
56
+ },
57
+ attributes!: {
58
+ 'wd:Request_References' => {
59
+ 'wd:Skip_Non_Existing_Instances' => 'true',
60
+ 'wd:Ignore_Invalid_References' => 'true'
61
+ }
62
+ }
63
+ }
64
+
65
+ retry_on_error do
66
+ auto_paginated_call(:get_workers, { message_tag: 'wd:Get_Workers_Request', message: message, attributes: attributes })
67
+ end
68
+ end
69
+
45
70
  private
46
71
 
47
72
  def retry_on_error(&block)
@@ -8,6 +8,7 @@ require_relative 'connectors/pto_roots'
8
8
  require_relative 'connectors/bamboo'
9
9
  require_relative 'connectors/greenhouse'
10
10
  require_relative 'connectors/workday'
11
+ require_relative 'connectors/hris'
11
12
  require_relative 'utils'
12
13
 
13
14
  module PeopleGroup
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.81
4
+ version: 0.1.85
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-12-03 00:00:00.000000000 Z
11
+ date: 2022-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gitlab
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.2.12
75
+ version: 0.2.13
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.2.12
82
+ version: 0.2.13
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: greenhouse_io-gitlab
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -193,6 +193,7 @@ files:
193
193
  - lib/peoplegroup/connectors/gitlab.rb
194
194
  - lib/peoplegroup/connectors/google_sheets.rb
195
195
  - lib/peoplegroup/connectors/greenhouse.rb
196
+ - lib/peoplegroup/connectors/hris.rb
196
197
  - lib/peoplegroup/connectors/pto_roots.rb
197
198
  - lib/peoplegroup/connectors/slack.rb
198
199
  - lib/peoplegroup/connectors/version.rb