private Crate <StandardQueryCM> ExtractQueryCrate(ICrateStorage storage) { var configurationControls = storage .CrateContentsOfType <StandardConfigurationControlsCM>() .SingleOrDefault(); if (configurationControls == null) { throw new ApplicationException("Action was not configured correctly"); } var actionUi = new ActivityUi(); actionUi.ClonePropertiesFrom(configurationControls); var criteria = JsonConvert.DeserializeObject <List <FilterConditionDTO> >( actionUi.QueryBuilder.Value ); // This is weird to use query's name as the way to address MT type. // MT type has unique ID that should be used for this reason. Query name is something that is displayed to user. It should not contain any internal data. var queryCM = new StandardQueryCM( new QueryDTO() { Name = MT.DocuSignEnvelope.GetEnumDisplayName(), Criteria = criteria } ); return(Crate <StandardQueryCM> .FromContent(QueryCrateLabel, queryCM)); }
private string GetUploadFilePath() { var filePathsFromUserSelection = Storage.CrateContentsOfType <StandardConfigurationControlsCM>() .Select(x => { var actionUi = new ActivityUi(); actionUi.ClonePropertiesFrom(x); return(actionUi); }) .Where(x => !string.IsNullOrEmpty(x.select_file.Value)).ToArray(); if (filePathsFromUserSelection.Length > 1) { throw new Exception("AmbiguityException"); } string uploadFilePath = null; if (filePathsFromUserSelection.Length > 0) { uploadFilePath = filePathsFromUserSelection[0].select_file.Value; } return(uploadFilePath); }
public override async Task RunChildActivities() { if (ConfigurationControls == null) { RaiseError("Action was not configured correctly"); } var actionUi = new ActivityUi(); actionUi.ClonePropertiesFrom(ConfigurationControls); // Real-time search. var criteria = JsonConvert.DeserializeObject <List <FilterConditionDTO> >(actionUi.QueryBuilder.Value); var existingEnvelopes = new HashSet <string>(); var searchResult = new StandardPayloadDataCM { Name = "Docusign Report" }; // Merge data from QueryMT action. var queryMTResult = Payload.CrateContentsOfType <StandardPayloadDataCM>(x => x.Label == "Found MT Objects") .FirstOrDefault(); MergeMtQuery(queryMTResult, existingEnvelopes, searchResult); // Update report crate. Payload.Add(Crate.FromContent("Sql Query Result", searchResult)); RequestClientActivityExecution("ShowTableReport"); }
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); }
/// <summary> /// Updates event subscriptions list by user checked check boxes. /// </summary> /// <remarks>The configuration controls include check boxes used to get the selected DocuSign event subscriptions</remarks> private void UpdateSelectedEvents() { ActivityUi activityUi = Storage.CrateContentsOfType <StandardConfigurationControlsCM>().First(); //get selected check boxes (i.e. user wanted to subscribe these DocuSign events to monitor for) var curSelectedDocuSignEvents = new List <string> { activityUi.EnvelopeSentOption.Selected?activityUi.EnvelopeSentOption.Name : string.Empty, activityUi.EnvelopeRecievedOption.Selected ? activityUi.EnvelopeRecievedOption.Name : string.Empty, activityUi.EnvelopeSignedOption.Selected ? activityUi.EnvelopeSignedOption.Name : string.Empty }; if (curSelectedDocuSignEvents.Contains(RecipientSignedEventName)) { if (!curSelectedDocuSignEvents.Contains(RecipientCompletedEventName)) { curSelectedDocuSignEvents.Add(RecipientCompletedEventName); } } else { curSelectedDocuSignEvents.Remove(RecipientCompletedEventName); } //create standard event subscription crate with user selected DocuSign events EventSubscriptions.Subscriptions.Clear(); EventSubscriptions.Manufacturer = "DocuSign"; EventSubscriptions.AddRange(curSelectedDocuSignEvents.Where(x => !string.IsNullOrEmpty(x))); }
public override async Task FollowUp() { if (ConfigurationControls == null) { return; } var actionUi = new ActivityUi(); actionUi.ClonePropertiesFrom(ConfigurationControls); await ConfigureNestedActivities(actionUi); }
public override async Task Initialize() { var actionUi = new ActivityUi(); var docuSignAuthDTO = JsonConvert.DeserializeObject <DocuSignAuthTokenDTO>(AuthorizationToken.Token); AddControls(actionUi.Controls); //commented out by FR-2400 //_docuSignManager.FillFolderSource(configurationCrate, "Folder", docuSignAuthDTO); //_docuSignManager.FillStatusSource(configurationCrate, "Status"); await ConfigureNestedActivities(actionUi); }
private void CopySolutionUiValuesToSalesforceActivity(ActivityPayload solutionActivity, ActivityPayload salesforceActivity) { var storage = salesforceActivity.CrateStorage; var controlsCrate = storage.FirstCrate <StandardConfigurationControlsCM>(); var activityUi = new Get_Data_v1.ActivityUi().ClonePropertiesFrom(controlsCrate.Content) as Get_Data_v1.ActivityUi; var solutionActivityUi = new ActivityUi().ClonePropertiesFrom(solutionActivity.CrateStorage.FirstCrate <StandardConfigurationControlsCM>().Content) as ActivityUi; activityUi.SalesforceObjectSelector.selectedKey = solutionActivityUi.SalesforceObjectSelector.selectedKey; activityUi.SalesforceObjectSelector.Value = solutionActivityUi.SalesforceObjectSelector.Value; activityUi.SalesforceObjectFilter.Value = solutionActivityUi.SalesforceObjectFilter.Value; storage.ReplaceByLabel(Crate.FromContent(controlsCrate.Label, new StandardConfigurationControlsCM(activityUi.Controls.ToArray()))); }
private DocuSignQuery GetDocusignQuery() { var actionUi = new ActivityUi(); actionUi.ClonePropertiesFrom(ConfigurationControls); var settings = new DocuSignQuery(); settings.Folder = actionUi.Folder.Value; settings.Status = actionUi.Status.Value; settings.SearchText = actionUi.SearchText.Value; return(settings); }
private GroupMessage GetGroupMessageFields(StandardConfigurationControlsCM ui, ICrateStorage payload) { var controls = new ActivityUi(); controls.ClonePropertiesFrom(ui); var groupMessage = new GroupMessage(); groupMessage.GroupID = controls.Groups.Value; //Quick fix FR-2719 var messageField = GetControl <TextSource>("Message"); groupMessage.Message = messageField.TextValue; return(groupMessage); }
public override async Task FollowUp() { var actionUi = new ActivityUi(); actionUi.ClonePropertiesFrom(ConfigurationControls); //don't add child actions until a selection is made if (string.IsNullOrEmpty(actionUi.FinalActionsList.Value)) { return; } //Removing children activities when configuring solution after returning to Solution Introduction if (ActivityPayload.ChildrenActivities.Count() > 0) { ActivityPayload.ChildrenActivities.RemoveAll(a => true); } // Always use default template for solution const string firstTemplateName = "Monitor_DocuSign_Envelope_Activity"; var monitorDocusignTemplate = await HubCommunicator.GetActivityTemplate("terminalDocuSign", firstTemplateName); Guid secondActivityTemplateGuid; ActivityTemplateDTO secondActivityTemplate; if (Guid.TryParse(actionUi.FinalActionsList.Value, out secondActivityTemplateGuid)) { secondActivityTemplate = await HubCommunicator.GetActivityTemplate(Guid.Parse(actionUi.FinalActionsList.Value)); } else { secondActivityTemplate = await GetActivityTemplateByName(actionUi.FinalActionsList.Value); } var firstActivity = await HubCommunicator.AddAndConfigureChildActivity(ActivityPayload, monitorDocusignTemplate); var secondActivity = await HubCommunicator.AddAndConfigureChildActivity(ActivityPayload, secondActivityTemplate, "Final activity"); await HubCommunicator.ApplyNewToken(firstActivity.Id, Guid.Parse(AuthorizationToken.Id)); firstActivity = await HubCommunicator.ConfigureActivity(firstActivity); ActivityPayload.ChildrenActivities[0] = firstActivity; return; }
private async Task <PlanDTO> UpdatePlanName() { if (ConfigurationControls != null) { var actionUi = new ActivityUi(); actionUi.ClonePropertiesFrom(ConfigurationControls); var criteria = JsonConvert.DeserializeObject <List <FilterConditionDTO> >( actionUi.QueryBuilder.Value ); if (criteria.Count > 0) { return(await _planService.UpdatePlanName(ActivityId, "Generate a DocuSign Report", FilterConditionHelper.ParseConditionToText(criteria))); } } return(null); }
private void GetTemplateRecipientPickerValue(out string selectedOption, out string selectedValue, out string selectedTemplate) { ActivityUi activityUi = ConfigurationControls; selectedOption = string.Empty; selectedValue = string.Empty; selectedTemplate = string.Empty; if (activityUi.BasedOnTemplateOption.Selected) { selectedOption = activityUi.BasedOnTemplateOption.Name; selectedTemplate = activityUi.TemplateList.selectedKey; selectedValue = activityUi.TemplateList.Value; } else if (activityUi.SentToRecipientOption.Selected) { selectedOption = activityUi.SentToRecipientOption.Name; selectedValue = activityUi.Recipient.Value; } }
private async Task ConfigureNestedActivities(ActivityUi actionUi) { var config = new Query_DocuSign_v1.ActivityUi { Folder = { Value = actionUi.Folder.Value }, Status = { Value = actionUi.Status.Value }, SearchText = { Value = actionUi.SearchText.Value } }; var template = (await FindTemplates(x => x.Name == "Query_DocuSign")) .FirstOrDefault(); if (template == null) { throw new Exception("Can't find activity template: Query_DocuSign"); } var storage = new CrateStorage(Crate.FromContent("Config", config)) { Crate.FromContent(TerminalActivityBase.ConfigurationControlsLabel, new StandardConfigurationControlsCM( new TextArea { IsReadOnly = true, Label = "", Value = "<p>This activity is managed by the parent activity</p>" })) }; var activity = ActivityPayload.ChildrenActivities.OfType <ActivityPayload>().FirstOrDefault(); if (activity == null) { activity = new ActivityPayload { ActivityTemplate = Mapper.Map <ActivityTemplateSummaryDTO>(template), Name = template.Label, Ordering = 1, }; ActivityPayload.ChildrenActivities.Add(activity); } activity.CrateStorage = storage; }
public override async Task FollowUp() { var actionUi = new ActivityUi(); // Clone properties of StandardConfigurationControlsCM to handy ActionUi actionUi.ClonePropertiesFrom(ConfigurationControls); if (!string.IsNullOrWhiteSpace(actionUi.Selected_Fr8_Object.Value)) { var fr8ObjectCrateDTO = await GetDesignTimeFieldsCrateOfSelectedFr8Object(actionUi.Selected_Fr8_Object.Value); const string designTimeControlName = "Select Fr8 Object Properties"; actionUi.Selected_Fr8_Object.Label = designTimeControlName; // Sync changes from ActionUi to StandardConfigurationControlsCM ConfigurationControls.ClonePropertiesFrom(actionUi); Storage.RemoveByLabel(designTimeControlName); Storage.Add(fr8ObjectCrateDTO); } }
private void PackEventSubscriptionsCrate() { ActivityUi activityUi = ConfigurationControls; EventSubscriptions.Manufacturer = "DocuSign"; EventSubscriptions.Subscriptions?.Clear(); if (activityUi.EnvelopeSentOption.Selected) { EventSubscriptions.Add(EnvelopeSentEventname); } if (activityUi.EnvelopeRecievedOption.Selected) { EventSubscriptions.Add(EnvelopeRecievedEventName); } if (activityUi.EnvelopeSignedOption.Selected) { EventSubscriptions.Add(RecipientSignedEventName); EventSubscriptions.Add(RecipientCompletedEventName); } }
public override Task FollowUp() { var config = new ActivityUi(); config.ClonePropertiesFrom(ConfigurationControls); Guid selectedObjectId; Storage.RemoveByLabel("Queryable Criteria"); if (Guid.TryParse(config.AvailableObjects.Value, out selectedObjectId)) { using (var uow = _container.GetInstance <IUnitOfWork>()) { // crateStorage.Add(CrateManager.CreateDesignTimeFieldsCrate("Queryable Criteria", GetFieldsByTypeId(selectedObjectId).ToArray())); Storage.Add( Crate.FromContent("Queryable Criteria", new FieldDescriptionsCM(MTTypesHelper.GetFieldsByTypeId(uow, selectedObjectId)) ) ); } } return(Task.FromResult(0)); }
protected override Task Validate() { ActivityUi activityUi = ConfigurationControls; if (activityUi == null) { ValidationManager.SetError(DocuSignValidationUtils.ControlsAreNotConfiguredErrorMessage); return(Task.FromResult(0)); } if (!AtLeastOneNotificationIsSelected(activityUi)) { ValidationManager.SetError("At least one notification option must be selected", activityUi.EnvelopeSignedOption); } if (!EnvelopeConditionIsSelected(activityUi)) { ValidationManager.SetError("At least one envelope option must be selected", activityUi.TemplateRecipientOptionSelector); } if (RecipientIsRequired(activityUi)) { if (DocuSignValidationUtils.ValueIsSet(activityUi.Recipient)) { ValidationManager.ValidateEmail(_configRepository, activityUi.Recipient, DocuSignValidationUtils.RecipientIsNotValidErrorMessage); } else { ValidationManager.SetError(DocuSignValidationUtils.RecipientIsNotSpecifiedErrorMessage, activityUi.Recipient); } } if (TemplateIsRequired(activityUi)) { ValidationManager.ValidateTemplateList(activityUi.TemplateList); } return(Task.FromResult(0)); }
private bool TemplateIsRequired(ActivityUi activityUi) { return(activityUi.BasedOnTemplateOption.Selected); }
private bool RecipientIsRequired(ActivityUi activityUi) { return(activityUi.SentToRecipientOption.Selected); }
private bool AtLeastOneNotificationIsSelected(ActivityUi activityUi) { return(activityUi.EnvelopeRecievedOption.Selected || activityUi.EnvelopeSentOption.Selected || activityUi.EnvelopeSignedOption.Selected); }
private ActivityUi CreateActivityUi() { var result = new ActivityUi { ActivityDescription = new TextArea { IsReadOnly = true, Label = "", Value = "<p>Process incoming DocuSign Envelope notifications if the following are true:</p>" }, EnvelopeSentOption = new CheckBox { Label = "You sent a DocuSign Envelope", Name = EnvelopeSentEventname, Events = new List <ControlEvent> { ControlEvent.RequestConfig }, }, EnvelopeRecievedOption = new CheckBox { Label = "Someone received an Envelope you sent", Name = EnvelopeRecievedEventName, Events = new List <ControlEvent> { ControlEvent.RequestConfig } }, EnvelopeSignedOption = new CheckBox { Label = "One of your Recipients signed an Envelope", Name = RecipientSignedEventName, Events = new List <ControlEvent> { ControlEvent.RequestConfig } }, Recipient = new TextBox { Label = "", Name = "RecipientValue", Events = new List <ControlEvent> { ControlEvent.RequestConfig } }, SentToRecipientOption = new RadioButtonOption { Selected = false, Name = "recipient", Value = "Was sent to a specific recipient" }, TemplateList = new DropDownList { Label = "", Name = "UpstreamCrate", Events = new List <ControlEvent> { ControlEvent.RequestConfig }, ShowDocumentation = ActivityResponseDTO.CreateDocumentationResponse("Minicon", "ExplainMonitoring") }, BasedOnTemplateOption = new RadioButtonOption { Selected = false, Name = "template", Value = "Was based on a specific template" }, TemplateRecipientOptionSelector = new RadioButtonGroup { Label = "The envelope:", GroupName = "TemplateRecipientPicker", Name = "TemplateRecipientPicker", Events = new List <ControlEvent> { new ControlEvent("onChange", "requestConfig") } } }; result.BasedOnTemplateOption.Controls = new List <ControlDefinitionDTO> { result.TemplateList }; result.SentToRecipientOption.Controls = new List <ControlDefinitionDTO> { result.Recipient }; result.TemplateRecipientOptionSelector.Radios = new List <RadioButtonOption> { result.SentToRecipientOption, result.BasedOnTemplateOption }; return(result); }
private bool EnvelopeConditionIsSelected(ActivityUi activityUi) { return(activityUi.SentToRecipientOption.Selected || activityUi.BasedOnTemplateOption.Selected); }