private void ValidatePlanName(PlanDTO plan, ICrateStorage crateStorage) { var configurationControls = crateStorage .CrateContentsOfType <StandardConfigurationControlsCM>() .SingleOrDefault(); var actionUi = new ActivityUi(); actionUi.ClonePropertiesFrom(configurationControls); var criteria = JsonConvert.DeserializeObject <List <FilterConditionDTO> >( actionUi.QueryBuilder.Value ); Assert.AreEqual(plan.Name.Trim().ToLower(), FilterConditionHelper.ParseConditionToText(criteria).Trim().ToLower()); }
public override async Task Run() { var salesforceObject = ActivityUI.SalesforceObjectSelector.selectedKey; if (string.IsNullOrEmpty(salesforceObject)) { throw new ActivityExecutionException( "No Salesforce object is selected", ActivityErrorCode.DESIGN_TIME_DATA_MISSING); } var salesforceObjectFields = Storage .FirstCrate <FieldDescriptionsCM>(x => x.Label == QueryFilterCrateLabel) .Content .Fields; var filterValue = ActivityUI.SalesforceObjectFilter.Value; var filterDataDTO = JsonConvert.DeserializeObject <List <FilterConditionDTO> >(filterValue); //If without filter, just get all selected objects //else prepare SOQL query to filter the objects based on the filter conditions var parsedCondition = string.Empty; if (filterDataDTO.Count > 0) { parsedCondition = FilterConditionHelper.ParseConditionToText(filterDataDTO); } var resultObjects = await _salesforceManager .Query( salesforceObject.ToEnum <SalesforceObjectType>(), salesforceObjectFields, parsedCondition, AuthorizationToken ); Payload.Add( Crate <StandardTableDataCM> .FromContent( RuntimeDataCrateLabel, resultObjects ) ); }
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); }
public override async Task Run() { var feedText = FeedText; if (IsPostingToQueryiedChatter) { try { var chatters = await _salesforceManager.Query(SelectedChatter.ToEnum <SalesforceObjectType>(), new[] { new FieldDTO("Id") }, FilterConditionHelper.ParseConditionToText(JsonConvert.DeserializeObject <List <FilterConditionDTO> >(ChatterFilter)), AuthorizationToken); var tasks = new List <Task <string> >(chatters.Table.Count); foreach (var chatterId in chatters.DataRows.Select(x => x.Row[0].Cell.Value)) { Logger.Info($"Posting message to chatter id: {chatterId}"); tasks.Add(_salesforceManager.PostToChatter(StripHTML(feedText), chatterId, AuthorizationToken).ContinueWith(x => { Logger.Info($"Posting message to chatter succeded with feedId: {x.Result}"); return(x.Result); })); } await Task.WhenAll(tasks); //If we did not find any chatter object we don't fail activity execution but rather returns empty list and inform caller about it if (!chatters.HasDataRows) { Logger.Info("No salesforce objects were found to use as chatter id."); Success($"No {SelectedChatter} that satisfies specified conditions were found. No message were posted"); } else { var resultPayload = new StandardPayloadDataCM(); resultPayload.PayloadObjects.AddRange(tasks.Select(x => new PayloadObjectDTO(new KeyValueDTO(FeedIdKeyName, x.Result)))); Payload.Add(Crate <StandardPayloadDataCM> .FromContent(PostedFeedCrateLabel, resultPayload)); } } catch (Exception ex) { RaiseError(ex.Message); return; } } else { var incomingChatterId = IncomingChatterId; if (string.IsNullOrWhiteSpace(incomingChatterId)) { throw new ActivityExecutionException("Upstream crates doesn't contain value for feed parent Id"); } Logger.Info($"Posting message to chatter id: {incomingChatterId}"); var feedId = await _salesforceManager.PostToChatter(StripHTML(feedText), incomingChatterId, AuthorizationToken); Logger.Info($"Posting message to chatter succeded with feedId: {feedId}"); Payload.Add(Crate.FromContent(PostedFeedCrateLabel, new StandardPayloadDataCM(new KeyValueDTO(FeedIdKeyName, feedId)))); } }