public async Task <ICollection <UserGroupInfo> > EvaluateUserGroupsAsync(IEvaluationContext context) { var result = new List <UserGroupInfo>(); if (context is UserGroupEvaluationContext evaluationContext) { var customerSegments = (await _customerSegmentSearchService.SearchCustomerSegmentsAsync(new CustomerSegmentSearchCriteria { IsActive = true })).Results; result = customerSegments .Where(customerSegment => !customerSegment.UserGroup.IsNullOrEmpty() && customerSegment.ExpressionTree.IsSatisfiedBy(new CustomerSegmentExpressionEvaluationContext { Customer = evaluationContext.Customer })) .Select(customerSegment => new UserGroupInfo { IsDynamic = true, DynamicRuleId = customerSegment.Id, DynamicRuleName = customerSegment.Name, UserGroup = customerSegment.UserGroup }) .ToList(); var staticUserGroups = evaluationContext.Customer.Groups.Select(group => new UserGroupInfo { UserGroup = group }); result.AddRange(staticUserGroups); } return(result); }
public async Task <ActionResult <CustomerSegmentSearchResult> > SearchCustomerSegments([FromBody] CustomerSegmentSearchCriteria criteria) { var result = await _customerSegmentSearchService.SearchCustomerSegmentsAsync(criteria); return(Ok(result)); }