Functions/BusinessLayer/Department.ps1
|
function Get-OIMDepartment { <# .SYNOPSIS Gets one or more Department objects. .EXAMPLE Get-OIMDepartment -DepartmentName 'Finance' .EXAMPLE Get-OIMDepartment -id $uid #> [CmdletBinding(DefaultParameterSetName = 'Search')] param( [Parameter(ParameterSetName = 'Single', Mandatory = $true)] [Alias('uid')] [string]$id, [Parameter(ParameterSetName = 'Search')] [string]$DepartmentName, [Parameter(ParameterSetName = 'Search')] [string]$Where, [Parameter(ParameterSetName = 'Search')] [int]$First ) if ($PSCmdlet.ParameterSetName -eq 'Single') { Get-OIMObject -ObjectName Department -id $id return } $conditions = [Collections.Generic.List[string]]::new() if ($PSBoundParameters.ContainsKey('DepartmentName')) { $conditions.Add("DepartmentName = '$($DepartmentName | ConvertTo-SQLLiteral)'") } if ($PSBoundParameters.ContainsKey('Where')) { $conditions.Add("($Where)") } $getParams = @{ ObjectName = 'Department' } if ($conditions.Count -gt 0) { $getParams['Where'] = $conditions -join ' AND ' } if ($PSBoundParameters.ContainsKey('First')) { $getParams['First'] = $First } Get-OIMObject @getParams } function New-OIMDepartment { <# .SYNOPSIS Creates a Department object. .PARAMETER ParentDepartment A Department object (as returned by Get-OIMDepartment) or UID string to nest this department under. .PARAMETER checkexists If a Department with the given -DepartmentName already exists, return it instead of creating a duplicate. .EXAMPLE New-OIMDepartment -DepartmentName 'Finance' -ShortName FIN #> [CmdletBinding(SupportsShouldProcess)] param( [Parameter(Mandatory = $true)] [string]$DepartmentName, [string]$ShortName, $ParentDepartment, [hashtable]$Properties = @{}, [switch]$checkexists ) if ($checkexists) { $existing = Get-OIMDepartment -DepartmentName $DepartmentName if ($null -ne $existing) { return $existing } } $allProperties = @{ DepartmentName = $DepartmentName } if ($PSBoundParameters.ContainsKey('ShortName')) { $allProperties['ShortName'] = $ShortName } if ($PSBoundParameters.ContainsKey('ParentDepartment')) { $allProperties['UID_ParentDepartment'] = ConvertTo-OIMUID -InputObject $ParentDepartment -PropertyName UID_Department } foreach ($key in $Properties.Keys) { $allProperties[$key] = $Properties[$key] } if ($PSCmdlet.ShouldProcess($DepartmentName, 'Create Department')) { New-OIMObject -ObjectName Department -Properties $allProperties -Confirm:$false } } function Set-OIMDepartment { <# .SYNOPSIS Updates properties on one or more Department objects. .EXAMPLE Get-OIMDepartment -DepartmentName Finance | Set-OIMDepartment -Properties @{ShortName = 'FIN'} #> [CmdletBinding(SupportsShouldProcess)] param( [Parameter(Mandatory = $true, ValueFromPipeline = $true)] $Object, [Parameter(Mandatory = $true)] [hashtable]$Properties ) Process { if ($PSCmdlet.ShouldProcess("$($Object.UID_Department)", 'Update Department')) { $Object | Set-OIMObject -Properties $Properties -Confirm:$false } } } function Remove-OIMDepartment { <# .SYNOPSIS Removes one or more Department objects. .EXAMPLE Get-OIMDepartment -DepartmentName Finance | Remove-OIMDepartment #> [CmdletBinding(SupportsShouldProcess)] param( [Parameter(Mandatory = $true, ValueFromPipeline = $true)] $Object ) Process { if ($PSCmdlet.ShouldProcess("$($Object.UID_Department)", 'Remove Department')) { $Object | Remove-OIMObject -Confirm:$false } } } |