Public/Setup/Dropdowns/Management/Get-GlpiToolsDropdownsBussinessCriticities.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
<#
.SYNOPSIS
    Function is getting Bussiness Criticities informations from GLPI
.DESCRIPTION
    Function is based on BussinessCriticityId which you can find in GLPI website
    Returns object with property's of Bussiness Criticities
.PARAMETER All
    This parameter will return all Bussiness Criticities from GLPI
.PARAMETER BussinessCriticityId
    This parameter can take pipeline input, either, you can use this function with -BussinessCriticityId keyword.
    Provide to this param BussinessCriticityId from GLPI Bussiness Criticities Bookmark
.PARAMETER Raw
    Parameter which you can use with BussinessCriticityId Parameter.
    BussinessCriticityId has converted parameters from default, parameter Raw allows not convert this parameters.
.PARAMETER BussinessCriticityName
    This parameter can take pipeline input, either, you can use this function with -BussinessCriticityId keyword.
    Provide to this param Bussiness Criticities Name from GLPI Bussiness Criticities Bookmark
.EXAMPLE
    PS C:\> Get-GlpiToolsDropdownsBussinessCriticities -All
    Example will return all Bussiness Criticities from Glpi
.EXAMPLE
    PS C:\> 326 | Get-GlpiToolsDropdownsBussinessCriticities
    Function gets BussinessCriticityId from GLPI from pipeline, and return Bussiness Criticities object
