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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad0028411b8229e27b10a2ed4082d465ac19f8707f105906224d40e8ee470ee0
|
4
|
+
data.tar.gz: 64bb20ee1c4c92a0e4fc9ba3d008ae606ff5e1805de82aa2ea580773cf92ecb6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fbed757134acb64151d4ca000d7e4bd90e8d73b2cabd3e08742d1a13b6e5089bf6a5bc3fd3496915e992a45da3baa344697a39637188c6f6cba415df9699e820
|
7
|
+
data.tar.gz: 12ef9db327a385db19cbb28210ef1791decb64cab07e7cb0cdcf6e94db1bf51d8466811e389fabbb649123c4f1df827187732c1c9199c6f3a1762fce5cb0bad1
|
data/data/email_mapper.yml
CHANGED
@@ -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
|
@@ -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)
|
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.
|
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:
|
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.
|
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.
|
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
|