Пример #1
0
        /// <summary>
        /// Indexes this instance.
        /// </summary>
        /// <returns></returns>
        public IActionResult Index()
        {
            string cartIdStr = Request.Cookies[Labels.CookieName];

            Guid cartId;

            Guid.TryParse(cartIdStr, out cartId);

            if (Guid.Empty.Equals(cartId) || this.CartService.GetCartInfo(cartId) == null)
            {
                ICartInfo cart = this.CartService.CreateCart();

                if (cart != null)
                {
                    CookieOptions option = new CookieOptions();

                    option.Expires = DateTime.Now.AddHours(1);

                    Response.Cookies.Append(Labels.CookieName, cart.CartId.ToString(), option);

                    return(LocalRedirect(Request.Path));
                }
            }

            return(View("Index", cartId));
        }
Пример #2
0
        /// <summary>
        /// Adds the product.
        /// </summary>
        /// <param name="cartId">The cart identifier.</param>
        /// <param name="product">The product.</param>
        /// <returns>
        /// The added cart
        /// </returns>
        public bool AddProduct(Guid cartId, IProductInfo product)
        {
            ICartInfo existingCart = this.Request <CartInfo>(HttpMethod.Get, cartId);

            if (existingCart == null || existingCart.Products.Any(p => p.ProductId.Equals(product.ProductId)))
            {
                return(false);
            }

            ICartInfo cart = new CartInfo()
            {
                CartId      = cartId,
                ProductsRaw = new ProductInfo[] { product as ProductInfo }
            };

            return(this.Request <CartInfo>(HttpMethod.Put, null, cart) != null);
        }
Пример #3
0
        /// <summary>
        /// Invokes the specified cart identifier.
        /// </summary>
        /// <param name="cartId">The cart identifier.</param>
        /// <returns></returns>
        public IViewComponentResult Invoke(Guid cartId)
        {
            ICartInfo cartInfo = this.CartService.GetCartInfo(cartId) ?? new CartInfo();

            CartViewModel cart = new CartViewModel()
            {
                CartId   = cartId,
                Elements = cartInfo.Products.Select(m =>
                                                    new CartElementViewModel()
                {
                    Product = this.CatalogService.GetProductById(m.ProductId),
                    Amount  = m.Amount
                })
            };

            cart.Total = cart.Elements.Aggregate((float)0, (t, e) => t + e.Amount * e.Product.Price);

            return(View("Index", cart));
        }
Пример #4
0
        /// <summary>
        /// Removes the product.
        /// </summary>
        /// <param name="cartId">The cart identifier.</param>
        /// <param name="productId">The product identifier.</param>
        /// <returns>
        /// True if remocing of the product was successful, false otherwise
        /// </returns>
        public bool RemoveProduct(Guid cartId, Guid productId)
        {
            ICartInfo existingCart = this.Request <CartInfo>(HttpMethod.Get, cartId);

            if (existingCart == null || !existingCart.Products.Any(p => p.ProductId.Equals(productId)))
            {
                return(false);
            }

            ICartInfo cart = new CartInfo()
            {
                CartId      = cartId,
                ProductsRaw = new ProductInfo[] { new ProductInfo()
                                                  {
                                                      ProductId = productId, Amount = 0
                                                  } }
            };

            return(this.Request <CartInfo>(HttpMethod.Put, null, cart) != null);
        }
Пример #5
0
        /// <summary>
        /// Requests the specified method.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="method">The method.</param>
        /// <param name="id">The identifier.</param>
        /// <param name="content">The content.</param>
        /// <returns>Request result</returns>
        protected T Request <T>(HttpMethod method, Guid?id, ICartInfo content = null) where T : class
        {
            IAuthenticationInfo authenticationInfo;

            if ((authenticationInfo = this.TokenService.GetToken()) == null || authenticationInfo.Token == null)
            {
                return(null);
            }

            Task <T> result = new Request <T>().Execute(new Parameter <T>()
            {
                Url          = string.Format(this.ConfigurationService[Labels.Url], id.HasValue ? id.Value.ToString() : string.Empty),
                Method       = method,
                Deserializer = new JsonDeserializer <T>(),
                Content      = content != null ? new JsonContent(content) : null,
                Header       = new Header(new NameValueCollection {
                    { Labels.Authorization, string.Format(Labels.Bearer, authenticationInfo.Token) }
                })
            });

            result.Wait();

            return(result.Result);
        }
Пример #6
0
		public TransientCart(string identifier, string createUser)
		{
			info = new CartInfo(identifier, DateTime.Now, createUser, DateTime.Now, createUser, false);

			lines = new Dictionary<string, ICartLine>();
		}