Beispiel #1
0
        public async Task <string[]> EvaluateAssociationsAsync(AssociationEvaluationContext context)
        {
            if (context.ProductsToMatch.IsNullOrEmpty())
            {
                return(Array.Empty <string>());
            }

            var store = await _storeService.GetByIdAsync(context.StoreId);

            var products = await _itemService.GetByIdsAsync(context.ProductsToMatch,
                                                            $"{ItemResponseGroup.WithProperties | ItemResponseGroup.WithOutlines}", store.Catalog);

            var result = new HashSet <string>();

            foreach (var product in products)
            {
                var associationCondition = await _associationsConditionSelector.GetAssociationConditionAsync(context, product);

                if (associationCondition != null)
                {
                    var searchResult = await _associationsConditionEvaluator.EvaluateAssociationConditionAsync(associationCondition);

                    result.AddRange(searchResult);
                }
            }

            return(result.ToArray());
        }
Beispiel #2
0
        public async Task <ActionResult <string[]> > PreviewDynamicAssociations([FromBody] AssociationConditionEvaluationRequest conditionRequest)
        {
            ValidateParameters(conditionRequest);

            var authorizationResult = await _authorizationService.AuthorizeAsync(
                User,
                conditionRequest,
                new AssociationAuthorizationRequirement(CatalogModuleConstants.Security.Permissions.Read)
                );

            if (!authorizationResult.Succeeded)
            {
                return(Unauthorized());
            }

            var result = await _associationConditionEvaluator.EvaluateAssociationConditionAsync(conditionRequest);

            return(Ok(result));
        }