Contact Case Count plugin dynamics 365
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
namespace AdvancedPlugins
{
public class ContactcaseCount : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
IPluginExecutionContext context = (IPluginExecutionContext)
serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory serviceFactory =
(IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
ITracingService tracingService =
(ITracingService)serviceProvider.GetService(typeof(ITracingService));
// The InputParameters collection contains all the data passed in the message request.
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
Entity contact = (Entity)context.InputParameters["Target"];
// getting Contact fullname and its emailaddress
string name = contact["fullname"].ToString();
string email = contact["emailaddress1"].ToString();
// we have to get the created contact guid in order to mpa to newly creaing case
Guid contactid = new Guid(context.OutputParameters["id"].ToString());
// Create a new case automatically
Entity cse = new Entity("incident");
cse["title"] = "User whose name is " + name + " has created new case. Please contact him on hs email: " + email;
// lokkup --> refer to anoter table - entityname nad its record id
cse["customerid"] = new EntityReference(contact.LogicalName, contactid);
service.Create(cse);
// select case of a contact where conact is contactid
QueryExpression qr = new QueryExpression();
qr.EntityName = "incident";
qr.ColumnSet = new ColumnSet("customerid");
// where conact is contactid
ConditionExpression ce = new ConditionExpression();
ce.AttributeName = "customerid";
ce.Operator = ConditionOperator.Equal;
ce.Values.Add(contactid);
// add cond to query
qr.Criteria.AddCondition(ce);
// Exceute query
EntityCollection caseCollection = service.RetrieveMultiple(qr);
// update case count on contact -
Entity newlyCreatedContact = service.Retrieve(contact.LogicalName, contactid, new ColumnSet("spousesname"));
newlyCreatedContact["spousesname"] = caseCollection.Entities.Count.ToString();
service.Update(newlyCreatedContact);
}
}
}
}
Go ahead and check inside crm about the case count on the contact.
I hope this helps..
No comments:
Post a Comment
Note: only a member of this blog may post a comment.