Skip to content

Commit

Permalink
Merge pull request #165 from snazy2000/develop
Browse files Browse the repository at this point in the history
Release 1.7
  • Loading branch information
PetriAsi authored Jun 14, 2021
2 parents 53b1560 + 8ec56d8 commit ec6c96f
Show file tree
Hide file tree
Showing 13 changed files with 1,664 additions and 3 deletions.
16 changes: 15 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,21 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/),
and this project adheres to [Semantic Versioning](http://semver.org/).

# [v.1.6.x]
# [v.1.7.x] - 2021-06-14

## Consumables

## New features
Added support for consumables

## New functions
- New-SnipeitConsumable
- Get-SnipeitConsumable
- Set-SnipeitConsumable
- Remove-SnipeitConsumable


# [v.1.6.x] - 2021-06-14

## Remove more things ja set some more

Expand Down
156 changes: 156 additions & 0 deletions SnipeitPS/Public/Get-SnipeitConsumable.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
<#
.SYNOPSIS
Gets a list of Snipe-it consumables
.PARAMETER search
A text string to search the consumables
.PARAMETER id
A id of specific consumable
.PARAMETER company_id
Id number of company
.PARAMETER category_id
Id number of category
.PARAMETER manufacturer_id
Id number of manufacturer
.PARAMETER sort
Sort results by column
.PARAMETER order
Specify the order (asc or desc) you wish to order by on your sort column
.PARAMETER expand
Whether to include detailed information on categories, etc (true) or just the text name (false)
.PARAMETER limit
Specify the number of results you wish to return. Defaults to 50. Defines batch size for -all
.PARAMETER offset
Offset to use
.PARAMETER all
A return all results
.PARAMETER url
URL of Snipeit system,can be set using Set-SnipeitInfo command
.PARAMETER apiKey
Users API Key for Snipeit, can be set using Set-SnipeitInfo command
.EXAMPLE
Get-SnipeitConsumable -all
Returns all consumables
.EXAMPLE
Get-SnipeitConsumable -search paper
Returns search results containeing string display
.EXAMPLE
Get-Snipeitconsumable -id
Returns specific consumable
#>
function Get-SnipeitConsumable() {
[CmdletBinding(DefaultParameterSetName = 'Search')]
Param(
[parameter(ParameterSetName='Search')]
[string]$search,

[parameter(ParameterSetName='Get with ID')]
[int[]]$id,

[parameter(ParameterSetName='Search')]
[int]$category_id,

[parameter(ParameterSetName='Search')]
[int]$company_id,

[parameter(ParameterSetName='Search')]
[int]$manufacturer_id,

[parameter(ParameterSetName='Search')]
[int]$location_id,

[parameter(ParameterSetName='Search')]
[ValidateSet("asc", "desc")]
[string]$order = "desc",

[parameter(ParameterSetName='Search')]
[ValidateSet('id', 'name', 'min_amt', 'order_number', 'serial', 'purchase_date', 'purchase_cost', 'company', 'category', 'qty', 'location', 'image', 'created_at')]
[string]$sort = "created_at",


[Parameter(ParameterSetName='Search')]
[switch]$expand,

[parameter(ParameterSetName='Search')]
[int]$limit = 50,

[parameter(ParameterSetName='Search')]
[int]$offset,

[parameter(ParameterSetName='Search')]
[switch]$all = $false,

[parameter(mandatory = $true)]
[string]$url,

[parameter(mandatory = $true)]
[string]$apiKey
)
begin {

$SearchParameter = . Get-ParameterValue -Parameters $MyInvocation.MyCommand.Parameters -BoundParameters $PSBoundParameters
}

process {
switch ($PSCmdlet.ParameterSetName) {
'Search' {
$Parameters = @{
Uri = "$url/api/v1/consumables"
Method = 'Get'
Token = $apiKey
GetParameters = $SearchParameter
}

if ($all) {
$offstart = $(if($offset){$offset} Else {0})
$callargs = $SearchParameter
$callargs.Remove('all')

while ($true) {
$callargs['offset'] = $offstart
$callargs['limit'] = $limit
$res=Get-Snipeitconsumable @callargs
$res
if ($res.count -ne $limit) {
break
}
$offstart = $offstart + $limit
}
} else {
$result = Invoke-SnipeitMethod @Parameters
$result
}
}

'Get with ID' {
foreach($consumable_id in $id) {
$Parameters = @{
Uri = "$url/api/v1/consumables/$consumable_id"
Method = 'Get'
Token = $apiKey
GetParameters = $SearchParameter
}
$result = Invoke-SnipeitMethod @Parameters
$result
}
}
}
}
}

139 changes: 139 additions & 0 deletions SnipeitPS/Public/New-SnipeitConsumable.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
<#
.SYNOPSIS
Add a new Consumable to Snipe-it asset system
.DESCRIPTION
Long description
.PARAMETER name
Required Name of the Consumable
.PARAMETER qty
Required Quantity of comsumable
.PARAMETER category_id
Required Category ID of the Consumable, this can be got using Get-SnipeitCategory
.PARAMETER min_amt
Optional minimum quantity of comsumable
.PARAMETER company_id
Optional Company id
.PARAMETER order_number
Optional Order number
.PARAMETER manufacturer_id
Manufaturer id number of the consumable
.PARAMETER location_id
Location id number of the consumable
.PARAMETER requestable
Is consumable requestable?
.PARAMETER purchase_date
Optional Purchase cost of the consumable
.PARAMETER purchase_cost
Optional Purchase cost of the consumable
.PARAMETER model_number
Model number of the consumable in months
.PARAMETER item_no
Item number for the consumable
.PARAMETER url
URL of Snipeit system, can be set using Set-SnipeitInfo command
.PARAMETER apiKey
Users API Key for Snipeit, can be set using Set-SnipeitInfo command
.EXAMPLE
New-Snipeitconsumable -name "Ink pack" -qty 20 -category_id 3 -min_amt 5
Create consumable with stock count 20 , alert when stock is 5 or lower
#>

function New-SnipeitConsumable()
{
[CmdletBinding(
SupportsShouldProcess = $true,
ConfirmImpact = "Low"
)]

Param(
[parameter(mandatory = $true)]
[string]$name,

[parameter(mandatory = $true)]
[int]$qty,

[parameter(mandatory = $true)]
[int]$category_id,

[parameter(mandatory = $false)]
[int]$min_amt,

[parameter(mandatory = $false)]
[int]$company_id,

[parameter(mandatory = $false)]
[string]$order_number,

[parameter(mandatory = $false)]
[int]$manufacturer_id,

[parameter(mandatory = $false)]
[int]$location_id,

[parameter(mandatory = $false)]
[bool]$requestable,

[parameter(mandatory = $false)]
[datetime]$purchase_date,

[parameter(mandatory = $false)]
[string]$purchase_cost,

[parameter(mandatory = $false)]
[string]$model_number,

[parameter(mandatory = $false)]
[string]$item_no,

[parameter(mandatory = $true)]
[string]$url,

[parameter(mandatory = $true)]
[string]$apiKey

)
begin {
$Values = . Get-ParameterValue -Parameters $MyInvocation.MyCommand.Parameters -BoundParameters $PSBoundParameters

if ($values['purchase_date']) {
$Values['purchase_date'] = $Values['purchase_date'].ToString("yyyy-MM-dd")
}

$Body = $Values | ConvertTo-Json;
}

process {
$Parameters = @{
Uri = "$url/api/v1/consumables"
Method = 'Post'
Body = $Body
Token = $apiKey
}

If ($PSCmdlet.ShouldProcess("ShouldProcess?"))
{
$result = Invoke-SnipeitMethod @Parameters
}

$result
}
}
56 changes: 56 additions & 0 deletions SnipeitPS/Public/Remove-SnipeitConsumable.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<#
.SYNOPSIS
Removes consumable from Snipe-it asset system
.DESCRIPTION
Removes consumable or multiple consumables from Snipe-it asset system
.PARAMETER ID
Unique ID For consumable to be removed
.PARAMETER url
URL of Snipeit system, can be set using Set-SnipeitInfo command
.PARAMETER apiKey
User's API Key for Snipeit, can be set using Set-SnipeitInfo command
.EXAMPLE
Remove-SnipeitConsumable -ID 44 -Verbose
.EXAMPLE
Get-SnipeitConsumable -search "paper" | Remove-Snipeitconsumable
#>

function Remove-SnipeitConsumable ()
{
[CmdletBinding(
SupportsShouldProcess = $true,
ConfirmImpact = "Low"
)]

Param(
[parameter(mandatory = $true,ValueFromPipelineByPropertyName)]
[int[]]$id,
[parameter(mandatory = $true)]
[string]$URL,
[parameter(mandatory = $true)]
[string]$APIKey

)
begin {
}
process {
foreach($consumable_id in $id){
$Parameters = @{
Uri = "$url/api/v1/consumables/$consumable_id"
Method = 'Delete'
Body = '{}'
Token = $apiKey
}

If ($PSCmdlet.ShouldProcess("ShouldProcess?"))
{
$result = Invoke-SnipeitMethod @Parameters
}
$result
}
}
}
Loading

0 comments on commit ec6c96f

Please sign in to comment.