.EXAMPLE
    PS C:\> 326, 321 | Get-GlpiToolsDropdownsBussinessCriticities
    Function gets BussinessCriticityId from GLPI from pipeline (u can pass many ID's like that), and return Bussiness Criticities object
.EXAMPLE
    PS C:\> Get-GlpiToolsDropdownsBussinessCriticities -BussinessCriticityId 326
    Function gets BussinessCriticityId from GLPI which is provided through -BussinessCriticityId after Function type, and return Bussiness Criticities object
.EXAMPLE
    PS C:\> Get-GlpiToolsDropdownsBussinessCriticities -BussinessCriticityId 326, 321
    Function gets Bussiness Criticities Id from GLPI which is provided through -BussinessCriticityId keyword after Function type (u can provide many ID's like that), and return Bussiness Criticities object
.EXAMPLE
    PS C:\> Get-GlpiToolsDropdownsBussinessCriticities -BussinessCriticityName Fusion
    Example will return glpi Bussiness Criticities, but what is the most important, Bussiness Criticities will be shown exactly as you see in glpi dropdown Bussiness Criticities.
    If you want to add parameter, you have to modify "default items to show". This is the "key/tool" icon near search.
.INPUTS
    Bussiness Criticities ID which you can find in GLPI, or use this Function to convert ID returned from other Functions
.OUTPUTS
    Function returns PSCustomObject with property's of Bussiness Criticities from GLPI
.NOTES
    PSP 09/2019
#>


function Get-GlpiToolsDropdownsBussinessCriticities {
    [CmdletBinding()]
    param (
        [parameter(Mandatory = $false,
            ParameterSetName = "All")]
        [switch]$All,
        [parameter(Mandatory = $true,
            ValueFromPipeline = $true,
            ParameterSetName = "BussinessCriticityId")]
        [alias('BCID')]
        [string[]]$BussinessCriticityId,
        [parameter(Mandatory = $false,
            ParameterSetName = "BussinessCriticityId")]
        [switch]$Raw,
        
        [parameter(Mandatory = $true,
            ParameterSetName = "BussinessCriticityName")]
        [alias('BCN')]
        [string]$BussinessCriticityName
    )
    
    begin {
        $SessionToken = $Script:SessionToken    
        $AppToken = $Script:AppToken
        $PathToGlpi = $Script:PathToGlpi

        $SessionToken = Set-GlpiToolsInitSession | Select-Object -ExpandProperty SessionToken
        $AppToken = Get-GlpiToolsConfig | Select-Object -ExpandProperty AppToken
        $PathToGlpi = Get-GlpiToolsConfig | Select-Object -ExpandProperty PathToGlpi

        $ChoosenParam = ($PSCmdlet.MyInvocation.BoundParameters).Keys

        $BussinessCriticitiesArray = [System.Collections.Generic.List[PSObject]]::New()
    }
    
    process {
        switch ($ChoosenParam) {
            All { 
                $params = @{
                    headers = @{
                        'Content-Type'  = 'application/json'
                        'App-Token'     = $AppToken
                        'Session-Token' = $SessionToken
                    }
                    method  = 'get'
                    uri     = "$($PathToGlpi)/businesscriticity/?range=0-9999999999999"
                }
                
                $BussinessCriticitiesAll = Invoke-RestMethod @params -Verbose:$false

                foreach ($BussinessCriticity in $BussinessCriticitiesAll) {
                    $BussinessCriticityHash = [ordered]@{ }
                    $BussinessCriticityProperties = $BussinessCriticity.PSObject.Properties | Select-Object -Property Name, Value 
                                
                    foreach ($BussinessCriticityProp in $BussinessCriticityProperties) {
                        $BussinessCriticityHash.Add($BussinessCriticityProp.Name, $BussinessCriticityProp.Value)
                    }
                    $object = [pscustomobject]$BussinessCriticityHash
                    $BussinessCriticitiesArray.Add($object)
                }
                $BussinessCriticitiesArray
                $BussinessCriticitiesArray = [System.Collections.Generic.List[PSObject]]::New()
            }
            BussinessCriticityId { 
                foreach ( $BCId in $BussinessCriticityId ) {
                    $params = @{
                        headers = @{
                            'Content-Type'  = 'application/json'
                            'App-Token'     = $AppToken
                            'Session-Token' = $SessionToken
                        }
                        method  = 'get'
                        uri     = "$($PathToGlpi)/businesscriticity/$($BCId)"
                    }

                    Try {
                        $BussinessCriticity = Invoke-RestMethod @params -ErrorAction Stop

                        if ($Raw) {
                            $BussinessCriticityHash = [ordered]@{ }
                            $BussinessCriticityProperties = $BussinessCriticity.PSObject.Properties | Select-Object -Property Name, Value 
                                
                            foreach ($BussinessCriticityProp in $BussinessCriticityProperties) {
                                $BussinessCriticityHash.Add($BussinessCriticityProp.Name, $BussinessCriticityProp.Value)
                            }
                            $object = [pscustomobject]$BussinessCriticityHash
                            $BussinessCriticitiesArray.Add($object)
                        } else {
                            $BussinessCriticityHash = [ordered]@{ }
                            $BussinessCriticityProperties = $BussinessCriticity.PSObject.Properties | Select-Object -Property Name, Value 
                                
                            foreach ($BussinessCriticityProp in $BussinessCriticityProperties) {

                                $BussinessCriticityPropNewValue = Get-GlpiToolsParameters -Parameter $BussinessCriticityProp.Name -Value $BussinessCriticityProp.Value

                                $BussinessCriticityHash.Add($BussinessCriticityProp.Name, $BussinessCriticityPropNewValue)
                            }
                            $object = [pscustomobject]$BussinessCriticityHash
                            $BussinessCriticitiesArray.Add($object)
                        }
                    } Catch {

                        Write-Verbose -Message "Bussiness Criticity ID = $BCId is not found"
                        
                    }
                    $BussinessCriticitiesArray
                    $BussinessCriticitiesArray = [System.Collections.Generic.List[PSObject]]::New()
                }
            }
            BussinessCriticityName { 
                Search-GlpiToolsItems -SearchFor businesscriticity -SearchType contains -SearchValue $BussinessCriticityName
            } 
            Default { }
        }
    }
    
    end {
        Set-GlpiToolsKillSession -SessionToken $SessionToken
    }
}