Bhubaneswar, Odisha, India
+91-8328865778
support@softchief.com

Sample code for Plugin using Plugin Images in Dynamics 365 or Power Apps Dataverse

Sample code for Plugin using Plugin Images in Dynamics 365 or Power Apps Dataverse

Here sample code given for Plugin using Plugin Images.

using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MetroBankProject
{
    public class restrictlessterm : IPlugin
    {
        public void Execute(IServiceProvider serviceProvider)
        {
            // Obtain the execution context from the service provider.  
            IPluginExecutionContext context = (IPluginExecutionContext)
                serviceProvider.GetService(typeof(IPluginExecutionContext));

            // Obtain the organization service reference which you will need for  
            // web service calls.  
            IOrganizationServiceFactory serviceFactory =
                (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
            IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);


            // The InputParameters collection contains all the data passed in the message request.  
            if (context.InputParameters.Contains("Target") &&
                context.InputParameters["Target"] is Entity)
            {
                Entity entity = (Entity)context.InputParameters["Target"];

                if (entity.LogicalName.ToLower() == "hdfc_investment")
                {
                    //core logic 
                    Entity preentityImage = (Entity)context.PreEntityImages["myPreImage"];

                    var preTerm = preentityImage.Attributes["hdfc_totalterminmonths"];
                    var postTerm = entity.Attributes["hdfc_totalterminmonths"];

                    if (Convert.ToInt32(postTerm) > Convert.ToInt32(preTerm))
                    {
                        throw new InvalidPluginExecutionException("You cannot change term from lower to higher.");
                    }
                    else {
                        var fetchXML = @"<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>
                                              <entity name='hdfc_emiinfo'>
                                                <attribute name='hdfc_emiinfoid' />
                                                <attribute name='hdfc_name' />
                                                <attribute name='createdon' />
                                                <order attribute='hdfc_name' descending='false' />
                                                <filter type='and'>
                                                  <condition attribute='hdfc_parentinvestment' operator='eq'  uitype='hdfc_investment' value='{0}' />
                                                </filter>
                                              </entity>
                                            </fetch>";
                        fetchXML = string.Format(fetchXML, entity.Id);

                        EntityCollection ec = service.RetrieveMultiple(new FetchExpression(fetchXML));
                        for (int i = 0; i < ec.Entities.Count; i++)
                        {
                            service.Delete("hdfc_emiinfo", ec.Entities[i].Id);
                        }


                        var amountofinvestment = ((Money)preentityImage.Attributes["hdfc_amount"]).Value;

                        //recreate new EMIs
                        for (int k = 0; k < Convert.ToInt32(postTerm); k++)
                        {
                            // create EMI Info
                            Entity entEMI = new Entity();
                            entEMI.LogicalName = "hdfc_emiinfo";
                            entEMI["hdfc_name"] = "Installmnt-" + (k + 1);
                            entEMI["hdfc_parentinvestment"] = new EntityReference(entity.LogicalName, entity.Id);
                            entEMI["hdfc_emiamount"] = new Money(amountofinvestment / Convert.ToInt32(postTerm));
                            entEMI["hdfc_emiduedate"] = DateTime.Now.AddMonths(k);
                            service.Create(entEMI);

                        }

                    }
                }
            }
        }
    }
}

Hope this helps.