Пример #1
0
            public async Task <int> Handle(RegisterUserCommand request, CancellationToken cancellationToken)
            {
                string hash = EncryptionLib.GetRandomKey(64);
                string encryptedPassword = EncryptionLib.Encrypt(request.User.Password, hash);

                Domain.Entities.Cart cart = new Domain.Entities.Cart()
                {
                    Products = new List <Domain.Entities.ProductCart>(),
                    Total    = 0
                };
                dbContext.Carts.Add(cart);

                await dbContext.SaveChangesAsync(cancellationToken);

                Domain.Entities.User user = new Domain.Entities.User
                {
                    UserName       = request.User.UserName,
                    Password       = encryptedPassword,
                    Salt           = hash,
                    CreatedAt      = DateTime.Now,
                    UpdatedAt      = DateTime.Now,
                    Email          = request.User.Email,
                    IsDeleted      = false,
                    EmailConfirmed = true,
                    IsLocked       = false,
                    RoleId         = 2,
                    CartId         = cart.CartId
                };
                dbContext.Users.Add(user);
                request.User.UserId = user.UserId;

                return(await dbContext.SaveChangesAsync(cancellationToken));
            }
Пример #2
0
        //NavigationLocationFilter is used to disable the Menu Check Out button when ever we have navigate to the Check out view.
        public PartialViewResult CartSummary(Domain.Entities.Cart cart, string location)
        {
            if (location != null && location.Equals("Cart"))
            {
                ViewBag.DisableMenuCheckOut = true;
            }

            return(PartialView(cart));
        }
Пример #3
0
 public static CartModel From(Domain.Entities.Cart cart)
 {
     return(new CartModel()
     {
         Id = cart.Id,
         CreatedAt = cart.CreatedAt,
         IsCurrent = cart.IsCurrent,
         Items = cart.Items?.Select(CartItemModel.From).ToList()
     });
 }
Пример #4
0
        public async Task <Domain.Entities.Cart> AddOrUpdateAsync(Domain.Entities.Cart item)
        {
            var created = await _database.StringSetAsync(item.Id, JsonConvert.SerializeObject(item));

            if (!created)
            {
                return(null);
            }

            return(await GetAsync(new Guid(item.Id)));
        }
Пример #5
0
 public ActionResult Checkout(Domain.Entities.Cart cart, string returnUrl)
 {
     if (cart.CartItems.Count() > 0)
     {
         ViewBag.ReturnUrl = returnUrl;
         return(View(new Domain.Entities.ShippingDetails()));
     }
     else
     {
         return(RedirectToAction("Index", new { returnUrl, cartIsEmpty = true }));
     }
 }
Пример #6
0
        public async System.Threading.Tasks.Task <RedirectToRouteResult> AddToCart(Domain.Entities.Cart cart, int productId, string returnUrl)
        {
            string key = ConfigurationManager.AppSettings.Get("ProductListCacheKey");
            IEnumerable <Domain.Entities.Product> productList = await _productRepository.Products(key);

            Domain.Entities.Product product = productList.FirstOrDefault(p => p.ProductId == productId);
            if (product != null)
            {
                cart.AddItem(product, 1);
            }
            return(RedirectToAction("Index", new { returnUrl }));
        }
Пример #7
0
        public override async Task <CartModel> DoHandleRequest(CreateCartRequest request, CancellationToken cancellationToken)
        {
            var cart = new Domain.Entities.Cart()
            {
                UserId    = request.User.Id,
                CreatedAt = DateTime.UtcNow,
                IsCurrent = true,
                Items     = new CartItem[] { }
            };

            await RecipeDomainContext.Carts.AddAsync(cart);

            await RecipeDomainContext.SaveChangesAsync();

            return(CartModel.From(cart));
        }
Пример #8
0
        public ViewResult Checkout(Domain.Entities.Cart cart, Domain.Entities.ShippingDetails shippingDetails)
        {
            if (cart.CartItems.Count() == 0)
            {
                ModelState.AddModelError("", "Sorry but your cart is empty!");
            }

            if (ModelState.IsValid)
            {
                _orderProcessor.ProcessOrder(cart, shippingDetails);
                cart.ClearCartItems();
                return(View("Completed"));
            }
            else
            {
                return(View(new Domain.Entities.ShippingDetails()));
            }
        }
Пример #9
0
        public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            const string sessionKey = "Cart";

            Domain.Entities.Cart cart = null;
            if (controllerContext.HttpContext.Session != null)
            {
                cart = (Domain.Entities.Cart)controllerContext.HttpContext.Session[sessionKey];
                if (cart == null)
                {
                    cart = new Domain.Entities.Cart();
                    if (controllerContext.HttpContext.Session != null)
                    {
                        controllerContext.HttpContext.Session[sessionKey] = cart;
                    }
                }
            }

            return(cart);
        }
Пример #10
0
        public void Add_New_Lines()
        {
            //Arrnage
            Product P1 = new Product {
                ProductID = 1, Name = "P1"
            };
            Product P2 = new Product {
                ProductID = 2, Name = "P2"
            };

            //Arrange - new Cart
            SportsStore.Domain.Entities.Cart target = new Domain.Entities.Cart();

            //Act
            target.AddItem(P1, 1);
            target.AddItem(P2, 1);
            CartLine[] results = target.Lines.ToArray();

            //ASsert
            Assert.AreEqual(results.Length, 2);
            Assert.AreEqual(results[0].Product, P1);
            Assert.AreEqual(results[1].Product, P2);
        }
Пример #11
0
        //Combine
        public void Can_Add_Quantity_For_Exisiting_Lines()
        {
            //Arrange
            Product p1 = new Product {
                ProductID = 1, Name = "p1"
            };
            Product p2 = new Product {
                ProductID = 2, Name = "p2"
            };

            //Act
            SportsStore.Domain.Entities.Cart target = new Domain.Entities.Cart();

            target.AddItem(p1, 1);
            target.AddItem(p2, 1);
            target.AddItem(p1, 10);

            CartLine[] result = target.Lines.OrderBy(a => a.Product.ProductID).ToArray();

            //Asset
            Assert.AreEqual(result.Length, 2);
            Assert.AreEqual(result[0].Qunatity, 11);
            Assert.AreEqual(result[1].Qunatity, 1);
        }
Пример #12
0
        public async System.Threading.Tasks.Task <RedirectToRouteResult> RemoveFromCart(Domain.Entities.Cart cart, int productId, string returnUrl)
        {
            IEnumerable <Domain.Entities.Product> productList = await _productRepository.Products();

            Domain.Entities.Product product = productList.FirstOrDefault(p => p.ProductId == productId);
            if (product != null)
            {
                cart.RemoveCartItem(product);
            }
            return(RedirectToAction("Index", new { returnUrl }));
        }
Пример #13
0
 public ViewResult Index(Domain.Entities.Cart cart, string returnUrl, bool menuCheckOutClicked = false)
 {
     return(View(new Models.CartIndexViewModel {
         Cart = cart, ReturnUrl = returnUrl
     }));
 }