Ejemplo n.º 1
0
        public virtual async Task <IShoppingCartBuilder> GetOrCreateCartAsync(string storeId, string customerId, string cartName, string currency, string cultureName)
        {
            var criteria = new ShoppingCartSearchCriteria
            {
                CustomerId = customerId,
                StoreId    = storeId,
                Name       = cartName,
                Currency   = currency
            };

            var searchResult = await _shoppingCartSearchService.SearchCartAsync(criteria);

            Cart = searchResult.Results.FirstOrDefault();

            if (Cart == null)
            {
                //TODO
                //var customerContact = _memberService.GetByIds(new[] { customerId }).OfType<Contact>().FirstOrDefault();
                Cart = AbstractTypeFactory <ShoppingCart> .TryCreateInstance();

                Cart.Name         = cartName;
                Cart.LanguageCode = cultureName;
                Cart.Currency     = currency;
                Cart.CustomerId   = customerId;
                //Cart.CustomerName = customerContact != null ? customerContact.FullName : "Anonymous";
                //Cart.IsAnonymous = customerContact == null;
                Cart.StoreId = storeId;

                await _shoppingCartService.SaveChangesAsync(new[] { Cart });

                Cart = await _shoppingCartService.GetByIdAsync(Cart.Id);
            }

            return(this);
        }
        public async Task <CartAggregate> GetCartAsync(string cartName, string storeId, string userId, string language, string currencyCode, string type = null, string responseGroup = null)
        {
            var criteria = new ShoppingCartSearchCriteria
            {
                StoreId = storeId,
                // IMPORTANT! Need to specify customerId, otherwise any user cart could be returned while we expect anonymous in this case.
                CustomerId    = userId ?? AnonymousUser.UserName,
                Name          = cartName,
                Currency      = currencyCode,
                Type          = type,
                ResponseGroup = EnumUtility.SafeParseFlags(responseGroup, CartResponseGroup.Full).ToString()
            };

            var cartSearchResult = await _shoppingCartSearchService.SearchCartAsync(criteria);

            var cart = cartSearchResult.Results.FirstOrDefault();

            if (cart != null)
            {
                return(await InnerGetCartAggregateFromCartAsync(cart.Clone() as ShoppingCart, language));
            }

            return(null);
        }
        public async Task <ActionResult <GenericSearchResult <ShoppingCart> > > Search(ShoppingCartSearchCriteria criteria)
        {
            var result = await _searchService.SearchCartAsync(criteria);

            return(Ok(result));
        }