examples/Process-AthleticObservers.ps1

#Import Useful Modules
Import-Module .\PSBlackboard.psm1 -Verbose -force
#$NewDataSource = Set-BBDataSource -ExternalId "LMSConnect" -description "Used for processing Athletic Observer Users and Assiciations" -Verbose
# Get a list of users

# Get datasources
$Datasources = Get-BBDataSources -ExternalId 'ATHLETICS_OBSERVERS' -Verbose

$Observers = Get-BBUsers -Filter 'userName:obs-' -verbose

#Location of the file to pull information from:
# Note, headers should be as follows:
# CMU ID Sport
#If additional headers are there, it's fine. It must be an excel document, though.
#Install-Module -Name ImportExcel
$PSScriptRoot = 'C:\Users\it-jacks3m\Desktop\bb-athletics-observer-parser-master'
$ticketnumber = "4000473"
$importFile = $PSScriptRoot+"\input\$($ticketnumber).xlsx"
$outputFile = $PSScriptRoot+"\output\$($ticketnumber)_Associations.txt"
#$newUserFile = $PSScriptRoot+"\output\$($ticketnumber)_NewUsers.txt"
$erroroutputFile =  $PSScriptRoot+"\output\$($ticketnumber)_Errors.txt"
Clear-Content $outputFile
Clear-Content $erroroutputFile

$studentAthletes = Import-Excel -Path ($importFile) -ErrorAction Stop

Write-Output "Number of Student Athletes: $($studentAthletes.length)"

#$Observers = @("cotto1js", "albre2tl", "maria1l", "batty1m", "peaco1ml", "weave2ta", "griff7c", "blunt2r")

$sportSpecific = @{
    "Baseball" = @("obs-cotto1js", "obs-weave2ta");
    "Men's Basketball" = @("obs-dance1mr");
    "Men's Cross Country" = @("obs-weave2ta","obs-cotto1js");
    "Men's Football" = @("obs-dance1mr","obs-maria1l");
    "Men's Indoor Track" = @("obs-weave2ta","obs-cotto1js");
    "Men's Outdoor Track" = @("obs-weave2ta","obs-cotto1js");
    "Men's Wrestling" = @("obs-batty1m");
    "Women's Basketball" = @("obs-cotto1js","obs-weave2ta");
    "Women's Cross Country" = @("obs-weave2ta","obs-cotto1js");
    "Women's Field Hockey" = @("obs-batty1m");
    "Women's Golf" = @("obs-batty1m","obs-weave2ta");
    "Women's Gymnastics" = @("obs-dance1mr");
    "Women's Indoor Track" = @("obs-weave2ta","obs-cotto1js");
    "Women's Lacrosse" = @("obs-batty1m");
    "Women's Outdoor Track" = @("obs-weave2ta","obs-cotto1js");
    "Women's Soccer" = @("obs-batty1m");
    "Women's Softball" = @("obs-maria1l");
    "Women's Volleyball" = @("obs-cotto1js","obs-weave2ta");
    }

$allSports = @("obs-griff7c","obs-blunt2r")

$conn=new-object System.Data.SqlClient.SQLConnection
$ConnectionString = "Server=it-webdb.central.cmich.local;Database=ADBFeed;Integrated Security=True;"
$conn.ConnectionString=$ConnectionString
$conn.Open()

"external_user_key|external_observer_key|data_source_key" | Out-File $outputFile

foreach ($athlete in $studentAthletes) {

    $cmid = $athlete."Campus ID"
    $firstname = $athlete."First Name"
    $lastname = $athlete."Last Name"
    $sport = $athlete."Athlete Code description"

    Write-Output "($($cmid)) is a $($sport) Student-Athlete"

    if (![string]::IsNullOrWhiteSpace($cmid)) {
        $get_user = Get-BBUsers -ExternalId 'obs-albre2tl' -verbose
        $Observers = Get-BBUsers -ExternalId 'obs-albre2tl' -verbose





        $get_user = New-Object System.Data.SqlClient.SqlCommand("SELECT user_id FROM users WHERE student_id LIKE '%$($cmid)'",$conn)
        $user_data_reader = $get_user.ExecuteReader()
        if($user_data_reader.Read()) {
            $gid = $user_data_reader.GetString(0)

            foreach ($observer in $allSports) {
            "$($gid)|$($observer)|ATHLETICS_OBSERVER" | Out-File $outputFile -Append
            Write-Host "`t`tAssign $($observer) who gets all sports"
        }

        if ($sportSpecific.ContainsKey($sport)) {
            foreach ($observer in $sportSpecific.Get_Item($sport)) {
                "$($gid)|$($observer)|ATHLETICS_OBSERVER" | Out-File $outputFile -Append
                Write-Host "`t`tAssign $($observer) who gets $($sport)"
            }
        }
        } else {
            #$gid = "ERROR_DO_NOT_SUBMIT_THIS_LINE - $cmid"
           "$cmid $firstname $lastname was not found in blackboard. This usually means they are not an admitted student."| Out-File  $erroroutputFile -Append
        }
        $user_data_reader.Close()


    }
}

Invoke-Item $PSScriptRoot