Пример #1
0
        public void Configure(IApplicationBuilder app, IHostingEnvironment env,
                              AddToCartContext addToCartContext)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler(appBuilder =>
                {
                    appBuilder.Run(async context =>
                    {
                        context.Response.StatusCode = 500;
                        await context.Response.WriteAsync("Internal error occurred.");
                    });
                });
            }

            addToCartContext.EnsureSeedDataForContext();
            addToCartContext.EnsureSeedDataForUserContext();

            AutoMapper.Mapper.Initialize(cfg =>
            {
                cfg.CreateMap <IEnumerable <Entities.Category>, Models.CategoryListDto>()
                .ConvertUsing <CategoryListConverter>();
            });

            app.UseMvc();
        }
Пример #2
0
        public JsonResult AddProduct(int postId, int quantity, decimal price, FormCollection form)
        {
            var post = _postService.GetById(postId);

            var ctx = new AddToCartContext
            {
                Post     = post,
                Quantity = quantity,
                Price    = price
            };

            //Create cart
            _shoppingCartItemService.AddToCart(ctx);

            var model = PrepareMiniShoppingCartModel();

            var jsonResult =
                Json(new { success = true, list = this.RenderRazorViewToString("_Order.TopCart", model) },
                     JsonRequestBehavior.AllowGet);

            return(jsonResult);
        }
Пример #3
0
        /// <summary>
        /// Update cart khi thay đổi số lượng
        /// </summary>
        /// <param name="postId"></param>
        /// <param name="quantity"></param>
        /// <param name="price"></param>
        /// <returns>IEnumber tất cả sản phẩm của khách hàng</returns>
        public JsonResult UpdateCartItem(int postId, int quantity, decimal price)
        {
            //Update cart theo số lượng mới
            var post = _postService.GetById(postId);

            var ctx = new AddToCartContext
            {
                Post     = post,
                Quantity = quantity,
                Price    = price
            };

            //Update cart
            _shoppingCartItemService.AddToCart(ctx);

            var model = PrepareMiniShoppingCartModel();

            var jsonResult =
                Json(new { success = true, list = this.RenderRazorViewToString("_Cart.CartItem", model) },
                     JsonRequestBehavior.AllowGet);

            return(jsonResult);
        }
Пример #4
0
        public async Task <IActionResult> Index()
        {
            var storeId  = Services.StoreContext.CurrentStore.Id;
            var customer = Services.WorkContext.CurrentCustomer;
            var cart     = await _shoppingCartService.GetCartItemsAsync(storeId : storeId);

            if (!cart.Any())
            {
                return(RedirectToRoute("ShoppingCart"));
            }

            if (customer.IsGuest() && !_orderSettings.AnonymousCheckoutAllowed)
            {
                return(new UnauthorizedResult());
            }

            customer.ResetCheckoutData(storeId);

            // Validate checkout attributes.
            var checkoutAttributes = customer.GenericAttributes.CheckoutAttributes;

            var warnings = new List <string>();
            var isValid  = await _shoppingCartValidator.ValidateCartItemsAsync(cart, warnings, true, checkoutAttributes);

            if (!isValid)
            {
                NotifyWarning(string.Join(Environment.NewLine, warnings.Take(3)));
                return(RedirectToRoute("ShoppingCart"));
            }

            var validatingCartEvent = new ValidatingCartEvent(cart, warnings, customer);
            await Services.EventPublisher.PublishAsync(validatingCartEvent);

            if (validatingCartEvent.Result != null)
            {
                return(validatingCartEvent.Result);
            }

            if (warnings.Any())
            {
                NotifyWarning(string.Join(Environment.NewLine, warnings.Take(3)));
                return(RedirectToRoute("ShoppingCart"));
            }

            // Validate each shopping cart item.
            foreach (var cartItem in cart)
            {
                var ctx = new AddToCartContext
                {
                    StoreId    = storeId,
                    Product    = cartItem.Item.Product,
                    BundleItem = cartItem.Item.BundleItem,
                    ChildItems = cartItem.ChildItems.Select(x => x.Item).ToList()
                };

                isValid = await _shoppingCartValidator.ValidateAddToCartItemAsync(ctx, cartItem.Item, cart);

                if (!isValid)
                {
                    warnings.AddRange(ctx.Warnings);
                    NotifyWarning(string.Join(Environment.NewLine, warnings.Take(3)));
                    return(RedirectToRoute("ShoppingCart"));
                }
            }

            await _db.SaveChangesAsync();

            return(RedirectToAction(nameof(BillingAddress)));
        }
Пример #5
0
 public AddToCartRepository(AddToCartContext context)
 {
     _context = context;
 }