﻿<?xml version="1.0" encoding="utf-16"?>
<JiwaDocument xmlns:jiwa="http://www.jiwa.com.au/xml/schemas" Type="JiwaFinancials.Jiwa.JiwaApplication.Plugin.Plugin">
  <RecID>db6e8a84-ea3a-4b95-9aac-e347d9cc15c6</RecID>
  <Name>Filter Webhook</Name>
  <Description>Demonstrates how to selectively filter webhooks for inventory.updated webhooks to only send the webhook if a custom field "SendUpdatedWebhook" is checked.&amp;#13;&amp;#10;&amp;#13;&amp;#10;As this plugin requires a reference to the REST API plugin, the execution order of this must be greater than that of the REST API plugin execution order.</Description>
  <IsEnabled>true</IsEnabled>
  <IsIsolatedToOwnAppDomain>false</IsIsolatedToOwnAppDomain>
  <ExecutionOrder>100</ExecutionOrder>
  <Author>Jiwa Financials</Author>
  <Version>7.2.1.0</Version>
  <Code>using System;
using System.Diagnostics;
using ServiceStack;
using ServiceStack.Model;
using ServiceStack.Web;
using System.Linq;

public class CustomiseWebhook : System.MarshalByRefObject, JiwaFinancials.Jiwa.JiwaApplication.IJiwaRESTAPIPlugin
{
	public void Configure(JiwaFinancials.Jiwa.JiwaApplication.Plugin.Plugin Plugin, ServiceStack.ServiceStackHost AppHost, Funq.Container Container, JiwaFinancials.Jiwa.JiwaApplication.Manager JiwaApplicationManager)
    {
		AppHost.RegisterTypedRequestFilter&lt;JiwaFinancials.Jiwa.JiwaServiceModel.WebhooksEventsPOSTRequest&gt;((req, res, dto) =&gt; { WebhooksEventsPOSTRequestFilter(req, res, dto); });
	}
	
