Public/CrmTypes.ps1
|
### CRM Types ### function New-CrmMoney{ # .ExternalHelp Campgemini.Xrm.Data.PowerShell.Help.xml [CmdletBinding()] PARAM( [parameter(Mandatory=$true, Position=0)] [double]$Value ) $crmMoney = New-Object -TypeName Microsoft.Xrm.Sdk.Money $crmMoney.Value = $Value $crmMoney return } function New-CrmOptionSetValue{ # .ExternalHelp Campgemini.Xrm.Data.PowerShell.Help.xml [CmdletBinding()] PARAM( [parameter(Mandatory=$true, Position=0)] [int]$Value ) $crmOptionSetValue = [Microsoft.Xrm.Sdk.OptionSetValue]::new() $crmOptionSetValue.Value = $Value $crmOptionSetValue return } function New-CrmEntityReference{ # .ExternalHelp Campgemini.Xrm.Data.PowerShell.Help.xml [CmdletBinding()] PARAM( [parameter(Mandatory=$true, Position=0)] [string]$EntityLogicalName, [parameter(Mandatory=$true, Position=1)] [guid]$Id ) $crmEntityReference = [Microsoft.Xrm.Sdk.EntityReference]::new() $crmEntityReference.LogicalName = $EntityLogicalName $crmEntityReference.Id = $Id $crmEntityReference return } function Convert-CrmValueForSdk { [CmdletBinding()] PARAM( [parameter(Mandatory=$false)] [AllowNull()] $Value, [parameter(Mandatory=$false)] [AllowNull()] $OriginalValue ) if($null -eq $Value) { return $null } if($OriginalValue -is [Microsoft.Xrm.Sdk.OptionSetValue]) { if($Value -is [Microsoft.Xrm.Sdk.OptionSetValue]) { return $Value } return (New-Object Microsoft.Xrm.Sdk.OptionSetValue([Int32]$Value)) } if($OriginalValue -is [Microsoft.Xrm.Sdk.Money]) { if($Value -is [Microsoft.Xrm.Sdk.Money]) { return $Value } return (New-Object Microsoft.Xrm.Sdk.Money([decimal]$Value)) } if($OriginalValue -is [bool]) { if($Value -is [bool]) { return $Value } return [bool]::Parse([string]$Value) } if($OriginalValue -is [DateTime]) { if($Value -is [DateTime]) { return $Value } return [DateTime]::Parse([string]$Value) } if($OriginalValue -is [decimal]) { if($Value -is [decimal]) { return $Value } return [decimal]::Parse([string]$Value) } if($OriginalValue -is [Single]) { if($Value -is [Single]) { return $Value } return [Single]::Parse([string]$Value) } if($OriginalValue -is [Int32]) { if($Value -is [Int32]) { return $Value } return [Int32]::Parse([string]$Value) } return $Value } function Test-CrmValuesEquivalent { [CmdletBinding()] PARAM( [parameter(Mandatory=$false)] [AllowNull()] $CurrentValue, [parameter(Mandatory=$false)] [AllowNull()] $OriginalValue ) if($null -eq $CurrentValue -and $null -eq $OriginalValue) { return $true } if($null -eq $CurrentValue -or $null -eq $OriginalValue) { return $false } if($OriginalValue -is [Microsoft.Xrm.Sdk.OptionSetValue]) { if($CurrentValue -is [Microsoft.Xrm.Sdk.OptionSetValue]) { return ($CurrentValue.Value -eq $OriginalValue.Value) } if($CurrentValue -is [Int32]) { return ($CurrentValue -eq $OriginalValue.Value) } } if($OriginalValue -is [Microsoft.Xrm.Sdk.Money]) { if($CurrentValue -is [Microsoft.Xrm.Sdk.Money]) { return ($CurrentValue.Value -eq $OriginalValue.Value) } if($CurrentValue -is [decimal] -or $CurrentValue -is [Int32]) { return ([decimal]$CurrentValue -eq $OriginalValue.Value) } } if($OriginalValue -is [Microsoft.Xrm.Sdk.EntityReference]) { if($CurrentValue -is [Microsoft.Xrm.Sdk.EntityReference]) { return ($CurrentValue.Id -eq $OriginalValue.Id) } return ($CurrentValue -eq $OriginalValue.Name) } return ($CurrentValue -eq $OriginalValue) } |