Functions/Public/Get-RCDossier.ps1

Function Get-RCDossier {
    <#
    .SYNOPSIS
    Liste les dossiers sur les quels les députes ont travaillés-
     
    .DESCRIPTION
    Un dossier est un sujet sur le quel le gouvernement ce va débattre. Il en résulte souvent un rapport, et peut déboucher sur une proposition de texte de loi.
    Cette loi n'est pas obligatoirement adopté.
     
    .PARAMETER id
    Le parametre ID permet de filtrer les retours sur un dossier particulier
 
     
    .PARAMETER Full
    Dans un soucis d'éfficacité, pas toutes les données ne sont récuprer lors des requetes.
    Pour retourner toutes les données, il faut utiliser le paramtre 'Full' qui recuprerer toutes les donnees d'une dossier.
    La requête sera elle plus gourmande, et pourra mettre un peu plus de temps a ce finaliser.
     
 
     
    .EXAMPLE
    Get-RCDossier
 
    id : 2072
    Titre : Accès à l'eau
    MinDate : 2/1/2018 12:00:00 AM
    MaxDate : 2/1/2018 12:00:00 AM
    NbInterventions : 92
    Intervenants :
    Seances :
    Documents :
    SousSection :
 
    id : 1557
    Titre : Accord de partenariat entre l'union européenne et le kazakhstan
    MinDate : 12/18/2017 12:00:00 AM
    MaxDate : 12/18/2017 12:00:00 AM
    NbInterventions : 41
    Intervenants :
    Seances :
    Documents :
    SousSection :
 
 
    (Certains champs sont encore vide. Afin de le retourner tous, il faut utiliser la parametre 'Full')
 
    .EXAMPLE
 
    Filtrage sur un dossier précis via le paramètre 'ID'
 
    Get-RCDossier -id 1235
 
 
    id : 1235
    Titre : Bonne application du régime d'asile européen
    MinDate : 12/7/2017 12:00:00 AM
    MaxDate : 2/15/2018 12:00:00 AM
    NbInterventions : 352
    Intervenants :
    Seances :
    Documents :
    SousSection :
     
    (Certains champs sont encore vide. Afin de le retourner tous, il faut utiliser la parametre 'Full')
 
    .NOTES
        -Version: 1.1
        -Author: Stéphane van Gulick
        -CreationDate: 01/02/2018
        -LastModifiedDate: 01/02/2018
        -History:
            03/03/2018: implemented fix #5 : Stéphane van Gulick
            01/02/2018: Creation : Stéphane van Gulick
        
            Blog: www.powershelldistrict.com
            Site Source: www.nosdeputes.fr
    #>



    [cmdletBinding(DefaultParameterSetName="all")]
    Param(

        [Parameter(Mandatory=$false,ParameterSetName="id")]
        [ValidateNotNullOrEmpty()]
        [String]$id,

        [Parameter(Mandatory=$false)]
        [Switch]$Full
     
    )


    switch ($PsCmdlet.ParameterSetName) {
        
          
        "All"{

            try{
                $data = Invoke-RestMethod -Uri $RC_data.urls.Dossiers -ErrorAction Stop
            }Catch [System.Net.WebException]{
                write-warning "Server indisponible: Merci de vérifier vôtre connection internet."
                break
               
            }Catch{
                $_.exception.message
            }

            
    
            Foreach ($entry in $Data.sections.section){
                
                $ret = (invoke-restmethod $Entry.url_nosdeputes_api).Section

                $id_seances = $ret.seances.seance.id
                $id_intervenants = $ret.intervenants.parlementaire.slug
                $id_soussections = $ret.soussections.soussection.id
                $id_documents = $ret.documents.document.id
                
                $Dos = [Dossier]::New($ret.id,$ret.Titre,$ret.nb_interventions,$ret.min_date,$ret.max_date,$id_intervenants,$id_seances,$id_documents,$id_soussections)
                
                if ($Full){
                
                    $Dos.Full()

                }else{
                    $Dos
                }
                $Dos = $null
            }
            break;
        }
        "id"{
            $urlid = $RC_data.Urls.Dossiers.replace("dossiers/nom/json",("15/dossier/" + $id + "/json"))

            try{
                $ret = (Invoke-RestMethod -Uri $urlid -ErrorAction Stop).section
            }Catch [System.Net.WebException]{
                write-warning "Server indisponible: Merci de vérifier vôtre connection internet."
                break
               
            }Catch{
                $_.exception.message
            }

           
            
            $id_seances = $ret.seances.seance.id
                $id_intervenants = $ret.intervenants.parlementaire.slug #| Out-String
                $id_soussections = $ret.soussections.soussection.id
                $id_documents = $ret.documents.document.id

                
                $Dos = [Dossier]::New($ret.id,$ret.Titre,$ret.nb_interventions,$ret.min_date,$ret.max_date,$id_intervenants,$id_seances,$id_documents,$id_soussections)
                if ($Full){
                
                    $Dos.Full()

                }else{
                    $Dos
                }
                $Dos = $null
            break;
        }
        
        Default {
            throw "Parameter set -> $($PsCmdlet.ParameterSetName) is undefined"
        }
    }




}