private Cart GetCart(string cartId, CommerceContext commerceContext, string baseUrl)
        {
            var shopName    = commerceContext.CurrentShopName();
            var shopperId   = commerceContext.CurrentShopperId();
            var customerId  = commerceContext.CurrentCustomerId();
            var environment = commerceContext.Environment.Name;

            var url = string.Format(Constants.Settings.EndpointUrl, baseUrl, cartId);

            var client = new HttpClient();

            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(Constants.Settings.AppJson));
            client.DefaultRequestHeaders.Add(Constants.Settings.ShopName, shopName);
            client.DefaultRequestHeaders.Add(Constants.Settings.ShopperId, shopperId);
            client.DefaultRequestHeaders.Add(Constants.Settings.Language, "en-US");
            client.DefaultRequestHeaders.Add(Constants.Settings.Environment, environment);
            client.DefaultRequestHeaders.Add(Constants.Settings.CustomerId, customerId);
            client.DefaultRequestHeaders.Add(Constants.Settings.Currency, commerceContext.CurrentCurrency());
            client.DefaultRequestHeaders.Add(Constants.Settings.Roles, Constants.Settings.CartRoles);


            try
            {
                var cart = new Cart();

                var response = client.GetAsync(url).Result;

                if (response != null)
                {
                    var task = response.Content.ReadAsStreamAsync().ContinueWith(t =>
                    {
                        var stream = t.Result;
                        using (var reader = new StreamReader(stream))
                        {
                            var responseValue = reader.ReadToEnd();
                            cart = JsonConvert.DeserializeObject <Cart>(responseValue);
                        }
                    });

                    task.Wait();
                }

                client.Dispose();
                return(cart);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                client.Dispose();
                return(null);
            }
        }
        /// <summary>
        /// The process of the command
        /// </summary>
        /// <param name="commerceContext">
        /// The commerce context
        /// </param>
        /// <param name="cartId"></param>
        /// <returns>
        /// The <see cref="Task"/>.
        /// </returns>
        public async Task <Cart> Process(CommerceContext commerceContext, string cartId)
        {
            using (var activity = CommandActivity.Start(commerceContext, this))
            {
                var arg = new ResolveCartArgument(commerceContext.CurrentShopName(), cartId,
                                                  commerceContext.CurrentShopperId());

                var cart = await _getCartPipeline.Run(arg, commerceContext.GetPipelineContextOptions());

                var cartComponent = cart.GetComponent <TestSimulationComponent>();
                cartComponent.Status = true;

                var persistEntityArgument = await this._persistEntityPipeline.Run(new PersistEntityArgument(cart), commerceContext.GetPipelineContextOptions());

                return(cart);
            }
        }
コード例 #3
0
        public bool Evaluate(IRuleExecutionContext context)
        {
            //itemId = ID to check in purchase order history
            //itemInCartItemId = Item in cart to check in order history to give discount
            //If customer has purchased itemId and has not purchased itemInCartItemId this rule returns true
            string itemId           = this.TargetItemId.Yield(context);
            string itemInCartItemId = this.CurrentItemInCartId.Yield(context);
            bool   valid            = false;

            CommerceContext commerceContext = context.Fact <CommerceContext>((string)null);

            if (commerceContext == null || !commerceContext.CurrentUserIsRegistered() || string.IsNullOrEmpty(itemId))
            {
                return(false);
            }
            //UPDATED TO USE CURRENTSHOPPERID VS EMPTY CURRENTCUSTOMERID
            string listName             = string.Format(commerceContext.GetPolicy <KnownOrderListsPolicy>().CustomerOrders, (object)commerceContext.CurrentShopperId());
            CommerceList <Order> result = Task.Run <CommerceList <Order> >((Func <Task <CommerceList <Order> > >)(() => this._getEntitFindEntitiesInListCommand.Process <Order>(commerceContext, listName, 0, int.MaxValue))).Result;
            List <Order>         source = result != null?result.Items.ToList <Order>() : (List <Order>)null;

            if (source == null || !source.Any <Order>())
            {
                return(false);
            }
            if (!this.MatchesAnItem(context))
            {
                if (
                    source.Any <Order>(
                        (Func <Order, bool>)(
                            o => o.Lines.Any <CartLineComponent>(
                                (Func <CartLineComponent, bool>)(
                                    l => l.ItemId.StartsWith(itemId, StringComparison.OrdinalIgnoreCase)
                                    )))))
                {
                    valid = source.Where <Order>(
                        (Func <Order, bool>)(
                            o => o.Lines.Where <CartLineComponent>(
                                (Func <CartLineComponent, bool>)(
                                    l => l.ItemId.Contains(itemInCartItemId)
                                    )).FirstOrDefault() != null)).FirstOrDefault() == null;
                    return(valid);
                }
            }
            if (source.Any <Order>(
                    (Func <Order, bool>)(
                        o => o.Lines.Any <CartLineComponent>(
                            (Func <CartLineComponent, bool>)(
                                l => l.ItemId.Equals(itemId)
                                )))))
            {
                valid = source.Where <Order>(
                    (Func <Order, bool>)(
                        o => o.Lines.Where <CartLineComponent>(
                            (Func <CartLineComponent, bool>)(
                                l => !l.ItemId.Equals(itemInCartItemId, StringComparison.OrdinalIgnoreCase)
                                )).FirstOrDefault() == null)).FirstOrDefault() == null;
                return(valid);
            }
            return(valid);
        }
コード例 #4
0
        public virtual async Task <WishList> Process(CommerceContext commerceContext, string wishListId, bool secureResult = true)
        {
            using (CommandActivity.Start(commerceContext, this))
            {
                var context = commerceContext.GetPipelineContextOptions();
                var resolveWishListArgument = new ResolveWishListArgument(commerceContext.CurrentShopName(), wishListId, commerceContext.CurrentShopperId());
                var objects = commerceContext.GetObjects <WishList>();
                if (objects.Any(p => p.Id == wishListId))
                {
                    commerceContext.Logger.LogTrace(string.Format("GetWishListCommand.AlreadyLoaded: WishListId={0}", wishListId), Array.Empty <object>());
                    return(objects.FirstOrDefault(p => p.Id == wishListId));
                }
                commerceContext.Logger.LogTrace(string.Format("GetWishListCommand.LoadingWishList: WishListId={0}", wishListId), Array.Empty <object>());
                var wishList = await _pipeline.Run(resolveWishListArgument, context);

                commerceContext.Logger.LogTrace(string.Format("GetWishListCommand.WishListLoaded: WishListId={0}", wishListId), Array.Empty <object>());

                return(wishList);
            }
        }