protected override void Execute(CodeActivityContext executionContext) { var serviceFactory = executionContext.GetExtension <IOrganizationServiceFactory>(); var tracingService = executionContext.GetExtension <ITracingService>(); WorkflowContext = executionContext.GetExtension <IWorkflowContext>(); OrganizationService = serviceFactory.CreateOrganizationService(WorkflowContext.UserId); try { using (DataAccessLayerFactory = new DataAccessLayerFactory(OrganizationService, tracingService)) { CustomTracingService = DataAccessLayerFactory.GetTracingService(); PostExecute(executionContext); } } catch (FaultException <OrganizationServiceFault> ex) { throw new InvalidPluginExecutionException("An error occurred in the UpdateActivities plug-in.", ex); } catch (Exception ex) { CustomTracingService.Trace("FollowupPlugin: {0}", ex.ToString()); throw; } }
public void Execute(IServiceProvider serviceProvider) { var tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService)); PluginContext = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); if (!PluginContext.InputParameters.Contains("Target") || !(PluginContext.InputParameters["Target"] is Entity)) { return; } Entity = (Entity)PluginContext.InputParameters["Target"]; if (Entity.LogicalName != ExpectedEntityLogicalName) { return; } IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); OrganizationService = serviceFactory.CreateOrganizationService(PluginContext.UserId); DataAccessLayerFactory = new DataAccessLayerFactory(OrganizationService, tracingService); CustomTracingService = DataAccessLayerFactory.GetTracingService(); try { PostExecute(serviceProvider); } catch (FaultException <OrganizationServiceFault> ex) { throw new InvalidPluginExecutionException("An error occurred in this plug-in.", ex); } catch (Exception ex) { CustomTracingService.Trace("Plugin Exception: {0}", ex.ToString()); throw; } }
public void UpdateAccountWorkOrders(Guid accountID) { var WorkOrders = _workOrderDataAccessLayer.GetRelatedWorkOrders(accountID, WorkOrder.Attributes.ServiceAccount); string accountNumber = _workOrderDataAccessLayer.GetServiceAccountAccountNumber(accountID); if (WorkOrders != null && WorkOrders.Entities.Count > 0 && accountNumber != string.Empty) { _tracingService.Trace("Related WorkOrders for Service Account : {0} is {1}", accountID, WorkOrders.Entities.Count); foreach (var WorkOrderEntity in WorkOrders.Entities) { Guid WorkOrderID = (Guid)WorkOrderEntity[WorkOrder.Attributes.WorkOrderId]; WorkOrderEntity.Attributes[WorkOrder.Attributes.AccountNumber] = accountNumber; WorkOrderEntity.Id = WorkOrderID; _workOrderDataAccessLayer.UpdateEntity(WorkOrderEntity); _tracingService.Trace(" WorkOrder {0} updated with Account Number {1}", WorkOrderID.ToString(), accountNumber); } } }
public void UpdateAccountsEmails(Guid accountId) { var emails = _emailDataAccessLayer.GetEmails(accountId); int closedEmails = 0; int updatedEmails = 0; foreach (var email in emails) { if (string.IsNullOrEmpty(email.Subject)) { _emailDataAccessLayer.CloseEmailAsCancelled(email); closedEmails++; } else { email.ScheduledStart = DateTime.Today.AddDays(10); _emailDataAccessLayer.UpdateEntity(email); updatedEmails++; } } _tracingService.Trace("{0} closed emails and {1} updated emails", closedEmails, updatedEmails); _emailDataAccessLayer.Commit(); }