/// <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)); }
/// <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); }
/// <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)); }
/// <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); }
/// <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); }
public TransientCart(string identifier, string createUser) { info = new CartInfo(identifier, DateTime.Now, createUser, DateTime.Now, createUser, false); lines = new Dictionary<string, ICartLine>(); }