diklabu_lehrer.psm1
<#
VERBEN: get .... findet einen Lehrer durch angabe des PK (Kürzel) set .... ändert Attribute eines Lehrers durch Angabe des PK (Kürzel) new .... erzeugt ein neuen Lehrer delete . einen Lehrer löschen NOMEN: teacher #> <# .Synopsis Attribute eines oder mehrerer Lehrer ändern .DESCRIPTION Ändert die Attribute eines oder mehrerer Lehrer .EXAMPLE Set-Teacher -ID TU -EMAIL "jtuttas@gmx.net" .EXAMPLE Set-Teacher -ID TU -NName "Dr. Tuttas" -VNAME "Jörg" .EXAMPLE "TU","BK"| Set-Teacher -VNAME "NN" #> function Set-Teacher { [CmdletBinding()] Param ( [Parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0)] [String]$ID, # Adresse des Diklabu Servers [String]$uri=$global:server, #Nachname des Lehrers [String]$NNAME, #Vorname des Lehrers [String]$VNAME, #EMAIL Adresse des Lehrers [String]$EMAIL, #TELEFON des Lehrers [String]$TELEFON, [switch]$whatif ) Begin { $headers=@{} $headers["content-Type"]="application/json;charset=iso-8859-1" $headers["auth_token"]=$global:auth_token; if (-not $global:auth_token) { Write-Error "Sie sind nicht am diklabu angemeldet, versuchen Sie login-diklabu" return; } } Process { $lehrer=echo "" | Select-Object -Property "NNAME","VNAME","TELEFON","EMAIL" $lehrer.EMAIL=$null $lehrer.TELEFON=$null $lehrer.NNAME=$null $lehrer.VNAME=$null if ($NNAME -and $NNAME.Length -ne 0) { $lehrer.NNAME=$NNAME } if ($VNAME -and $VNAME.Length -ne 0) { $lehrer.VNAME=$VNAME } if ($EMAIL -and $EMAIL.Length -ne 0) { $lehrer.EMAIL=$EMAIL } if ($TELEFON -and $TELEFON.Length -ne 0) { $lehrer.TELEFON=$TELEFON } try { if (-not $whatif) { $r=Invoke-RestMethod -Method Post -Uri ($uri+"lehrer/admin/id/"+$ID) -Headers $headers -Body (ConvertTo-Json $lehrer) } Write-Verbose "Ändere die Daten des Lehrer mit der ID $id auf $lehrer" return $r; } catch { Write-Error "Set-Teacher: Status-Code"$_.Exception.Response.StatusCode.value__ " "$_.Exception.Response.StatusDescription } } End { } } <# .Synopsis Einen odere mehrere Lehrer abfragen .DESCRIPTION Fragt einen oder mehrere Lehrer über ID (Kürzel) ab .EXAMPLE Get-Teacher -ID "TU" .EXAMPLE Get-Teacher -ID "TU" -uri http://localhost:8080/Diklabu/api/v1/ .EXAMPLE "TU","BK" | Get-Teacher #> function Get-Teacher { [CmdletBinding()] Param ( [Parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0)] [alias("ID_LEHRER")] [String]$ID, # Adresse des Diklabu Servers [String]$uri=$global:server ) Begin { $headers=@{} $headers["content-Type"]="application/json;charset=iso-8859-1" $headers["auth_token"]=$global:auth_token; if (-not $global:auth_token) { Write-Error "Sie sind nicht am diklabu angemeldet, versuchen Sie login-diklabu" return; } } Process { try { $r=Invoke-RestMethod -Method Get -Uri ($uri+"lehrer/"+$ID) -Headers $headers Write-Verbose "Abfrage der Daten des Lehrer mit der ID $ID" return $r; } catch { Write-Error "Get-Teacher: Status-Code"$_.Exception.Response.StatusCode.value__ " "$_.Exception.Response.StatusDescription } } } <# .Synopsis Alle Lehrer abfragen .DESCRIPTION Fragt alle Lehrer ab .EXAMPLE Get-Teachers .EXAMPLE Get-Teachers uri http://localhost:8080/Diklabu/api/v1/ #> function Get-Teachers { [CmdletBinding()] Param ( # Adresse des Diklabu Servers [String]$uri=$global:server ) Begin { if (-not $global:auth_token) { Write-Error "Sie sind nicht am diklabu angemeldet, versuchen Sie login-diklabu" return; } try { $r=Invoke-RestMethod -Method Get -Uri ($uri+"noauth/lehrer/") -Headers $headers Write-Verbose "Abfrage aller Lehrer" return $r; } catch { Write-Error "Get-Teachers: Status-Code"$_.Exception.Response.StatusCode.value__ " "$_.Exception.Response.StatusDescription } } } <# .Synopsis Einen neuen oder mehrere neu Lehrer anlegen .DESCRIPTION Erzeugt einen Neuen Lehrer. Bzw. importiert die Betriebe aus einer CSV Datei mit folgenden Einträgen "NNAME","VNAME","TELEFON","EMAIL","ID" .EXAMPLE New-Teacher -ID "NM" .EXAMPLE New-Teacher -ID ""NM" -NNAME "Neumann" .EXAMPLE Import-Csv lehrer.csv | New-Teacher #> function New-Teacher { [CmdletBinding()] Param ( # ID (Kürzel des Lehrers) [Parameter(Mandatory=$true,ValueFromPipeline=$true,Position=0,ValueFromPipelineByPropertyName=$true)] [String]$ID, # Adresse des Diklabu Servers [String]$uri=$global:server, #Nachname des Lehrers [Parameter(ValueFromPipelineByPropertyName=$true)] [String]$NNAME, #Vorname des Lehrers [Parameter(ValueFromPipelineByPropertyName=$true)] [String]$VNAME, # Telefon des Lehrers [Parameter(ValueFromPipelineByPropertyName=$true)] [String]$TELEFON, #Email Adresse des Lehrers [Parameter(ValueFromPipelineByPropertyName=$true)] [String]$EMAIL, [switch]$whatif ) Begin { $headers=@{} $headers["content-Type"]="application/json;charset=iso-8859-1" $headers["auth_token"]=$global:auth_token; if (-not $global:auth_token) { Write-Error "Sie sind nicht am diklabu angemeldet, versuchen Sie login-diklabu" return; } } Process { $lehrer=echo "" | Select-Object -Property "id","NNAME","VNAME","TELEFON","EMAIL" $lehrer.NNAME=$NNAME $lehrer.VNAME=$VNAME $lehrer.TELEFON=$TELEFON $lehrer.EMAIL=$EMAIL $lehrer.id=$ID try { if (-not $whatif) { $r=Invoke-RestMethod -Method Post -Uri ($uri+"lehrer/admin/") -Headers $headers -Body (ConvertTo-Json $lehrer) } Write-Verbose "Lege neuen Lehrer an mit den Daten $lehrer" return $r; } catch { Write-Error "New-Lehrer: Status-Code"$_.Exception.Response.StatusCode.value__ " "$_.Exception.Response.StatusDescription } } } <# .Synopsis Einen oder mehrere Lehrer(e) löschen .DESCRIPTION Löscht einen oder mehrere Lehrer in der Tabelle LEHRER .EXAMPLE Delete-Teacher -ID "NM" .EXAMPLE Delete-Teacher -ID "NM" -uri http://localhost:8080/Diklabu/api/v1/ .EXAMPLE "NN","NM" | Delete-Teacher #> function Delete-Teacher { [CmdletBinding()] Param ( [Parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0)] [String]$ID, # Adresse des Diklabu Servers [String]$uri=$global:server, [switch]$whatif ) Begin { if (-not $global:auth_token) { Write-Error "Sie sind nicht am diklabu angemeldet, versuchen Sie login-diklabu" return; } $headers=@{} $headers["content-Type"]="application/json;charset=iso-8859-1" $headers["auth_token"]=$global:auth_token; } Process { try { if (-not $whatif) { $r=Invoke-RestMethod -Method Delete -Uri ($uri+"lehrer/admin/"+$ID) -Headers $headers } Write-Verbose "Lösche Lehrer mit der ID $ID" return $r; } catch { Write-Error "Delete-Teacher: Status-Code"$_.Exception.Response.StatusCode.value__ " "$_.Exception.Response.StatusDescription } } } <# .Synopsis Die Lehrer eine Klasse abfragen .DESCRIPTION Fragt die Lehrer einer odere mehrerer KLassen ab .EXAMPLE Get-CourseTeacher -ID 1660 .EXAMPLE Get-CourseTeacher -ID 1660 -uri http://localhost:8080/Diklabu/api/v1/ .EXAMPLE 1660,1659 | Get-CourseTeacher #> function Get-CourseTeacher { [CmdletBinding()] Param ( [Parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0)] [alias("ID_COURSE")] [String]$ID, # Adresse des Diklabu Servers [String]$uri=$global:server ) Begin { $headers=@{} $headers["content-Type"]="application/json;charset=iso-8859-1" $headers["auth_token"]=$global:auth_token; if (-not $global:auth_token) { Write-Error "Sie sind nicht am diklabu angemeldet, versuchen Sie login-diklabu" return; } } Process { try { $r=Invoke-RestMethod -Method Get -Uri ($uri+"klasse/lehrer/"+$ID) -Headers $headers Write-Verbose "Abfrage der Lehrer der Klasse mit der ID $ID" return $r; } catch { Write-Error "Get-CourseTeacher: Status-Code"$_.Exception.Response.StatusCode.value__ " "$_.Exception.Response.StatusDescription } } } <# .Synopsis Einen Lehrer einer Klasse zuweisen .DESCRIPTION Weist einen Lehrer eine Klasse zu .EXAMPLE Add-CourseTeacher -ID "NM" -ID_COURSE 1660 .EXAMPLE Import-Csv lehrer.csv | Add-CourseTeacher #> function Add-CourseTeacher { [CmdletBinding()] Param ( # ID (Kürzel des Lehrers) [Parameter(Mandatory=$true,ValueFromPipeline=$true,Position=0,ValueFromPipelineByPropertyName=$true)] [String]$ID, # ID der Klasse [Parameter(Mandatory=$true,ValueFromPipeline=$true,Position=1,ValueFromPipelineByPropertyName=$true)] [String]$ID_COURSE, # Adresse des Diklabu Servers [String]$uri=$global:server, [switch]$whatif ) Begin { $headers=@{} $headers["content-Type"]="application/json;charset=iso-8859-1" $headers["auth_token"]=$global:auth_token; if (-not $global:auth_token) { Write-Error "Sie sind nicht am diklabu angemeldet, versuchen Sie login-diklabu" return; } } Process { $lehrer_klasse=echo "" | Select-Object -Property "ID_LEHRER","ID_KLASSE" $lehrer_klasse.ID_LEHRER=$ID; $lehrer_klasse.ID_KLASSE=$ID_COURSE; try { if (-not $whatif) { $r=Invoke-RestMethod -Method Post -Uri ($uri+"klasse/verwaltung/lehrer/add/") -Headers $headers -Body (ConvertTo-Json $lehrer_klasse) if ($r.success -eq $false) { Write-Warning $r.msg; } } Write-Verbose "Trage Lehrer mit ID=$ID in die Klasse mit der ID=$ID_COURSE ein!" return $r; } catch { Write-Error "Add-CourseLehrer: Status-Code"$_.Exception.Response.StatusCode.value__ " "$_.Exception.Response.StatusDescription } } } <# .Synopsis Einen Lehrer aus einer Klasse entfernen .DESCRIPTION Entfernt einen oder mehrere Lehrer aus einer Klasse .EXAMPLE Remove-CourseTeacher -ID "NM" -ID_COURSE=1660 #> function Remove-CourseTeacher { [CmdletBinding()] Param ( [Parameter(Mandatory=$true,Position=0)] [String]$ID, [Parameter(Mandatory=$true,Position=1)] [int]$ID_COURSE, # Adresse des Diklabu Servers [String]$uri=$global:server, [switch]$whatif ) Begin { if (-not $global:auth_token) { Write-Error "Sie sind nicht am diklabu angemeldet, versuchen Sie login-diklabu" return; } $headers=@{} $headers["content-Type"]="application/json;charset=iso-8859-1" $headers["auth_token"]=$global:auth_token; } Process { try { if (-not $whatif) { $r=Invoke-RestMethod -Method Delete -Uri ($uri+"klasse/verwaltung/lehrer/"+$ID+"/"+$ID_COURSE) -Headers $headers if ($r.success -eq $false) { Write-Warning $r.msg; } } Write-Verbose "Entferne Lehrer mit der ID $ID aus der Klasse mit der ID=$ID_COURSE" return $r; } catch { Write-Error "Remove-CourseTeacher: Status-Code"$_.Exception.Response.StatusCode.value__ " "$_.Exception.Response.StatusDescription } } } <# .Synopsis Synchronisert die Lehrer einer Klasse .DESCRIPTION Synchronisiert die Lehrer einer Klasse .EXAMPLE Sync-CourseTeacher -ID "NM","BK" -ID_COURSE=1660 .EXAMPLE "NM","BK" | Sync-CourseTeacher -ID_COURSE=1660 #> function Sync-CourseTeacher { [CmdletBinding()] Param ( [Parameter(Mandatory=$true,ValueFromPipeline=$true,Position=0)] [String[]]$ID, [Parameter(Mandatory=$true,Position=1)] [int]$ID_COURSE, # Adresse des Diklabu Servers [String]$uri=$global:server, [switch]$whatif ) Begin { if (-not $global:auth_token) { Write-Error "Sie sind nicht am diklabu angemeldet, versuchen Sie login-diklabu" return; } $headers=@{} $headers["content-Type"]="application/json;charset=iso-8859-1" $headers["auth_token"]=$global:auth_token; Write-Verbose "Abfrage der Lehrer der KLasse $ID_COURSE" $in = Get-CourseTeacher -ID $ID_COURSE $ist=@{}; foreach ($teacher in $in) { $ist[$teacher.id]=$teacher; } } Process { $ID | ForEach-Object { if ($ist[$_]) { Write-Verbose "Der Lehrer $_ befindet sich bereits im Kurs $ID_COURSE"; $ist.Remove($_); } else { if (-not $whatif) { $r=Add-CourseTeacher -ID $_ -ID_COURSE $ID_COURSE } } } } End { #Write-Verbose "Entferne Lehrer aus der Klasse $ID_COURSE" $ist.Keys | % { #"key = $_ , value = " + $ist.Item($_) Write-Verbose "Entferne Lehrer $_ aus der Klasse $ID_COURSE"; if (-not $whatif) { $r=Remove-CourseTeacher -ID $_ -ID_COURSE $ID_COURSE } } } } |