functions/Get-MergedCoursesWithoutTerm.ps1
<#
.Synopsis Given a term id, it returns all merged shells with no semester set. .DESCRIPTION Given a term id, it returns all merged shells with no semester set. .EXAMPLE $Terms = Get-BBTerms -TargetTerm AllCurrent -Verbose $MergedCoursesWithoutTerm = @() foreach($Term in $Terms){ $MergedCoursesWithoutTerm += Get-MergedCoursesWithoutTerm -TermId $Term.Id -Verbose } #> function Get-BBMergedCoursesWithoutTerm { [CmdletBinding()] [Alias()] Param ( [parameter(mandatory)][string]$TermId ) Begin { } Process { $ChildCourses = @() $ParentCourses = @() $ParentCoursesWithOutTerms = @() $Term = Get-BBTerms -TermId $TermId #Get All Courses for that term $Courses = Get-BBCourses -Filter "termId=$($Term.id)" #Get All CrossListed courses for that term while displaying a progress bar $Courses | foreach-Object -Begin{ $Counter = 0 } -Process { $Counter += 1 Write-Verbose "Processing Courses Progress: $($Counter)/$($Courses.count) ($($($Counter)/$($Courses.count))) [$($_.id)] Percent Complete: $(($($Counter)/$($Courses.count))*100)" $ChildCourses += Get-BBCrossListSet -CourseID $_.id } -End {} #Determine the unique parents for all crosslitsted courses retrured, and then get each course from the rest api. $ParentCourses = $ChildCourses | sort-object -Property {$_.parentId} -Unique | foreach-object { Get-BBCourses -CourseID $_.parentId } #Return all parent courses for that semester which don't have a semester set. $ParentCoursesWithOutTerms = $ParentCourses | where-object {$null -eq $_.termId} return $ParentCoursesWithOutTerms } End { } } |