-
Notifications
You must be signed in to change notification settings - Fork 0
/
persons.ps1
58 lines (48 loc) · 2.28 KB
/
persons.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#######################################
# HelloID-Conn-Prov-Source-ilucca-Persons
#
# Version: 1.0.0
#######################################
# Initialize default value's
$config = $Configuration | ConvertFrom-Json
$secret = $config.secret
$customerUrl = $config.customerUrl
# Set debug logging
#region functions
#endregion
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
try {
$usersUri = "$customerUrl/api/v3/users?fields=lastname,firstname,dtcontractstart,dtcontractend,id,manager,extendeddata,displayName,employeeNumber,applicationData,department,userWorkCycles,jobTitle,mail&dtContractEnd=until,2050-10-15,null"
$headers = @{
'Authorization' = "Lucca application=$secret"
}
$result = Invoke-RestMethod -Uri $UsersUri -Method GET -Headers $headers
$persons = $result.data.items
$persons = $persons | Where-Object { ($_.employeeNumber -ne $null) -and ($_.employeeNumber -ne "000") }
}catch{
throw "Error querying Ilucca's users $($_.Exception.Message)"
}
foreach ($person in $persons)
{
$person | Add-Member -Name 'ExternalId' -MemberType NoteProperty -Value $person.employeeNumber
$person | Add-Member -Name 'DisplayName' -MemberType NoteProperty -Value $person.displayName
$managers = $persons | Where-Object {$_.id -eq $person.manager.id}
$contractObject = @(
[PSCustomObject]@{
ExternalId = $person.ExternalId
ContractEnd = $person.dtContractEnd
ContractStart = $person.dtContractStart
ManagerId = $person.manager.Id
ManagerEmployeeNumber = $managers.employeeNumber
ServiceId = $person.department.id
ServiceName = $person.department.name
jobTitle = $Person.jobTitle
ProfileFiggo = $Person.applicationData.profile_figgo.name
ProfileCleemy7 = $Person.applicationData.profile_cleemy_7.name
ProfileUtime = $Person.applicationData.profile_utime.name
}
)
$person | Add-Member -Name 'Contracts' -MemberType NoteProperty -Value $contractObject
Write-Output $person | ConvertTo-Json
}
Write-Information 'Users Imported'