Functions/Public/Get-RCGroupePolitique.ps1


Function Get-RCGroupePolitique {
    <#
    .SYNOPSIS
    REtourne la liste des groupes politique actuellement existant en France.
     
    .DESCRIPTION
    Liste tous les groupes politique Français aujourd'hui en fonction.
    les données sources sont de www.nosdeputes.fr
     
    .PARAMETER Acronyme
    Permet de filtrer sur un groupe politique en particuler à partir de son Acronyme.
     
    Note: Le filtrage est fait en mémoire et peut est gourmand en ressource.
     
    .PARAMETER ListMembres
    Permet de liste les membres d'un groupe politique en particulier.
 
    Note: Le filtrage est fait en mémoire et peut est gourmand en ressource.
     
    .EXAMPLE
    La commande suivante retourne la liste de tous les membre du groupe UAI
 
   Get-RCGroupePolitique -Acronyme UAI -ListMembres | format-table
 
    id Nom Prenom Sexe DateNaissance LieuNaissance Groupe NomCirconscription numcirco PlaceHem
                                                                                                                                                            icylce
    -- --- ------ ---- ------------- ------------- ------ ------------------ -------- --------
    81 Riester Franck H 1/3/1974 12:00:00 AM Paris 15ème (Paris) UAI Seine-et-Marne 5 124
    406 Auconie Sophie F 8/19/1963 12:00:00 AM Dugny (Seine-Saint-Denis) UAI Indre-et-Loire 3 134
    298 Becht Olivier H 4/28/1976 12:00:00 AM Strasbourg (Bas-Rhin) UAI Haut-Rhin 5 154
    173 Benoit Thierry H 9/13/1966 12:00:00 AM Fougères (Ille-et-Vilaine) UAI Ille-et-Vilaine 6 113
    334 Bournazel Pierre-Yves H 8/31/1977 12:00:00 AM Riom-Ès-Montagne (Cantal) UAI Paris 18 146
    198 Bricout Guy H 2/18/1944 12:00:00 AM Caudry (Nord) UAI Nord 18 140
    380 Christophe Paul H 2/10/1971 12:00:00 AM Sables d'Olonne (Vendée) UAI Nord 14 141
    553 Courson (de) Charles H 4/2/1952 12:00:00 AM Paris (Paris) UAI Marne 5 147
    303 Demilly Stéphane H 6/26/1963 12:00:00 AM Albert (Somme) UAI Somme 5 125
    561 Descamps Béatrice F 4/24/1961 12:00:00 AM Valenciennes (Nord) UAI Nord 21 157
    241 Dunoyer Philippe H 1/11/1968 12:00:00 AM Nouméa (Nouvelle-Calédonie) UAI Nouvelle-Calédonie 1 120
    256 Favennec Becot Yannick H 8/12/1958 12:00:00 AM Chaudron-en-Mauges (Maine-et-Loire) UAI Mayenne 3 112
    277 Firmin Le Bodo Agnès F 11/20/1968 12:00:00 AM Havre (Seine-Maritime) UAI Seine-Maritime 7 158
    401 Gomès Philippe H 10/27/1958 12:00:00 AM Alger (Algérie) UAI Nouvelle-Calédonie 2 104
    46 Habib Meyer H 4/28/1961 12:00:00 AM Paris 12 (Paris) UAI Français établis hors de France 8 144
    456 Herth Antoine H 2/14/1963 12:00:00 AM Sélestat (Bas-Rhin) UAI Bas-Rhin 5 143
    77 Jégo Yves H 4/17/1961 12:00:00 AM Besançon (Doubs) UAI Seine-et-Marne 3 132
    547 La Raudière (de) Laure F 2/12/1965 12:00:00 AM Neuilly-sur-Seine (Hauts-de-Seine) UAI Eure-et-Loir 3 133
    235 Lagarde Jean-Christophe H 10/24/1967 12:00:00 AM Châtellerault (Vienne) UAI Seine-Saint-Denis 5 135
    398 Ledoux Vincent H 6/21/1966 12:00:00 AM Watermael-Boitsfort (Belgique) UAI Nord 10 129
    290 Leroy Maurice H 2/2/1959 12:00:00 AM Paris (Paris) UAI Loir-et-Cher 3 111
    259 Magnier Lise F 12/31/1984 12:00:00 AM Châlons-sur-Marne (Marne) UAI Marne 4 156
    423 Morel-À-L'Huissier Pierre H 12/21/1958 12:00:00 AM Strasbourg (Bas-Rhin) UAI Lozère 1 105
    114 Naegelen Christophe H 12/30/1983 12:00:00 AM Remiremont (Vosges) UAI Vosges 3 155
    34 Pancher Bertrand H 6/5/1958 12:00:00 AM Saint-Mihiel (Meuse) UAI Meuse 1 103
    299 Sage Maina F 5/10/1975 12:00:00 AM Papeete (Polynésie Française) UAI Polynésie Française 1 130
    464 Sanquer Nicole F 6/16/1972 12:00:00 AM Papeete (Polynésie française) UAI Polynésie Française 2 145
    416 Vercamer Francis H 5/10/1958 12:00:00 AM Lille (Nord) UAI Nord 7 123
    116 Vigier Philippe H 2/3/1958 12:00:00 AM Valence (Drôme) UAI Eure-et-Loir 4 114
    434 Villiers André H 12/13/1954 12:00:00 AM Avallon (Yonne) UAI Yonne 2 153
    497 Warsmann Jean-Luc H 10/22/1965 12:00:00 AM Villers-Semeuse (Ardennes) UAI Ardennes 3 106
    329 Zumkeller Michel H 1/21/1966 12:00:00 AM Belfort (Territoire de Belfort) UAI Territoire de Belfort 2 122
     
    .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="get")]
        [Parti]$Acronyme,

        #bug: nom should be mandatory when ListMembers is called
        [Parameter(Mandatory=$false,ParameterSetName="get")]
        [Switch]$ListMembres
    )

    switch ($PSCmdlet.ParameterSetName) {
        "get" {
            
            #I had to use this construct since having two parametersetnames seemed to simply not wanting to work.
            if ($ListMembres){
                write-verbose "[MEMBRES]Telechargement des données depuis internet..."
                $url = ($RC_Data.Urls.groupepolitique).Replace("/json",("/" + $Acronyme.ToString() + "/json"))

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

                Foreach ($entry in $Data.depute){
                    #Depute([int]$id,[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,[string]$partirattfinancier,[Mandat[]]$autresmandats,[string[]]$Collaborateurs,[string[]]$Emails){
                        $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)
                        #[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)
                }
                break;
            }else{
                write-verbose "[GET]Telechargement des données depuis internet..."
                $url = ($RC_Data.Urls.organisme)

                try{
                    $all = (invoke-restmethod -Uri $url).organismes.organisme
                }Catch [System.Net.WebException]{
                    write-warning "Server indisponible: Merci de vérifier vôtre connection internet."
                    break
                   
                }Catch{
                    $_.exception.message
                }

                
                $fro = $all | ? {$_.acronyme -eq $Acronyme}
                [GroupePolitique]::new($fro.id,$fro.slug,$fro.nom,$fro.acronyme,$fro.groupe_actuel,$fro.couleur,$fro.order,$fro.type,$fro.url_nosdeputes,$fro.url_NosDeputes_api)
                break;
            }
            
            
        }
        "all"{
            
            write-verbose "[ALL]Telechargement des données depuis internet..."

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

            
           

            foreach ($fro in $data.organismes){
                
                [GroupePolitique]::new($fro.organisme.id,$fro.organisme.slug,$fro.organisme.nom,$fro.organisme.acronyme,$fro.organisme.groupe_actuel,$fro.organisme.couleur,$fro.organisme.order,$fro.organisme.type,$fro.organisme.url_nosdeputes,$fro.organisme.url_NosDeputes_api)
            }
            break;
        }
        Default {
            throw "Parameter set undifined!"
        }
    }
        
    
}