Functions/Public/Get-RCDepute.ps1

Function Get-RCDepute {
    <#
    .SYNOPSIS
    Recupere des données statitques d'un ou plusieurs député(s)
     
    .DESCRIPTION
    Permet de récuperer des données statitiques des représentants politique Français.
     
    .PARAMETER Nom
    Permet filtrer la recherche sur le nom de famille d'une député.
    (Ce paramètre doit être utilisé obligatoirement avec le paramètre Prénom )
 
    Note: Le filtrage est effectué coté client, ce qui peut entrainer des effets sur la performance
     
    .PARAMETER Prenom
    Permet filtrer la recherche sur le Prénom d'une député.
    (Ce paramètre doit être utilisé obligatoirement avec le paramètre Nom )
 
    Note: Le filtrage est effectué coté client, ce qui peut entrainer des effets sur la performance
     
    .PARAMETER Id
    Permet de filtrer la recherche sur l'ID d'un député
 
    .PARAMETER NumCirconscription
    Permet de filtrer la recherche sur le numéro de ciconscription d'ou le député à été élue.
 
    Note: Le filtrage est effectué coté client, ce qui peut entrainer des effets sur la performance
 
    .PARAMETER NomCirconscription
 
    Note: Le filtrage est effectué coté client, ce qui peut entrainer des effets sur la performance
 
    .PARAMETER NumDepartement
 
    Permet de filtrer les resultats sur le numéro de département.
 
    .EXAMPLE
 
   Filtre les resultats sur le numéro de département '67' (Bas-Rhin).
 
    Get-RCDepute -NumDepartement 67 | format-table
 
    id Nom Prenom Sexe DateNaissance LieuNaissance Groupe NomCirconscription numcirco PlaceHemicylce
    -- --- ------ ---- ------------- ------------- ------ ------------------ -------- --------------
    26 Wonner Martine F 3/27/1964 12:00:00 AM Hayange (Moselle) LREM Bas-Rhin 4 488
    48 Waserman Sylvain H 12/8/1967 12:00:00 AM Paris 07 (Paris) MODEM Bas-Rhin 2 267
    89 Furst Laurent H 5/19/1965 12:00:00 AM Colmar (Haut-Rhin) LR Bas-Rhin 6 80
    306 Thiébaut Vincent H 5/23/1972 12:00:00 AM Toulouse (Haute-Garonne) LREM Bas-Rhin 9 432
    312 Reiss Frédéric H 11/12/1949 12:00:00 AM Haguenau (Bas-Rhin) LR Bas-Rhin 8 77
    373 Michels Thierry H 8/27/1960 12:00:00 AM Strasbourg (Bas-Rhin) LREM Bas-Rhin 1 445
    456 Herth Antoine H 2/14/1963 12:00:00 AM Sélestat (Bas-Rhin) UAI Bas-Rhin 5 143
    487 Studer Bruno H 6/18/1978 12:00:00 AM Colmar (Haut-Rhin) LREM Bas-Rhin 3 478
    570 Hetzel Patrick H 7/2/1964 12:00:00 AM Phalsbourg (Moselle) LR Bas-Rhin 7 79
 
    Permet de filtrer la recherche sur le numéro de département
 
    Note: Le filtrage est effectué coté client, ce qui peut entrainer des effets sur la performance
     
    .EXAMPLE
     
    Get-RCDepute -NomCirconscription Haut-Rhin | format-table
 
    id Nom Prenom Sexe DateNaissance LieuNaissance Groupe NomCirconscription numcirco PlaceHemicylce
    -- --- ------ ---- ------------- ------------- ------ ------------------ -------- --------------
    72 Schellenberger Raphaël H 2/14/1990 12:00:00 AM Mulhouse (Haut-Rhin) LR Haut-Rhin 4 72
    110 Straumann Éric H 8/17/1964 12:00:00 AM Colmar (Haut-Rhin) LR Haut-Rhin 1 76
    207 Cattin Jacques H 6/4/1958 12:00:00 AM Colmar (Haut-Rhin) LR Haut-Rhin 2 73
    298 Becht Olivier H 4/28/1976 12:00:00 AM Strasbourg (Bas-Rhin) UAI Haut-Rhin 5 154
    469 Reitzer Jean-Luc H 12/29/1951 12:00:00 AM Altkirch (Haut-Rhin) LR Haut-Rhin 3 75
    528 Fuchs Bruno H 4/7/1959 12:00:00 AM Colmar (Haut-Rhin) MODEM Haut-Rhin 6 181
     
    .EXAMPLE
 
    Select d'un député par son nom et prénom (La selection que peut ce faire en combinant Nom et prénom)
 
   Get-RCDepute -Nom Fuchs -Prenom Bruno
 
 
    id : 528
    Nom : Fuchs
    Prenom : Bruno
    Sexe : H
    DateNaissance : 4/7/1959 12:00:00 AM
    LieuNaissance : Colmar (Haut-Rhin)
    Groupe : MODEM
    NomCirconscription : Haut-Rhin
    numcirco : 6
    PlaceHemicylce : 181
    DebutDeMandat : 6/21/2017 12:00:00 AM
    Profession : Industriel-Chef d'entreprise
    Twitter : bruno_fuchs
    NombreDeMandats : 1
    partirattfinancier : Mouvement Démocrate
    autresmandats :
    Collaborateurs :
    Emails :
 
    .EXAMPLE
    Filtrage sur le numéro de cironscription
    Get-RCDepute -NumCirconscription 5 | Fomat-Table
 
    id Nom Prenom Sexe DateNaissance LieuNaissance Groupe NomCirconscription numcirco PlaceHemicylce
    -- --- ------ ---- ------------- ------------- ------ ------------------ -------- --------------
    32 Abad Damien H 4/5/1980 12:00:00 AM Nîmes (Gard) LR Ain 5 78
    44 Vatin Pierre H 8/21/1967 12:00:00 AM Saint-Quentin (Aisne) LR Oise 5 31
    60 Dubois Marianne F 12/17/1957 12:00:00 AM Corbeil-Essonnes (Essonne) LR Loiret 5 20
    68 Masséglia Denis H 4/11/1981 12:00:00 AM Nice (Alpes-Maritimes) LREM Maine-et-Loire 5 377
    79 Paris Didier H 2/14/1954 12:00:00 AM Paris (Paris) LREM Côte-d'Or 5 403
    81 Riester Franck H 1/3/1974 12:00:00 AM Paris 15ème (Paris) UAI Seine-et-Marne 5 124
    90 Lenne Marion F 11/20/1974 12:00:00 AM Gardanne (Bouches-du-Rhône) LREM Haute-Savoie 5 314
    92 Sarles Nathalie F 4/17/1962 12:00:00 AM Valence (Drôme) LREM Loire 5 290
    94 Chassaigne André H 7/2/1950 12:00:00 AM Clermont-Ferrand (Puy-de-Dôme) GDR Puy-de-Dôme 5 587
    122 Bouillon Christophe H 3/4/1969 12:00:00 AM Rouen (Seine-Maritime) NG Seine-Maritime 5 520
    124 Michel-Kleisbauer Philippe H 3/6/1969 12:00:00 AM Draguignan (Var) MODEM Var 5 259
    131 Melchior Graziella F 4/6/1960 12:00:00 AM Brest (Finistère) LREM Finistère 5 231
    137 El Haïry Sarah F 3/16/1989 12:00:00 AM (Loir-et-Cher) MODEM Loire-Atlantique 5 172
    138 Potier Dominique H 3/17/1964 12:00:00 AM Toul (Meurthe-et-Moselle) NG Meurthe-et-Moselle 5 514
    146 Grelier Jean-Carles H 3/15/1966 12:00:00 AM Mans (Sarthe) LR Sarthe 5 71
    160 Portarrieu Jean-François H 10/14/1965 12:00:00 AM Toulouse (Haute-Garonne) LREM Haute-Garonne 5 645
    176 Lazaar Fiona F 9/19/1985 12:00:00 AM (Val-d'Oise) LREM Val-d'Oise 5 418
    181 Bouyx Bertrand H 5/26/1970 12:00:00 AM Juvisy-sur-Orge (Essonne) LREM Calvados 5 210
    185 Gauvain Raphaël H 4/10/1973 12:00:00 AM Paris 14ème (Paris) LREM Saône-et-Loire 5 241
    196 Brocard Blandine F 11/3/1981 12:00:00 AM Strasbourg (Bas-Rhin) LREM Rhône 5 323
    225 Huppé Philippe H 2/12/1968 12:00:00 AM Mazamet (Tarn) LREM Hérault 5 395
    228 Gaillard Olivier H 2/28/1967 12:00:00 AM Nîmes (Gard) LREM Gard 5 243
    235 Lagarde Jean-Christophe H 10/24/1967 12:00:00 AM Châtellerault (Vienne) UAI Seine-Saint-Denis 5 135
    245 Kamowski Catherine F 4/8/1958 12:00:00 AM Valenciennes (Nord) LREM Isère 5 335
    274 Bothorel Éric H 10/20/1966 12:00:00 AM Paimpol (Côtes-d'Armor) LREM Côtes-d'Armor 5 554
    294 Krabal Jacques H 4/10/1948 12:00:00 AM Epieds (Aisne) LREM Aisne 5 542
    296 Braun-Pivet Yaël F 12/7/1970 12:00:00 AM Nancy (Meurthe-et-Moselle) LREM Yvelines 5 481
    298 Becht Olivier H 4/28/1976 12:00:00 AM Strasbourg (Bas-Rhin) UAI Haut-Rhin 5 154
    300 O'Petit Claire F 10/15/1949 12:00:00 AM Epinay-sur-Seine (Seine-Saint-Denis) LREM Eure 5 304
 
    .EXAMPLE
 
    Filtrage sur tous les députés qui ont été élus dans la circonscription numéro 5, et qui sont membre du groupe politique 'LR' (Les républicains)
 
    Get-RCDepute -NumCirconscription 5 | where {$_.Groupe -eq 'LR'} | ft
 
    id Nom Prenom Sexe DateNaissance LieuNaissance Groupe NomCirconscription numcirco PlaceHemicylce
    -- --- ------ ---- ------------- ------------- ------ ------------------ -------- --------------
    32 Abad Damien H 4/5/1980 12:00:00 AM Nîmes (Gard) LR Ain 5 78
    44 Vatin Pierre H 8/21/1967 12:00:00 AM Saint-Quentin (Aisne) LR Oise 5 31
    60 Dubois Marianne F 12/17/1957 12:00:00 AM Corbeil-Essonnes (Essonne) LR Loiret 5 20
    146 Grelier Jean-Carles H 3/15/1966 12:00:00 AM Mans (Sarthe) LR Sarthe 5 71
    332 Aubert Julien H 6/11/1978 12:00:00 AM Marseille (Bouches-du-Rhône) LR Vaucluse 5 136
    402 Quentin Didier H 12/23/1946 12:00:00 AM Royan (Charente-Maritime) LR Charente-Maritime 5 28
    408 Brenier Marine F 8/11/1986 12:00:00 AM Nice (Alpes-Maritimes) LR Alpes-Maritimes 5 150
    430 Carrez Gilles H 8/29/1948 12:00:00 AM Paris (Paris) LR Val-de-Marne 5 92
    475 Genevard Annie F 9/7/1956 12:00:00 AM Audincourt (Doubs) LR Doubs 5 90
    526 Huyghe Sébastien H 10/25/1969 12:00:00 AM Béthune (Pas-de-Calais) LR Nord 5 43
 
    .NOTES
        -Version: 1.0
        -Author: Stéphane van Gulick
        -CreationDate: 01/02/2018
        -LastModifiedDate: 01/02/2018
        -History:
            01/02/2018: Creation : Stéphane van Gulick
        
            Blog: www.powershelldistrict.com
            Site Source: www.nosdeputes.fr
    #>



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

        [Parameter(Mandatory=$true,ParameterSetName="Nom")]
        [String]$Nom,

        [Parameter(Mandatory=$true,ParameterSetName="Nom")]
        [String]$Prenom,

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

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

        [Parameter(Mandatory=$false)]
        [ValidateNotNullOrEmpty()]
        [String]$NumCirconscription,

        [Parameter(Mandatory=$false)]
        [ValidateNotNullOrEmpty()]
        [String]$NumDepartement,

        [Parameter(Mandatory=$false)]
        [ValidateNotNullOrEmpty()]
        [String]$NomCirconscription
     
    )


    switch ($PsCmdlet.ParameterSetName) {

        "slug"{
            $url = $Rc_data.urls.Deputes.Replace("deputes/enmandat/json",$Slug) + "/json"

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

            
            
            $Collaborateurs = @()
            foreach ($col in $entry.Collaborateurs.Collaborateur){
                    $Collaborateurs += $col
            }

            $autresmandats = @()
            foreach ($autreMandat in $entry.autres_mandats.mandat){
                    $mandat = ""
                    $mandat = $autreMandat.replace(" ","").split("/")
                    if ($mandat){
                        $autresmandats += [Mandat]::New($mandat[0],$mandat[1],$mandat[2])

                    }
            }

            $Emails = @()
            foreach ($mail in $entry.emails.email){
                    $Emails += $mail
            }
            return [Depute]::New($entry.id,$entry.nom_de_famille,$entry.prenom,$entry.groupe_sigle,$entry.date_naissance,$entry.lieu_naissance,$entry.sexe,$entry.nom_circo,$entry.num_circo,$entry.place_en_hemicycle,$entry.mandat_debut,$entry.profession,$entry.twitter,$entry.nb_mandats,$entry.parti_ratt_financier,$autresmandats,$Collaborateurs,$Emails)
            Break;
        }
        "id"{

            

            $Entry = (Invoke-RestMethod -Uri $RC_data.urls.deputes).deputes.depute | ? {$_.id -eq $id}

            $Collaborateurs = @()
            foreach ($col in $entry.Collaborateurs.Collaborateur){
                    $Collaborateurs += $col
            }

            $autresmandats = @()
            foreach ($autreMandat in $entry.autres_mandats.mandat){
                    $mandat = ""
                    $mandat = $autreMandat.replace(" ","").split("/")
                    if ($mandat){
                        $autresmandats += [Mandat]::New($mandat[0],$mandat[1],$mandat[2])

                    }
            }

            $Emails = @()
            foreach ($mail in $entry.emails.email){
                    $Emails += $mail
            }

            return [Depute]::New($entry.id,$entry.nom_de_famille,$entry.prenom,$entry.groupe_sigle,$entry.date_naissance,$entry.lieu_naissance,$entry.sexe,$entry.nom_circo,$entry.num_circo,$entry.place_en_hemicycle,$entry.mandat_debut,$entry.profession,$entry.twitter,$entry.nb_mandats,$entry.parti_ratt_financier,$autresmandats,$Collaborateurs,$Emails)
            break;
        }
        "Nom" {
                $slug = ($prenom +"-"+ $Nom)
                $url = ($RC_data.Urls.Deputes).Replace("deputes/enmandat/json",$slug) + "/json"
                
                $Data = (Invoke-RestMethod -Uri $url).depute
                #Depute([String]$Nom,[String]$Prenom,[String]$Groupe,[DateTime]$DateNaissance,[String]$LieuNaissance,[Sexe]$Sexe,[string]$nomcirco,[int]$numcirco,[int]$PlaceHemicylce,[DateTime]$DebutDeMandat,[String]$Profession,[string]$Twitter,[int]$NbMandats){
                return [Depute]::New($data.id,$data.nom_de_famille,$data.prenom,$data.groupe_sigle,$data.date_naissance,$Data.lieu_naissance,$data.sexe,$data.nom_circo,$data.num_circo,$data.place_en_hemicycle,$data.mandat_debut,$data.profession,$data.twitter,$data.nb_mandats,$data.parti_ratt_financier,$autresmandats,$Collaborateurs,$Emails)
                break;
          }
        "All"{
            $Data = (Invoke-RestMethod -Uri $RC_data.urls.deputes).deputes.depute
            
            if ($NumCirconscription){

                $Data = $Data | ? {$_.num_circo -eq $NumCirconscription}

            }elseif($NomCirconscription){
                $Data = $Data | ? {$_.nom_circo -eq $NomCirconscription}
            }elseif($numDepartement){

                $Data = $Data | ? {$_.num_deptmt -eq $numDepartement}

            }

            Foreach ($entry in $Data){

                $Collaborateurs = @()
                foreach ($col in $entry.Collaborateurs.Collaborateur){
                        $Collaborateurs += $col
                }

                $autresmandats = @()
                foreach ($autreMandat in $entry.autres_mandats.mandat){
                        $mandat = ""
                        $mandat = $autreMandat.replace(" ","").split("/")
                        if ($mandat){
                            $autresmandats += [Mandat]::New($mandat[0],$mandat[1],$mandat[2])

                        }
                }

                $Emails = @()
                foreach ($mail in $entry.emails.email){
                        $Emails += $mail
                }

                [Depute]::New($entry.id,$entry.nom_de_famille,$entry.prenom,$entry.groupe_sigle,$entry.date_naissance,$entry.lieu_naissance,$entry.sexe,$entry.nom_circo,$entry.num_circo,$entry.place_en_hemicycle,$entry.mandat_debut,$entry.profession,$entry.twitter,$entry.nb_mandats,$entry.parti_ratt_financier,$autresmandats,$Collaborateurs,$Emails)
            }
            break;
        }
        Default {
            throw "Parameter set -> $($PsCmdlet.ParameterSetName) is undefined"
        }
    }




}