Many to many association plugin d365 code
Plugin Code :
using System;
using Microsoft.Xrm.Sdk;
using Indegene.Omnipresence.Common;
namespace Indegene.Omnipresence.Plugins.Deltasync
{
/// <summary>
/// AssociateProcedureLog_PostOperation
/// </summary>
public class AssociateProcedureLog_PostOperation : PluginBase
{
/// <summary>
/// Initializes a new instance of the <see cref="AssociateProcedureLog_PostOperation"/> class.
/// </summary>
/// <param name="unsecure">Contains public (unsecured) configuration
information.</param>
/// <param name="secure">Contains non-public (secured) configuration
information.
/// When using Microsoft Dynamics 365
for Outlook with Offline Access,
/// the secure string is not passed to
a plug-in that executes while the client is offline.</param>
public AssociateProcedureLog_PostOperation(string unsecure, string secure)
: base(typeof(AssociateProcedureLog_PostOperation))
{
// TODO: Implement your custom configuration handling.
}
/// <summary>
/// ExecuteCrmPlugin
/// </summary>
/// <param name="localContext"></param>
protected override void ExecuteCrmPlugin(LocalPluginContext localContext)
{
localContext.Trace("Starting Plugin :
AssociateProcedureLog_PreOperation ");
if (localContext == null)
{
throw new InvalidPluginExecutionException("localContext");
}
localContext.Trace("Starting Plugin: " + this.GetType().Name);
string pluginMessage =
localContext.PluginExecutionContext.MessageName.ToLower();
localContext.Trace("Message: " + pluginMessage);
try
{
switch (pluginMessage)
{
case PluginMessages.Associate:
HandleMessage_Associate(localContext);
break;
}
}
catch (Exception ex)
{
localContext.Trace("Exception: " + ex.StackTrace);
throw new
InvalidPluginExecutionException(ex.Message);
}
}
/// <summary>
/// HandleMessage_Associate
/// </summary>
/// <param name="localContext"></param>
private void HandleMessage_Associate(LocalPluginContext localContext)
{
localContext.Trace("Call HandleMessage_Associate");
if
(!localContext.PluginExecutionContext.InputParameters.Contains(PluginParameters.Relationship))
return;
if
(!localContext.PluginExecutionContext.InputParameters.Contains("Target") ||
!(localContext.PluginExecutionContext.InputParameters["Target"] is EntityReference))
return;
string relationshipName =
((Relationship)localContext.PluginExecutionContext.InputParameters[PluginParameters.Relationship]).SchemaName;
EntityReference targetEntity =
(EntityReference)localContext.PluginExecutionContext.InputParameters["Target"];
localContext.Trace("ID :" + targetEntity.Id);
localContext.Trace("Relationship: " + relationshipName);
localContext.Trace("Target: " + targetEntity.LogicalName);
if (relationshipName ==
EntityAttrs.Order.OrderRelationship)
{
UpdateModifiedon(targetEntity,
localContext);
}
}
/// <summary>
/// UpdateModifiedon
/// </summary>
/// <param name="order"></param>
/// <param name="service"></param>
private static void UpdateModifiedon(EntityReference order,
LocalPluginContext service)
{
service.Trace("UpdateModifiedon");
service.Trace("ID :" + order.Id);
service.Trace("LogicalName: " + order.LogicalName);
Entity entity = new Entity(order.LogicalName)
{
Id = order.Id
};
entity["indskr_orderupdatedon"] = DateTime.Now;
service.OrganizationService.Update(entity);
}
}
}
Plugin Steps:
Comments
Post a Comment