Skip to content

Commit 1c4e9f4

Browse files
committed
Feat: Add add Room list function
1 parent daf1a22 commit 1c4e9f4

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
using namespace System.Net
2+
3+
Function Invoke-AddRoomList {
4+
<#
5+
.FUNCTIONALITY
6+
Entrypoint
7+
.ROLE
8+
Exchange.Room.ReadWrite
9+
#>
10+
[CmdletBinding()]
11+
param($Request, $TriggerMetadata)
12+
13+
$APIName = $Request.Params.CIPPEndpoint
14+
$Headers = $Request.Headers
15+
Write-LogMessage -headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'
16+
17+
$Tenant = $Request.Body.tenantFilter ?? $Request.Body.tenantid
18+
19+
$Results = [System.Collections.Generic.List[Object]]::new()
20+
$RoomListObject = $Request.Body
21+
22+
# Construct email address from username and domain
23+
$EmailAddress = if ($RoomListObject.primDomain.value) {
24+
"$($RoomListObject.username)@$($RoomListObject.primDomain.value)"
25+
} else {
26+
"$($RoomListObject.username)@$($Tenant)"
27+
}
28+
29+
# Parameters for New-DistributionGroup with RoomList
30+
$AddRoomListParams = @{
31+
Name = $RoomListObject.username
32+
DisplayName = $RoomListObject.displayName
33+
RoomList = $true
34+
PrimarySMTPAddress = $EmailAddress
35+
}
36+
37+
# Add optional parameters if they exist
38+
if (![string]::IsNullOrWhiteSpace($RoomListObject.description)) {
39+
$AddRoomListParams.Notes = $RoomListObject.description
40+
}
41+
42+
if (![string]::IsNullOrWhiteSpace($RoomListObject.alias)) {
43+
$AddRoomListParams.Alias = $RoomListObject.alias
44+
}
45+
46+
try {
47+
$AddRoomListRequest = New-ExoRequest -tenantid $Tenant -cmdlet 'New-DistributionGroup' -cmdParams $AddRoomListParams
48+
$Results.Add("Successfully created room list: $($RoomListObject.displayName).")
49+
Write-LogMessage -Headers $Headers -API $APINAME -tenant $Tenant -message "Created room list $($RoomListObject.displayName) with id $($AddRoomListRequest.identity)" -Sev 'Info'
50+
51+
$StatusCode = [HttpStatusCode]::OK
52+
} catch {
53+
$ErrorMessage = Get-CippException -Exception $_
54+
$Message = "Failed to create room list: $($RoomListObject.displayName). Error: $($ErrorMessage.NormalizedError)"
55+
Write-LogMessage -Headers $Headers -API $APIName -tenant $Tenant -message $Message -Sev 'Error' -LogData $ErrorMessage
56+
$Results.Add($Message)
57+
$StatusCode = [HttpStatusCode]::InternalServerError
58+
}
59+
60+
$Body = [pscustomobject] @{ 'Results' = @($Results) }
61+
# Associate values to output bindings by calling 'Push-OutputBinding'.
62+
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
63+
StatusCode = $StatusCode
64+
Body = $Body
65+
})
66+
}

0 commit comments

Comments
 (0)