Untitled
unknown
plain_text
a year ago
4.9 kB
5
Indexable
var AccountRibbon = window.AccountRibbon || {}; (function () { // #region Button that creates appointments this.CreateAppointmentsCommand = function (formContext) { var alertStrings = { confirmButtonLabel: "Yes", text: "Are you sure you want to create appointments?", title: "Attention" }; var alertOptions = { height: 120, width: 260 }; Xrm.Navigation.openAlertDialog(alertStrings, alertOptions).then( function (success) { Xrm.Utility.showProgressIndicator("Processing..."); var accountId = formContext.data.entity.getId(); var execute_CreateAppointments_Request = { // Parameters Target: { "@odata.type": "Microsoft.Dynamics.CRM.account", accountid: accountId }, getMetadata: function () { return { boundParameter: null, parameterTypes: { Target: { typeName: "mscrm.crmbaseentity", structuralProperty: 5 } }, operationType: 0, operationName: "yod_CreateAppointments" }; } }; Xrm.WebApi.execute(execute_CreateAppointments_Request).then( function success(response) { if (response.ok) { alert("Appointments created successfully!"); Xrm.Utility.closeProgressIndicator(); console.log("Success"); } } ).catch(function (error) { Xrm.Utility.closeProgressIndicator(); console.log(error.message); }); }, function (error) { console.log(error.message); } ); } // #endregion }).call(AccountRibbon); C# Code (for the Custom Action Plugin): csharp Copy code using System; using Microsoft.Xrm.Sdk; using Microsoft.Xrm.Sdk.Query; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TRIAL1.ACTION { public class CreateAppointments : IPlugin { public void Execute(IServiceProvider serviceProvider) { ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService)); IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); try { if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is EntityReference) { EntityReference accountRef = (EntityReference)context.InputParameters["Target"]; // Retrieve related contacts QueryExpression query = new QueryExpression("contact"); query.ColumnSet = new ColumnSet("contactid"); query.Criteria.AddCondition("parentcustomerid", ConditionOperator.Equal, accountRef.Id); EntityCollection contacts = service.RetrieveMultiple(query); DateTime nextDay = DateTime.Now.AddDays(1).Date; DateTime scheduledStart = new DateTime(nextDay.Year, nextDay.Month, nextDay.Day, 9, 0, 0); // 9:00 AM DateTime scheduledEnd = new DateTime(nextDay.Year, nextDay.Month, nextDay.Day, 19, 0, 0); // 7:00 PM foreach (Entity contact in contacts.Entities) { Entity appointment = new Entity("appointment"); appointment.Attributes.Add("subject", "Meeting with " + contact.GetAttributeValue<string>("fullname")); appointment.Attributes.Add("scheduledstart", scheduledStart); appointment.Attributes.Add("scheduledend", scheduledEnd); EntityReference participant = new EntityReference("contact", contact.Id); appointment.Attributes.Add("requiredattendees", new EntityReference[] { participant }); service.Create(appointment); } } } catch (Exception ex) { throw new InvalidPluginExecutionException($"Error CreateAppointments: {ex.Message}"); } } } }
Editor is loading...
Leave a Comment