private async Task <ActivityPayload> CreateProcessingActivity(ReconfigurationContext context) { var loopActivity = await HubCommunicator.AddAndConfigureChildActivity(context.SolutionActivity, await HubCommunicator.GetActivityTemplate("terminalFr8Core", "Loop"), "Loop", "Loop", 2); var loopConfigControls = ActivityConfigurator.GetConfigurationControls(loopActivity); var crateChooser = loopConfigControls.Controls.OfType <CrateChooser>().Single(); var firstActivity = context.SolutionActivity.ChildrenActivities.OrderBy(x => x.Ordering).First(); var firstActivityCrates = firstActivity.CrateStorage.CrateContentsOfType <CrateDescriptionCM>().FirstOrDefault(); crateChooser.CrateDescriptions = firstActivityCrates?.CrateDescriptions; var tableDescription = crateChooser.CrateDescriptions?.FirstOrDefault(x => x.ManifestId == (int)MT.StandardTableData); if (tableDescription != null) { tableDescription.Selected = true; } var solutionActivityUi = new ActivityUi().ClonePropertiesFrom(context.SolutionActivity.CrateStorage.FirstCrate <StandardConfigurationControlsCM>().Content) as ActivityUi; var mailSenderActivityTemplate = await HubCommunicator.GetActivityTemplate(Guid.Parse(solutionActivityUi.MailSenderActivitySelector.Value)); var sendEmailActivity = await HubCommunicator.AddAndConfigureChildActivity(loopActivity, mailSenderActivityTemplate, order : 1); return(loopActivity); }
private async Task <bool> HasProcessingActivity(ReconfigurationContext context) { if (context.SolutionActivity.ChildrenActivities == null) { return(false); } var loopActivity = context.SolutionActivity .ChildrenActivities .OfType <ActivityPayload>() .SingleOrDefault(x => x.ActivityTemplate.Name == "Loop" && x.Ordering == 2); if (loopActivity == null || loopActivity.ChildrenActivities.Count != 1) { return(false); } var emailSenderActivity = loopActivity.ChildrenActivities.OfType <ActivityPayload>().SingleOrDefault(); if (emailSenderActivity == null) { return(false); } if (emailSenderActivity.ActivityTemplate.Name != ActivityUI.MailSenderActivitySelector.selectedKey) { return(false); } return(true); }
private async Task <ActivityPayload> ConfigureSecondChildActivity(ReconfigurationContext context) { var curActivityTemplates = (await HubCommunicator.GetActivityTemplates(null, true)) .ToList(); var selectedReceiver = curActivityTemplates.Single(x => x.Name == _dataSourceValue); ActivityPayload parentActivity; int activityIndex; if (DoesActivityTemplateGenerateTableData(selectedReceiver)) { var loopActivity = context.SolutionActivity.ChildrenActivities .OfType <ActivityPayload>() .SingleOrDefault(x => x.ActivityTemplate.Name == "Loop" && x.Ordering == 2); if (loopActivity == null) { throw new ApplicationException("Invalid solution structure, no Loop activity found."); } loopActivity = await HubCommunicator.ConfigureChildActivity(context.SolutionActivity, loopActivity); var crateChooser = ActivityConfigurator.GetControl <CrateChooser>(loopActivity, "Available_Crates"); var tableDescription = crateChooser.CrateDescriptions.FirstOrDefault(c => c.ManifestId == (int)MT.StandardTableData); if (tableDescription != null) { tableDescription.Selected = true; } parentActivity = loopActivity; activityIndex = 1; } else { parentActivity = context.SolutionActivity; activityIndex = 2; } var sendDocuSignEnvelope = parentActivity.ChildrenActivities .OfType <ActivityPayload>() .Single(x => x.ActivityTemplate.Name == "Send_DocuSign_Envelope" && x.Ordering == activityIndex ); sendDocuSignEnvelope.CrateStorage = new CrateStorage(); sendDocuSignEnvelope = await HubCommunicator.ConfigureChildActivity(parentActivity, sendDocuSignEnvelope); ActivityConfigurator.SetControlValue( sendDocuSignEnvelope, "target_docusign_template", _docuSignTemplate.ListItems .FirstOrDefault(a => a.Key == _docuSignTemplate.selectedKey) ); sendDocuSignEnvelope = await HubCommunicator.ConfigureChildActivity(parentActivity, sendDocuSignEnvelope); return(sendDocuSignEnvelope); }
private async Task <ActivityPayload> ConfigureFirstChildActivity(ReconfigurationContext context) { var activity = context.SolutionActivity.ChildrenActivities .OfType <ActivityPayload>() .Single(x => x.Ordering == 1); activity.CrateStorage = new CrateStorage(); activity = await HubCommunicator.ConfigureChildActivity(context.SolutionActivity, activity); return(activity); }
private Task <bool> HasSalesforceDataActivity(ReconfigurationContext context) { if (context.SolutionActivity.ChildrenActivities == null) { return(Task.FromResult(false)); } var result = context.SolutionActivity .ChildrenActivities .OfType <ActivityPayload>() .Any(x => x.ActivityTemplate.Name == "Get_Data" && x.Ordering == 2); return(Task.FromResult(result)); }
private async Task <ActivityPayload> CreateSecondChildActivity(ReconfigurationContext context) { var curActivityTemplates = (await HubCommunicator.GetActivityTemplates(null, true)) .ToList(); var selectedReceiver = curActivityTemplates.Single(x => x.Name == _dataSourceValue); ActivityPayload parentActivity; int activityIndex; if (DoesActivityTemplateGenerateTableData(selectedReceiver)) { var loopAT = await HubCommunicator.GetActivityTemplate("terminalFr8Core", "Loop"); var loopActivity = await HubCommunicator.AddAndConfigureChildActivity(context.SolutionActivity, loopAT, "Loop", "Loop", 2); var crateChooser = ActivityConfigurator.GetControl <CrateChooser>(loopActivity, "Available_Crates"); var firstActivity = context.SolutionActivity.ChildrenActivities.OrderBy(x => x.Ordering).First(); var firstActivityCrates = firstActivity.CrateStorage.CrateContentsOfType <CrateDescriptionCM>().FirstOrDefault(); crateChooser.CrateDescriptions = firstActivityCrates?.CrateDescriptions; var tableDescription = crateChooser.CrateDescriptions?.FirstOrDefault(c => c.ManifestId == (int)MT.StandardTableData); if (tableDescription != null) { tableDescription.Selected = true; } parentActivity = loopActivity; activityIndex = 1; } else { parentActivity = context.SolutionActivity; activityIndex = 2; } var sendDocusignEnvelopeAT = await HubCommunicator.GetActivityTemplate("terminalDocuSign", "Send_DocuSign_Envelope", activityTemplateVersion : "2"); var sendDocuSignActivity = await HubCommunicator.AddAndConfigureChildActivity(parentActivity, sendDocusignEnvelopeAT, order : activityIndex); // Set docusign template ActivityConfigurator.SetControlValue(sendDocuSignActivity, "TemplateSelector", _docuSignTemplate.ListItems.FirstOrDefault(a => a.Key == _docuSignTemplate.selectedKey) ); await HubCommunicator.ConfigureChildActivity(parentActivity, sendDocuSignActivity); return(activityIndex == 1 ? sendDocuSignActivity : parentActivity); }
private Task <bool> HasFirstChildActivity(ReconfigurationContext context) { if (context.SolutionActivity.ChildrenActivities == null) { return(Task.FromResult(false)); } var activityExists = context.SolutionActivity .ChildrenActivities .OfType <ActivityPayload>() .Any(x => x.ActivityTemplate.Name == _dataSourceValue && x.Ordering == 1 ); return(Task.FromResult(activityExists)); }
private async Task <bool> HasSecondChildActivity(ReconfigurationContext context) { if (context.SolutionActivity.ChildrenActivities == null) { return(false); } var curActivityTemplates = (await HubCommunicator.GetActivityTemplates(null, true)) .ToList(); var selectedReceiver = curActivityTemplates.Single(x => x.Name == _dataSourceValue); ActivityPayload parentActivity; int activityIndex; if (DoesActivityTemplateGenerateTableData(selectedReceiver)) { var loopActivity = context.SolutionActivity.ChildrenActivities .OfType <ActivityPayload>() .SingleOrDefault(x => x.ActivityTemplate.Name == "Loop" && x.Ordering == 2); if (loopActivity == null) { return(false); } parentActivity = loopActivity; activityIndex = 1; } else { parentActivity = context.SolutionActivity; activityIndex = 2; } if (parentActivity.ChildrenActivities.Count != 1) { return(false); } var sendDocuSignEnvelope = parentActivity.ChildrenActivities .OfType <ActivityPayload>() .SingleOrDefault(x => x.ActivityTemplate.Name == "Send_DocuSign_Envelope" && x.Ordering == activityIndex ); return(sendDocuSignEnvelope != null); }
/// <summary> /// TODO this part is ugly - why do we load those activities from hub in activity /// we already have a code in base class that does this operation with caching /// </summary> /// <param name="context"></param> /// <returns></returns> private async Task <ActivityPayload> CreateFirstChildActivity(ReconfigurationContext context) { var curActivityTemplates = (await HubCommunicator.GetActivityTemplates(null, true)) .Select(Mapper.Map <ActivityTemplateDO>) .ToList(); // Let's check if activity template generates table data var selectedReceiver = curActivityTemplates.Single(x => x.Name == _dataSourceValue); var selectedReceiverTemplate = await HubCommunicator.GetActivityTemplate(selectedReceiver.Id); var dataSourceActivity = await HubCommunicator.AddAndConfigureChildActivity( context.SolutionActivity, selectedReceiverTemplate, order : 1 ); context.SolutionActivity.ChildrenActivities.Remove(dataSourceActivity); context.SolutionActivity.ChildrenActivities.Insert(0, dataSourceActivity); return(dataSourceActivity); }
private async Task <ActivityPayload> CreateSalesforceDataActivity(ReconfigurationContext context) { var getSalesforceDataActivityTemplate = (await HubCommunicator.GetActivityTemplates(null)) .First(x => x.Name == "Get_Data" && x.Terminal.Name == TerminalName && x.Version == "1"); var dataSourceActivity = await HubCommunicator.AddAndConfigureChildActivity( context.SolutionActivity, getSalesforceDataActivityTemplate, order : 1); if (dataSourceActivity.CrateStorage.Where(a => a.ManifestType.Id == (int)MT.StandardAuthentication).FirstOrDefault() != null) { await HubCommunicator.ApplyNewToken(dataSourceActivity.Id, Guid.Parse(AuthorizationToken.Id)); dataSourceActivity = await HubCommunicator.ConfigureActivity(dataSourceActivity); } //This config call will make SF Get_Data activity to load properties of the selected object (and removes filter) CopySolutionUiValuesToSalesforceActivity(context.SolutionActivity, dataSourceActivity); dataSourceActivity = await HubCommunicator.ConfigureChildActivity(context.SolutionActivity, dataSourceActivity); //This config call will set the proper filter value for the selected object CopySolutionUiValuesToSalesforceActivity(context.SolutionActivity, dataSourceActivity); return(await HubCommunicator.ConfigureChildActivity(context.SolutionActivity, dataSourceActivity)); }
private async Task <ActivityPayload> ConfigureSalesforceDataActivity(ReconfigurationContext context) { return(context.SolutionActivity.ChildrenActivities.OfType <ActivityPayload>().Single(x => x.Ordering == 2)); }
private Task <ActivityPayload> ConfigureProcessingActivity(ReconfigurationContext context) { //No extra config required return(Task.FromResult(context.SolutionActivity.ChildrenActivities.OfType <ActivityPayload>().FirstOrDefault(x => x.Ordering == 2))); }