	public void WebhooksEventsPOSTRequestFilter(IRequest req, IResponse res, JiwaFinancials.Jiwa.JiwaServiceModel.WebhooksEventsPOSTRequest dto)
    {		
		if (dto.EventName == "inventory.updated")
		{			
			JiwaFinancials.Jiwa.JiwaServiceModel.Inventory.InventoryItem inventoryItem = dto.Body.FromJson&lt;JiwaFinancials.Jiwa.JiwaServiceModel.Inventory.InventoryItem&gt;();
			if (inventoryItem.CustomFieldValues.Count(x =&gt; x.SettingName == "SendUpdatedWebhook" &amp;&amp; x.Contents == bool.TrueString) == 0)
			{
				res.Close();
			}
		}		
	}
}
</Code>
  <ExceptionPolicy>Abort</ExceptionPolicy>
  <Language>CSharp</Language>
  <ReferenceCollection>
    <Reference>
      <RecID>b0add42e-49f0-4619-80a0-31430c769114</RecID>
      <AssemblyFullName>JiwaApplication, Version=7.2.1.0, Culture=neutral, PublicKeyToken=e30ce81e37f29c8c</AssemblyFullName>
      <AssemblyName>JiwaApplication.dll</AssemblyName>
      <AssemblyLocation>C:\VSTS\Jiwa 7\07.02.00\Built Files\JiwaApplication.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>593e48de-e8cf-4ed8-b0e6-063f74506c93</RecID>
      <AssemblyFullName>mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</AssemblyFullName>
      <AssemblyName>mscorlib.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>b6e16531-ae35-4c56-a1ec-32e5d9ce4ffe</RecID>
      <AssemblyFullName>System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</AssemblyFullName>
      <AssemblyName>System.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>f5ac4426-6348-4c71-b302-dd97ac92c37d</RecID>
      <AssemblyFullName>System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</AssemblyFullName>
      <AssemblyName>System.Drawing.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>9b6c9d58-a1d1-4b1f-8faa-dad0ef51607f</RecID>
      <AssemblyFullName>JiwaODBC, Version=7.2.1.0, Culture=neutral, PublicKeyToken=e30ce81e37f29c8c</AssemblyFullName>
      <AssemblyName>JiwaODBC.dll</AssemblyName>
      <AssemblyLocation>C:\VSTS\Jiwa 7\07.02.00\Built Files\JiwaODBC.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>f61f69ac-833b-4fd5-8013-7d824811cd1b</RecID>
      <AssemblyFullName>System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</AssemblyFullName>
      <AssemblyName>System.Data.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>48639f28-3086-4308-87ba-5b2ed5a12b31</RecID>
      <AssemblyFullName>System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</AssemblyFullName>
      <AssemblyName>System.Xml.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>0ae33b39-19c0-4671-b6dd-014698b37137</RecID>
      <AssemblyFullName>System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</AssemblyFullName>
      <AssemblyName>System.Runtime.Serialization.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Serialization\v4.0_4.0.0.0__b77a5c561934e089\System.Runtime.Serialization.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>2e7f4229-2315-41bc-bd56-e19a55b0d4a0</RecID>
      <AssemblyFullName>System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</AssemblyFullName>
      <AssemblyName>System.Windows.Forms.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>7da4b2f8-80ed-4ca9-bd46-44de0015364a</RecID>
      <AssemblyFullName>JiwaServiceModel, Version=7.2.1.0, Culture=neutral, PublicKeyToken=e30ce81e37f29c8c</AssemblyFullName>
      <AssemblyName>JiwaServiceModel.dll</AssemblyName>
      <AssemblyLocation>C:\VSTS\Jiwa 7\07.02.00\Built Files\JiwaServiceModel.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>49c2c1b2-31c5-4b19-a675-62ea8777f8f0</RecID>
      <AssemblyFullName>ServiceStack, Version=5.0.0.0, Culture=neutral, PublicKeyToken=02c12cbda47e6587</AssemblyFullName>
      <AssemblyName>ServiceStack.dll</AssemblyName>
      <AssemblyLocation>C:\VSTS\Jiwa 7\07.02.00\Built Files\ServiceStack.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>2a2b9b64-0744-4ad4-bcfb-aa9c83010440</RecID>
      <AssemblyFullName>System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</AssemblyFullName>
      <AssemblyName>System.Core.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>bb303453-1b67-4b91-9966-572ac6292740</RecID>
      <AssemblyFullName>System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</AssemblyFullName>
      <AssemblyName>System.Security.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Security\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Security.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>80d63bc0-2967-4c87-a1c9-ea0102a2a327</RecID>
      <AssemblyFullName>JiwaLib, Version=7.2.1.0, Culture=neutral, PublicKeyToken=e30ce81e37f29c8c</AssemblyFullName>
      <AssemblyName>JiwaLib.dll</AssemblyName>
      <AssemblyLocation>C:\VSTS\Jiwa 7\07.02.00\Built Files\JiwaLib.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>e3b5d763-f274-47b9-b93e-c5ccd9ceb1a6</RecID>
      <AssemblyFullName>ServiceStack.Text, Version=5.0.0.0, Culture=neutral, PublicKeyToken=02c12cbda47e6587</AssemblyFullName>
      <AssemblyName>ServiceStack.Text.dll</AssemblyName>
      <AssemblyLocation>C:\VSTS\Jiwa 7\07.02.00\Built Files\ServiceStack.Text.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>643e98e2-6b4c-4190-bcb5-cde56d353c64</RecID>
      <AssemblyFullName>ServiceStack.Interfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=02c12cbda47e6587</AssemblyFullName>
      <AssemblyName>ServiceStack.Interfaces.dll</AssemblyName>
      <AssemblyLocation>C:\VSTS\Jiwa 7\07.02.00\Built Files\ServiceStack.Interfaces.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>0cd0b823-7b31-43f8-b748-af22f23ae3fa</RecID>
      <AssemblyFullName>ServiceStack.Server, Version = 5.0.0.0, Culture = neutral, PublicKeyToken = 02c12cbda47e6587</AssemblyFullName>
      <AssemblyName>ServiceStack.Server.dll</AssemblyName>
      <AssemblyLocation>C:\VSTS\Jiwa 7\07.02.00\Built Files\ServiceStack.Server.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>047c52af-bb68-4881-bf07-3c2644f1a79e</RecID>
      <AssemblyFullName>ServiceStack.OrmLite, Version = 5.0.0.0, Culture = neutral, PublicKeyToken = 02c12cbda47e6587</AssemblyFullName>
      <AssemblyName>ServiceStack.OrmLite.dll</AssemblyName>
      <AssemblyLocation>C:\VSTS\Jiwa 7\07.02.00\Built Files\ServiceStack.OrmLite.dll</AssemblyLocation>
    </Reference>
  </ReferenceCollection>
  <CustomFieldCollection>
    <CustomField>
      <RecID>c93a19dd-39ce-4571-82de-3a67a6f5828b</RecID>
      <Name>SendUpdatedWebhook</Name>
      <Description>Only when this is checked will inventory.updated webhooks be sent to subscribers</Description>
      <DisplayOrder>1</DisplayOrder>
      <CellType>Checkbox</CellType>
      <CustomFieldModule>Inventory Maintenance</CustomFieldModule>
    </CustomField>
  </CustomFieldCollection>
  <PluginReferenceCollection>
    <PluginReference>
      <RecID>891f4ca7-cc74-45db-a54c-a38b2d030dbf</RecID>
      <Plugin>
        <RecID xmlns="Entities.Plugin">fb0c1ea8-c560-41ef-b718-f0dc70ba89b9</RecID>
        <Name xmlns="Entities.Plugin">REST API</Name>
        <Description xmlns="Entities.Plugin">Provides a REST HTTP endpoint with some routes.</Description>
        <Author xmlns="Entities.Plugin">Jiwa Financials</Author>
        <IsEnabled xmlns="Entities.Plugin">false</IsEnabled>
        <ExecutionOrder xmlns="Entities.Plugin">0</ExecutionOrder>
      </Plugin>
    </PluginReference>
  </PluginReferenceCollection>
</JiwaDocument>