diklabu_coursemember.psm1

<#
    VERBEN:
        find ... Listet die Schüler auf, die sich in der / den via Namen angegebenen Klassen befinden
        get .... Listet die Schüler auf, die sich in der / den via ID angegebenen Klassen befinden
        get .... Listet die Klassen auf, in der sich ein Schüler befindet
        Add .... Fügt einen oder mehrere Schüler einer Klasse Hinzu
        Remove . Entfernt einen oder mehrere Schüler aus einer Klasse
    Nome:
        CourseMember
        Membership
#>


<#
.Synopsis
   Einen oder mehrere Schüler eine Klasse zuweisen
.DESCRIPTION
   Fügt einen oder mehrere Schüler einer Klasse hinzu.
.EXAMPLE
   Add-Coursemember -id 3623 -klassenid 612
.EXAMPLE
   Add-Coursemember -id 3623 -klassenid 612 -uri http://localhost:8080/Diklabu/api/v1/
.EXAMPLE
   11234,5678,7654 | Add-Coursemember -klassenid 612 -uri http://localhost:8080/Diklabu/api/v1/
.EXAMPLE
   Find-Pupil -VNAME % -NNAME % -GEBDAT 1968-04-12 | Add-Coursemember -klassenid 612 -uri http://localhost:8080/Diklabu/api/v1/
   Fügt die Schüler die an dem 12.4.1968 geboren wurden der Klasse hinzu
.EXAMPLE
   Import-Csv schueler.csv | Find-Pupil | Add-Coursemember -klassenid 612 -uri http://localhost:8080/Diklabu/api/v1/
   Fügt die Schüler in der enthaltenener CSV Datei der Klasse hinzu, die CSV Datei hat dabei folgendes Format:
   "GEBDAT","NNAME","VNAME"
    "1968-04-11","Tuttas","Jörg"
    "1968-04-11","Tuttas","Joerg"
.EXAMPLE
   Find-Coursemember FISI13A | Add-Coursemember -klassenid 612 -uri http://localhost:8080/Diklabu/api/v1/
   Fügt die Schüler der Klasse Fisi13A in die Klasse mit der id 612 ein
#>

function Add-Coursemember
{
    Param
    (
        # ID des Schülers
        [Parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
        [int]$id,

        # id der Klasse
        [Parameter(Mandatory=$true,Position=0)]
        [int]$klassenid,

        # 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;
    }
    Process
    {
        $rel=echo "" | Select-Object -Property "ID_SCHUELER","ID_KLASSE"
        $rel.ID_SCHUELER=$id
        $rel.ID_KLASSE=$klassenid
        try {
            if (-not $whatif) {
                $r=Invoke-RestMethod -Method Post -Uri ($uri+"klasse/verwaltung/add") -Headers $headers  -Body (ConvertTo-Json $rel)
            }
            Write-Verbose "Schüler mit der ID $id der Klasse mit der ID $klassenid hinzugefügt"
            return $r;
        } catch {
            Write-Error "Add-Coursemember: Status-Code"$_.Exception.Response.StatusCode.value__ " "$_.Exception.Response.StatusDescription 
        }

    }
    End
    {
    }
}


<#
.Synopsis
   Schüler einer oder mehrere Klasse abfragen
.DESCRIPTION
   Liefert die Schülerobjekte einer oder mehrere Klasse(n). Dabei ist das %-Zeichen der Wirldcard
.EXAMPLE
   Find-Coursemember -KNAME FISI13A
.EXAMPLE
   Find-Coursemember -KNAME FISI13% -uri http://localhost:8080/Diklabu/api/v1/
.EXAMPLE
   "FISI13%","SYK13%" | Find-Coursemember
.EXAMPLE
   Import-Csv klasse.csv | Find-Coursemember
   Liefert die Schülerobjekte der in der CSV gelisteten Klassen, die CSV Datei hat dabei folgendes Format
   "KNAME"
   "WPK_TU_lila"
   "FISI13A"
#>

function Find-Coursemember
{
    Param
    (
        
        # Name der Klasse
        [Parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0)]
        [String]$KNAME,

        # 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;
    }
    Process
    {
        try {
            $r=Invoke-RestMethod -Method Get -Uri ($uri+"klasse/"+$KNAME) -Headers $headers  
            Write-Verbose "Finde Klassenmitglieder der Klasse $KNAME. Ergebnis $r"
            return  $r;
         } catch {
            Write-Error "Find-Coursemember: Status-Code"$_.Exception.Response.StatusCode.value__ " "$_.Exception.Response.StatusDescription 
        }
    }
}

