Quantcast
Channel: Microsoft Dynamics CRM Forum - Recent Threads
Viewing all articles
Browse latest Browse all 46379

MSCRM (plugin)

$
0
0

Hello friend ,, I write a plugin code for stop creating activity on case form after change in endorsement section for those customer  who dn't have email id.

but still activity created , please see the code and give me your suggestion. please 

using Microsoft.Crm.Sdk.Messages;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using System;

namespace EndorsementEmail
{
    public class CaseEndorsement : IPlugin
    {
        public ITracingService iTracingService;

        #region Variable Declaration
        private string TempName = string.Empty;
        Guid _TemplateId;
        Guid _ObjectId;
        Guid _customerId;
        int _Endstatus;
        #endregion Variable Declaration

        public void Execute(IServiceProvider serviceProvider)
        {
            try
            {
                #region Initilization of required plugin objects.
                iTracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
                IPluginExecutionContext iPluginExecutionContext = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
                IOrganizationServiceFactory iOrganizationServiceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
                IOrganizationService iOrganizationService = iOrganizationServiceFactory.CreateOrganizationService(iPluginExecutionContext.UserId);
                #endregion

                if (iPluginExecutionContext.Depth > 1) return;
                if (iPluginExecutionContext.PrimaryEntityName != "incident") return;


                #region Business Logic
                //Retrieve Case record with other attributes.
                ColumnSet cols = new ColumnSet(new string[] { "customerid", "adkv_endorsementstatus" });
                Entity _CaseRecord = iOrganizationService.Retrieve("incident", iPluginExecutionContext.PrimaryEntityId, cols);
                if (_CaseRecord.Contains("customerid"))
                {

                    iTracingService.Trace("CaseEndorsement plugin end on finally block");
                    EntityReference _customerId = _CaseRecord.GetAttributeValue<EntityReference>("customerid");
                    Entity customerRetreive = iOrganizationService.Retrieve("contact", _customerId.Id, new ColumnSet("emailaddress2"));
                    if (customerRetreive.GetAttributeValue<EntityReference>("emailaddress2") != null)
                    {

                        //Set Email Template based on Endorsement Status
                        if (_CaseRecord.Contains("adkv_endorsementstatus"))
                        {

                            iTracingService.Trace("CaseEndorsement plugin end on finally block");
                            _Endstatus = _CaseRecord.GetAttributeValue<OptionSetValue>("adkv_endorsementstatus").Value;
                            if (_Endstatus == 100000000)
                            {
                                TempName = "Endorsement Accepted Email Template";
                            }
                            else if (_Endstatus == 100000001)
                            {
                                TempName = "Endorsement Rejected Email Template";
                            }

                        }

                        _ObjectId = _CaseRecord.Id;

                        //code to retrieve emailtemplateid
                        string sFetchXml = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" +
                                     "<entity name='template'>" +
                                     "<attribute name='title' />" +
                                     "<attribute name='templatetypecode' />" +
                                     "<attribute name='ispersonal' />" +
                                     "<attribute name='languagecode' /> " +
                                     "<attribute name='templateid' /> " +
                                     " <order attribute='title' descending='false' /> " +
                                     "<filter type='and'> " +
                                     "<condition attribute='title' operator='eq' value='" + TempName.ToString() + "' /> " +
                                     "</filter> " +
                                     "</entity> " +
                                     "</fetch>";

                        EntityCollection enCollEmailTemp = iOrganizationService.RetrieveMultiple(new FetchExpression(sFetchXml));


                        if (enCollEmailTemp != null && enCollEmailTemp.Entities != null && enCollEmailTemp.Entities.Count > 0)
                        {
                            _TemplateId = enCollEmailTemp.Entities[0].GetAttributeValue<Guid>("templateid");
                        }

                        #region Initialte Email Template
                        InstantiateTemplateRequest instTemplateReq = new InstantiateTemplateRequest();
                        {
                            instTemplateReq["TemplateId"] = _TemplateId;
                            instTemplateReq["ObjectId"] = _ObjectId;
                            instTemplateReq["ObjectType"] = _CaseRecord.LogicalName.ToString();
                        };

                        InstantiateTemplateResponse instTemplateResp = (InstantiateTemplateResponse)iOrganizationService.Execute(instTemplateReq);
                        EntityCollection templatecollection = new EntityCollection();
                        templatecollection = (EntityCollection)instTemplateResp["EntityCollection"];
                        if (templatecollection.Entities.Count > 0)
                        {
                            Entity EmailCreate = new Entity("email");
                            EmailCreate["subject"] = templatecollection.Entities[0].GetAttributeValue<string>("subject");
                            EmailCreate["description"] = templatecollection.Entities[0].GetAttributeValue<string>("description");
                            EmailCreate["regardingobjectid"] = new EntityReference("incident", _CaseRecord.Id);

                            // Set from Field Start
                            Entity ap2 = new Entity();
                            ap2 = new Entity("activityparty");
                            iTracingService.Trace("1");
                            ap2["partyid"] = new EntityReference("systemuser", new Guid("F166DC3C-98B4-DD11-A7F2-001A6435D028"));
                            Entity[] aryFrom = { ap2 };
                            EmailCreate["from"] = aryFrom;
                            // Set From Field End

                            // Set To Fiel to email activity
                            Entity ap1 = new Entity();
                            ap1 = new Entity("activityparty");
                            iTracingService.Trace("2");
                            ap1["partyid"] = new EntityReference("contact", _customerId.Id);
                            Entity[] aryTo = { ap1 };
                            EmailCreate["to"] = aryTo;
                            // Set To field on email activity

                            iOrganizationService.Create(EmailCreate);

                        }
                        #endregion Initiate Email Template
                    }
                #endregion Business Logic


                }
            }
            catch (Exception e)
            {
                iTracingService.Trace("CaseEndorsement Plugin is on catch block");
                throw e;
            }
            finally
            {
                iTracingService.Trace("CaseEndorsement plugin end on finally block");
            }
        }

    }
}


Viewing all articles
Browse latest Browse all 46379

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>