functions/public/Get-Farm.ps1
|
function Get-Farm { <# .SYNOPSIS Retrieves farm records .DESCRIPTION Gets farm information using multiple filter options. Supports querying by ID, name, all farms, active farms only, or origin farms only. Origin farms are those marked as sources where cattle are purchased from. .PARAMETER FarmID Get a specific farm by its database ID .PARAMETER FarmName Get a specific farm by its name (exact match) .PARAMETER All Return all farms regardless of status or type .PARAMETER ActiveOnly Return only active farms (IsActive=1). Includes both origin and owner farms. .PARAMETER OriginOnly Return only origin farms (IsOrigin=1) that are also active. Used to populate the Origin Farm dropdown when adding cattle. .OUTPUTS Farm record(s) with properties: FarmID, FarmName, Address, City, State, ZipCode, PhoneNumber, Email, ContactPerson, Notes, IsOrigin, IsActive .EXAMPLE Get-Farm -FarmID 3 Returns farm with ID 3 .EXAMPLE Get-Farm -OriginOnly Returns all active origin farms (for cattle purchase sources) .EXAMPLE Get-Farm -ActiveOnly | Where-Object { $_.State -eq 'OK' } Returns all active farms in Oklahoma .EXAMPLE Get-Farm -FarmName "Smith Family Farms" Returns the farm with exact name match .NOTES The OriginOnly parameter is specifically used by the cattle management UI to filter farms in the Origin Farm dropdown to only show purchase sources. #> [CmdletBinding()] param( [Parameter(ParameterSetName = 'ById')] [int] $FarmID, [Parameter(ParameterSetName = 'ByName')] [string] $FarmName, [Parameter(ParameterSetName = 'All')] [switch] $All, [Parameter(ParameterSetName = 'Active')] [switch] $ActiveOnly, [Parameter(ParameterSetName = 'Origins')] [switch] $OriginOnly ) switch ($PSCmdlet.ParameterSetName) { 'ById' { $query = "SELECT * FROM Farms WHERE FarmID = $FarmID" $result = Invoke-UniversalSQLiteQuery -Path $script:DatabasePath -Query $query } 'ByName' { $farmNameValue = ConvertTo-SqlValue -Value $FarmName $query = "SELECT * FROM Farms WHERE FarmName = $farmNameValue" $result = Invoke-UniversalSQLiteQuery -Path $script:DatabasePath -Query $query } 'All' { $query = "SELECT * FROM Farms ORDER BY FarmName" $result = Invoke-UniversalSQLiteQuery -Path $script:DatabasePath -Query $query } 'Active' { $query = "SELECT * FROM Farms WHERE IsActive = 1 ORDER BY FarmName" $result = Invoke-UniversalSQLiteQuery -Path $script:DatabasePath -Query $query } 'Origins' { $query = "SELECT * FROM Farms WHERE IsActive = 1 AND IsOrigin = 1 ORDER BY FarmName" $result = Invoke-UniversalSQLiteQuery -Path $script:DatabasePath -Query $query } } return $result } |