Example #1
0
        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);
        }
Example #3
0
        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);
        }
Example #11
0
        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;
        }
Example #12
0
        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);
            }
        }
Example #17
0
        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);
 }