<#
.Synopsis
   Schüler einer oder mehrere Klasse(n) abfragen
.DESCRIPTION
   Liefert die Schülerobjekte einer oder mehrere Klasse(n).
.EXAMPLE
   Get-Coursemember -id 1234
.EXAMPLE
   Get-Coursemember -id 1234 -uri http://localhost:8080/Diklabu/api/v1/
.EXAMPLE
   1234,5678 | Get-Coursemember
#>

function Get-Coursemember
{
    Param
    (         
        # id der Klasse
        [Parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0)]
        [int]$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;
    }
    Process
    {
        try {
            $r=Invoke-RestMethod -Method Get -Uri ($uri+"klasse/member/"+$id) -Headers $headers  
            Write-Verbose "Finde Schüler der Klasse mit der ID $id Ergebnis:$r"
            return  $r;
         } catch {
            Write-Error "Get-Coursemember: Status-Code"$_.Exception.Response.StatusCode.value__ " "$_.Exception.Response.StatusDescription 
        }
    }
}

<#
.Synopsis
   Klassenzugehörigkeit eines Schülers abfragen
.DESCRIPTION
   Liefert die Klassenobjekte einer oder mehrere Schüler.
.EXAMPLE
   Get-Coursemembership -id 1234
.EXAMPLE
   Get-Coursemembership -id 1234 -uri http://localhost:8080/Diklabu/api/v1/
.EXAMPLE
   1234,5678 | Get-Coursemembership
#>

function Get-Coursemembership
{
    Param
    (         
        # id des Schülers
        [Parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0)]
        [int]$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;
    }
    Process
    {
        try {
            $r=Invoke-RestMethod -Method Get -Uri ($uri+"schueler/member/"+$id) -Headers $headers  
            Write-Verbose "Abfrage der Klassen in der sich der Schüler mit der ID $id befindet. Ergebnis: $r"
            return  $r;
         } catch {
            Write-Error "Get-Membership: Status-Code"$_.Exception.Response.StatusCode.value__ " "$_.Exception.Response.StatusDescription 
        }
    }
}


<#
.Synopsis
   Einen oder mehrere Schüler aus einer Klasse entfernen
.DESCRIPTION
   Löscht einen oder mehrere Schüler mit der id aus der Klasse mit der klassenid
.EXAMPLE
   Remove-Coursemember -id 1234 -klassenid 1234
.EXAMPLE
   Remove-Coursemember -id 1234 -klassenid 1234 -uri http://localhost:8080/Diklabu/api/v1/
.EXAMPLE
  123,456,789| Remove-Coursemember -klassenid 1234 -uri http://localhost:8080/Diklabu/api/v1/
.EXAMPLE
  Find-Pupil -VNAME % -NNAME % -GEBDAT 1968-04-12| Remove-Coursemember -klassenid 1234
   Löscht die Schüler , die am 12.4.1968 geboren sind aus der Klasse mit der id 1234
.EXAMPLE
  Import-CSV schueler.csv | Find-Pupil | Remove-Coursemember -klassenid 1234
   Löscht die Schüler , die in der CSV Datei enthalten sind aus der Klasse mit der ID 1234. Die CSV Datei hat dabei folgendes Aussehen
   "GEBDAT","NNAME","VNAME"
   "1968-04-11","Tuttas","Jörg"
.EXAMPLE
  Find-Coursemember FISI13A | Remove-Coursemember -klassenid 1234
   Löscht die Schüler aus der Klasse Fisi13A in der Klasse mit der ID 1234.
#>

function Remove-Coursemember
{
    Param
    (       
        # id des Schülers
        [Parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
        [int]$id,

        # ID der klasse
        [Parameter(Mandatory=$true,Position=0)]
        [int]$klassenid,

        # 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;
    }
    Process
    {
          try {
              if (-not $whatif) {
                $r=Invoke-RestMethod -Method Delete -Uri ($uri+"klasse/verwaltung/"+$id+"/"+$klassenid) -Headers $headers 
              }
              Write-Verbose "Entferne Schüler mit der ID $id aus der Klasse mit der ID $klassenid"
              return $r;
           } catch {
              try {
              Login-Diklabu
              if (-not $whatif) {
                $r=Invoke-RestMethod -Method Delete -Uri ($uri+"klasse/verwaltung/"+$id+"/"+$klassenid) -Headers $headers 
              }
              Write-Verbose "Entferne Schüler mit der ID $id aus der Klasse mit der ID $klassenid"
              return $r;
              }
              catch {
                Write-Error "Remove-Coursemember failed!"
              }
        }
    }
    End
    {
    }
}