public/Set-CTStudent.ps1
function Set-CTStudent { [CmdletBinding(SupportsShouldProcess)] param ( [Parameter(Mandatory, Position=0, ValueFromPipelineByPropertyName)] [Alias('Id')] [int]$StudentId, [Parameter(Mandatory, ValueFromPipelineByPropertyName)] [string]$UniqueName, [Parameter(ValueFromPipelineByPropertyName)] [string] $Name, [Parameter(ValueFromPipelineByPropertyName)] [string] $Title, [Parameter(ValueFromPipelineByPropertyName)] [int] $DepartmentId, [Parameter(ValueFromPipelineByPropertyName)] [string] $Sex, [Parameter(ValueFromPipelineByPropertyName)] [datetime] $DateOfBirth, [Parameter(ValueFromPipelineByPropertyName)] [string] $Address1, [Parameter(ValueFromPipelineByPropertyName)] [string] $Address2, [Parameter(ValueFromPipelineByPropertyName)] [string] $Address3, [Parameter(ValueFromPipelineByPropertyName)] [string] $Address4, [Parameter(ValueFromPipelineByPropertyName)] [string] $Postcode, [Parameter(ValueFromPipelineByPropertyName)] [int] $RoomId, [Parameter(ValueFromPipelineByPropertyName)] [string] $AcademicYear, [Parameter(ValueFromPipelineByPropertyName)] [int] $TutorId, [Parameter(ValueFromPipelineByPropertyName)] [string] $Custom1, [Parameter(ValueFromPipelineByPropertyName)] [string] $Custom2, [Parameter(ValueFromPipelineByPropertyName)] [string] $Custom3, [Parameter(ValueFromPipelineByPropertyName)] [string] $CardNumber, [Parameter(ValueFromPipelineByPropertyName)] [int] $WeeklyTarget, [Parameter(ValueFromPipelineByPropertyName)] [int] $TotalTarget, [Parameter(ValueFromPipelineByPropertyName)] [bool] $Schedulable, [Parameter(ValueFromPipelineByPropertyName)] [Alias('OfficePhone')] [string] $OfficeTelephone, [Parameter(ValueFromPipelineByPropertyName)] [Alias('HomePhone')] [string] $HomeTelephone, [Parameter(ValueFromPipelineByPropertyName)] [Alias('Mobile')] [Alias('MobilePhone')] [string] $MobileTelephone, [Parameter(ValueFromPipelineByPropertyName)] [string] $Fax, [Parameter(ValueFromPipelineByPropertyName)] [Alias('EmailAddress')] [string] $Email, [Parameter(ValueFromPipelineByPropertyName)] [Alias('HomePage')] [string] $WebAddress, [Parameter(ValueFromPipelineByPropertyName)] [string] $StudentProfile, [Parameter(ValueFromPipelineByPropertyName)] [string] $PhotoFile, [Parameter(ValueFromPipelineByPropertyName)] [bool] $DeafLoop, [Parameter(ValueFromPipelineByPropertyName)] [bool] $WheelchairAccess, [Parameter(ValueFromPipelineByPropertyName)] [string] $Notes, [Parameter(ValueFromPipelineByPropertyName)] [string] $LookupId1, [Parameter(ValueFromPipelineByPropertyName)] [string] $LookupId2, [Parameter(ValueFromPipelineByPropertyName)] [string] $LookupId3, [Parameter(ValueFromPipelineByPropertyName)] [int] $OriginId, [Parameter(ValueFromPipelineByPropertyName)] [string] $OriginalId, [switch] $PassThru ) begin { $url = $Script:_ctUri $token = $Script:_ctApiCode if (!$url -or !$token) { throw 'You must call the Connect-CT cmdlet before calling any other cmdlets.' } $headers = @{ ApiCode = $token } if ($Script:_ctTimetableId) { $headers.TimetableId = $Script:_ctTimetableId } } process { $path = "/api/students/$StudentID" $uri = [uri]::new($url, $path) $body = [PSCustomObject]@{ id = $StudentId uniqueName = $UniqueName name = $Name title = $Title departmentId = if ($PSBoundParameters.ContainsKey('DepartmentId')) { $DepartmentId } else { $null } sex = $Sex dateOfBirth = $DateOfBirth address1 = $Address1 address2 = $Address2 address3 = $Address3 address4 = $Address4 postcode = $Postcode roomId = if ($PSBoundParameters.ContainsKey('RoomId')) { $RoomId } else { $null } academicYear = $AcademicYear tutorId = if ($PSBoundParameters.ContainsKey('TutorId')) { $TutorId } else { $null } custom1 = $Custom1 custom2 = $Custom2 custom3 = $Custom3 cardNumber = $CardNumber weeklyTarget = if ($PSBoundParameters.ContainsKey('WeeklyTarget')) { $WeeklyTarget } else { $null } totalTarget = if ($PSBoundParameters.ContainsKey('TotalTarget')) { $TotalTarget } else { $null } schedulable = if ($PSBoundParameters.ContainsKey('Schedulable')) { $Schedulable } else { $null } officeTelephone = $OfficeTelephone homeTelephone = $HomeTelephone mobileTelephone = $MobileTelephone fax = $Fax email = $Email webAddress = $WebAddress profile = $StudentProfile deafLoop = if ($PSBoundParameters.ContainsKey('DeafLoop')) { $DeafLoop } else { $null } wheelchairAccess = if ($PSBoundParameters.ContainsKey('WheelchairAccess')) { $WheelchairAccess } else { $null } notes = $Notes lookupId1 = $LookupId1 lookupId2 = $LookupId2 lookupId3 = $LookupId3 originId = if ($PSBoundParameters.ContainsKey('OriginId')) { $OriginId } else { $null } originalId = $OriginalId } if ($PSCmdlet.ShouldProcess("$UniqueName - $StudentID", 'Update student.')) { Invoke-RestMethod -Uri $uri -Headers $headers -Method Put -Body (ConvertTo-Json $body) -ContentType 'application/json' | Out-Null } if ($PassThru) { return $body | Add-Member -MemberType AliasProperty -Name StudentId -Value Id -PassThru } } } |