public async Task <ActionResult> Order(CartDetailItem model) { if (UserManager.User != null) { if (ModelState.IsValid) { ShoppingService service = new ShoppingService(); Order order = await service.order(UserManager.User.Id); ModelState.Clear(); if (order != null) { return(this.Json(new { ResponseType = 0, Msg = "Thank you so much for your order!" })); } } return(this.Json(new { ResponseType = 1, Msg = "Something goes wrong, please try again later" })); } return(this.Json(new { ResponseType = Config.NEED_LOGIN, Msg = "Please login first" })); }
public async Task <ActionResult> UpdateQuantity(CartDetailItem model) { if (ModelState.IsValid) { ShoppingService service = new ShoppingService(); CartDetailItem cartDetailItem = await service.updateQuantity(model); ModelState.Clear(); if (cartDetailItem != null) { return(this.Json(new { EnableSuccess = true, SuccessTitle = "Successful!", SuccessMsg = "Thank you so much for your order!" })); } } return(this.Json(new { EnableError = true, ErrorTitle = "Error", ErrorMsg = "Something goes wrong, please try again later" })); }
public async Task <CartDetailItem> updateQuantity(CartDetailItem item) { HttpConnection http = new HttpConnection(); String url = Constant.PUT_UPDATE_QUANTITY_URL; return(await http.putCartItemAsync(url, item)); }
public async Task <CartDetailItem> addCartItem(CartDetailItem item) { HttpConnection http = new HttpConnection(); String url = Constant.POST_CART_ITEM_URL; return(await http.postCartItemAsync(url, item)); }
public async Task <CartDetailItem> getCartItemAsync(string path) { CartDetailItem obj = null; HttpResponseMessage response = await client.GetAsync(path); if (response.IsSuccessStatusCode) { obj = await response.Content.ReadAsAsync <CartDetailItem>(); } return(obj); }
public async Task <CartDetailItem> putCartItemAsync(string path, CartDetailItem item) { CartDetailItem cartItem = null; HttpResponseMessage response = await client.PutAsJsonAsync(path, item); if (response.IsSuccessStatusCode) { // Deserialize the updated product from the response body. cartItem = await response.Content.ReadAsAsync <CartDetailItem>(); } return(cartItem); }
public async Task <ActionResult> UpdateQuantity(CartDetailItem model) { if (ModelState.IsValid) { // update amount to cart detail table' if (model.Amount == 0) { db.CartDetails.Where(p => p.CartDetailsId == model.CartDetailsId) .ToList().ForEach(p => db.CartDetails.Remove(p)); await db.SaveChangesAsync(); var list = db.CartDetails.Where(p => p.CartId == model.CartId).ToList(); if (list.Count() <= 0) { db.Carts.Where(p => p.CartId == model.CartId) .ToList().ForEach(p => db.Carts.Remove(p)); } await db.SaveChangesAsync(); } else { CartDetail cartDetail = db.CartDetails.FirstOrDefault(item => item.CartDetailsId == model.CartDetailsId); cartDetail.Amount = (short)(model.Amount); await db.SaveChangesAsync(); } ModelState.Clear(); return(this.Json(new { ResponseType = Config.SUCCESS, Msg = "Update quantity successfully!" })); } return(this.Json(new { ResponseType = Config.SUCCESS, Msg = "Something goes wrong, please try again later" })); }
//public ActionResult Login(String username, String password) public async Task <ActionResult> Login([Bind(Include = "Username,Password")] Logon logon) { if (ModelState.IsValid) { // Authenticate the user. if (UserManager.ValidateUser(logon, Response)) { /* move temporary shopping cart to DB */ string dateOfOpen = string.Empty; // get tmp Cart in cookie HttpCookie reqCartInfoCookies = HttpContext.Request.Cookies["CartInfo"]; if (reqCartInfoCookies != null) // there is a temporary Cart in cookies { dateOfOpen = reqCartInfoCookies["DateOfOpen"].ToString(); Cart cart = null; // get existing Cart ShoppingService shoppingService = new ShoppingService(); cart = await shoppingService.getCart(UserManager.User.Id); // there is no existing Shopping Cart for this user -> create new Shopping Cart if (cart == null) { cart = new Cart(); cart.UserId = UserManager.User.Id; cart.DateOpen = DateTime.Parse(dateOfOpen); // add cart into system cart = await shoppingService.addCart(cart); } HttpCookie reqIDListCookies = Request.Cookies["ProductDetailIDlist"]; if (reqIDListCookies != null) { string dataAsString = reqIDListCookies.Value; if (!dataAsString.Equals(string.Empty)) { List <int> listdata = new List <int>(); listdata = dataAsString.Split(',').Select(x => Int32.Parse(x)).ToList(); for (int i = 0; i < listdata.Count(); i++) { HttpCookie reqCartItemCookies = Request.Cookies["CartItems[" + listdata[i].ToString() + "]"]; if (reqCartItemCookies != null) { CartItem cookiesItem = new JavaScriptSerializer() .Deserialize <CartItem>(reqCartItemCookies.Value); // get Cart Item of this ProductDetailId in DB int productDetailId = listdata[i]; CartDetailItem detail = await shoppingService .getCartItemByCartIdAndProductDetailsId(cart.CartId, productDetailId); if (detail == null) { detail = new CartDetailItem(); detail.UserId = UserManager.User.Id; detail.Amount = (short)cookiesItem.Amount; detail.ExtendedPrice = cookiesItem.Price; detail.Type = 0; detail.ProductDetailsId = listdata[i]; detail.CartId = cart.CartId; // add into system await shoppingService.addCartItem(detail); } else { detail.Amount += (short)cookiesItem.Amount; // update into system await shoppingService.updateQuantity(detail); } /* remove cart item of this ProductDetailId in cookies */ var respCartItemscookies = new HttpCookie("CartItems[" + listdata[i].ToString() + "]"); respCartItemscookies.Expires = DateTime.Now.AddDays(-1D); Response.Cookies.Add(respCartItemscookies); } } /* update productDetailID list in cookies */ HttpCookie respIDListCookies = new HttpCookie("ProductDetailIDlist", "") { Expires = DateTime.Now.AddDays(1) }; HttpContext.Response.Cookies.Add(respIDListCookies); } } } // Redirect to the secure area. return(RedirectToAction("Index", "Category")); } } ViewBag.LoginFailure = 1; return(View()); }
public async Task <ActionResult> Order(CartDetailItem model) { if (UserManager.User != null) { if (ModelState.IsValid) { Order order = new Order(); order.DeliveryDate = System.DateTime.Now; order.Status = 0; order.OrderDate = System.DateTime.Now; order.Note = "Note of user"; order.UserId = model.UserId; db.Orders.Add(order); //await db.SaveChangesAsync(); System.Collections.Generic.List <CartDetailItem> list = new System.Collections.Generic.List <CartDetailItem>(); list = (from c in db.CartDetails where c.CartId == model.CartId select new CartDetailItem() { Amount = c.Amount, ExtendedPrice = c.ExtendedPrice, ProductDetailsId = c.ProductDetailsId, CartDetailsId = c.CartDetailsId, CartId = c.CartId }).ToList(); for (int i = 0; i < list.Count(); i++) { OrderDetail orderDetail = new OrderDetail(); orderDetail.Amount = list[i].Amount; orderDetail.ExtendedPrice = list[i].ExtendedPrice; orderDetail.ProductDetailsId = list[i].ProductDetailsId; orderDetail.OrderId = order.OrderId; db.OrderDetails.Add(orderDetail); //var id = list[i].ProductDetailsId; // var productionDetail = db.ProductDetails.Single(item => item.ProductDetailsId == id); // reduce count in ProductDetail ProductDetail productionDetail = db.ProductDetails.FirstOrDefault(item => item.ProductDetailsId == model.ProductDetailsId); productionDetail.Amount = (short)(productionDetail.Amount - list[i].Amount); } //await db.SaveChangesAsync(); // delete cart and cartDetail //var x = db.CartDetails.Where(item => item.CartId == model.CartId); //db.CartDetails.RemoveRange(db.CartDetails.Where(c => c.CartId == model.CartId)); db.CartDetails.Where(p => p.CartId == model.CartId) .ToList().ForEach(p => db.CartDetails.Remove(p)); //var x1 = db.Carts.FirstOrDefault(item => item.CartId == model.CartId); //db.Carts.Remove(x1); db.Carts.Where(p => p.CartId == model.CartId) .ToList().ForEach(p => db.Carts.Remove(p)); await db.SaveChangesAsync(); ModelState.Clear(); return(this.Json(new { ResponseType = Config.SUCCESS, Msg = "Thank you so much for your order!" })); } return(this.Json(new { ResponseType = Config.SOMETHING_WRONG_WITH_POST_REQUEST, Msg = "Something goes wrong, please try again later" })); } return(this.Json(new { ResponseType = Config.NEED_LOGIN, Msg = "Please login first" })); }
public async Task <ActionResult> RemoveCartItem(CartDetailItem model) { if (ModelState.IsValid) { if (FormsAuth.UserManager.User != null) { // update amount to cart detail table db.CartDetails.Where(p => p.CartDetailsId == model.CartDetailsId) .ToList().ForEach(p => db.CartDetails.Remove(p)); await db.SaveChangesAsync(); var list = db.CartDetails.Where(p => p.CartId == model.CartId).ToList(); if (list.Count() <= 0) { db.Carts.Where(p => p.CartId == model.CartId) .ToList().ForEach(p => db.Carts.Remove(p)); } await db.SaveChangesAsync(); } else { /* remove cart item of this ProductDetailId in cookies */ HttpCookie reqCartItemCookies = Request.Cookies["CartItems[" + model.ProductDetailsId.ToString() + "]"]; if (reqCartItemCookies != null) { var c = new HttpCookie("CartItems[" + model.ProductDetailsId.ToString() + "]"); c.Expires = DateTime.Now.AddDays(-1D); Response.Cookies.Add(c); } /* update productDetailID list in cookies */ HttpCookie reqIDListCookies = Request.Cookies["ProductDetailIDlist"]; if (reqIDListCookies != null) { string dataAsString = reqIDListCookies.Value; List <int> listdata = new List <int>(); listdata = dataAsString.Split(',').Select(x => Convert.ToInt32(x)).ToList(); listdata.Remove(model.ProductDetailsId); // Stringify your list var yourListString = String.Join(",", listdata); HttpCookie IDListCookies = new HttpCookie("ProductDetailIDlist", yourListString) { Expires = DateTime.Now.AddDays(1) }; HttpContext.Response.Cookies.Add(IDListCookies); } } ModelState.Clear(); return(this.Json(new { ResponseType = Config.SUCCESS, Msg = "Thank you so much for your order!" })); } return(this.Json(new { ResponseType = Config.SUCCESS, Msg = "Something goes wrong, please try again later" })); }
public async Task <ActionResult> RemoveCartItem(CartDetailItem model) { if (ModelState.IsValid) { if (FormsAuth.UserManager.User != null) { ShoppingService service = new ShoppingService(); model.Amount = 0; //CartDetailItem cartDetailItem = await service.updateQuantity(model); int cartDetailId = await service.removeCartItem(model.CartDetailsId); if (cartDetailId <= 0) { return(this.Json(new { EnableError = true, ErrorTitle = "Error", ErrorMsg = "Something goes wrong, please try again later" })); } } else { /* remove cart item of this ProductDetailId in cookies */ HttpCookie reqCartItemCookies = Request.Cookies["CartItems[" + model.ProductDetailsId.ToString() + "]"]; if (reqCartItemCookies != null) { var c = new HttpCookie("CartItems[" + model.ProductDetailsId.ToString() + "]"); c.Expires = DateTime.Now.AddDays(-1D); Response.Cookies.Add(c); } /* update productDetailID list in cookies */ HttpCookie reqIDListCookies = Request.Cookies["ProductDetailIDlist"]; if (reqIDListCookies != null) { string dataAsString = reqIDListCookies.Value; List <int> listdata = new List <int>(); listdata = dataAsString.Split(',').Select(x => Convert.ToInt32(x)).ToList(); listdata.Remove(model.ProductDetailsId); // Stringify your list var yourListString = String.Join(",", listdata); HttpCookie IDListCookies = new HttpCookie("ProductDetailIDlist", yourListString) { Expires = DateTime.Now.AddDays(1) }; HttpContext.Response.Cookies.Add(IDListCookies); } } ModelState.Clear(); return(this.Json(new { EnableSuccess = true, SuccessTitle = "Successful!", SuccessMsg = "Thank you so much for your order!" })); } return(this.Json(new { EnableError = true, ErrorTitle = "Error", ErrorMsg = "Something goes wrong, please try again later" })); }
// Get public async Task <ActionResult> Index() { ShoppingService service = new ShoppingService(); ProductionService productService = new ProductionService(); ShoppingCart shoppingCart = new ShoppingCart(); if (FormsAuth.UserManager.User != null) { /*{ * Amount, * CartId, * Type, * CartDetailsId, * ExtendedPrice, * ProductDetailsId, * Price, * Picture, * ProductName, * ProductID, * Color, * UserId, * TotalAmountProduction * }*/ // get all shopping cart items of current user shoppingCart.listItemCart = await service.getCartItemsByUserId(UserManager.User.Id); } else // get from Cookie { HttpCookie reqCookies; HttpCookie reqIDListCookies = Request.Cookies["ProductDetailIDlist"]; if (reqIDListCookies != null) { string dataAsString = reqIDListCookies.Value; if (!dataAsString.Equals(string.Empty)) { List <int> listdata = new List <int>(); List <CartItem> listCartItem = new List <CartItem>(); listdata = dataAsString.Split(',').Select(x => Convert.ToInt32(x)).ToList(); for (int i = 0; i < listdata.Count(); i++) { CartItem item = new CartItem(); item.ProductDetailsId = listdata[i]; reqCookies = Request.Cookies["CartItems[" + item.ProductDetailsId.ToString() + "]"]; if (reqCookies != null) { CartItem cookiesItem = new JavaScriptSerializer().Deserialize <CartItem>(reqCookies.Value); item.Amount = cookiesItem.Amount; item.Price = cookiesItem.Price; listCartItem.Add(item); } } // if (listCartItem.Count() > 0) { List <CartDetailItem> cartDetailItemList = new List <CartDetailItem>(); // for each cookies item foreach (CartItem cookiesItem in listCartItem) { CartDetailItem cartDetailItem = new CartDetailItem(); // get more information from product & productDetails tables in Database ProductionDetail productDetail = await productService.getProductDetailByProductDetailsIds(cookiesItem.ProductDetailsId); Production product = await productService.getProductionByProductDetailsId(cookiesItem.ProductDetailsId); cartDetailItem.ProductDetailsId = cookiesItem.ProductDetailsId; cartDetailItem.Price = productDetail.Price; cartDetailItem.Picture = productDetail.Picture; cartDetailItem.Color = productDetail.Color; cartDetailItem.TotalAmountProduction = productDetail.Amount; cartDetailItem.Amount = cookiesItem.Amount; cartDetailItem.ExtendedPrice = cookiesItem.Price; cartDetailItem.CartId = 0; cartDetailItem.Type = 0; cartDetailItem.CartDetailsId = 0; cartDetailItem.ProductID = product.ProductId; cartDetailItem.ProductName = product.ProductionName; cartDetailItem.UserId = 0; cartDetailItemList.Add(cartDetailItem); } shoppingCart.listItemCart = cartDetailItemList; } } } } return(View(shoppingCart)); }
public async Task <ActionResult> AddToCart(CartItem item) { if (ModelState.IsValid) { if (UserManager.User != null) // If user has loged in already { ShoppingService service = new ShoppingService(); CartDetailItem cartDetailItem = new CartDetailItem(); cartDetailItem.UserId = UserManager.User.Id; cartDetailItem.ProductDetailsId = item.ProductDetailsId; cartDetailItem.Amount = 1; cartDetailItem.ExtendedPrice = item.Price; cartDetailItem.Type = 0; /* add cart item into system */ cartDetailItem = await service.addCartItem(cartDetailItem); if (cartDetailItem == null) { return(this.Json(new { EnableError = true, ErrorTitle = "Error", ErrorMsg = "Something goes wrong, please try again later" })); } } else // user hasn't loged in { // get tmp Cart in cookie string dateOfOpen = string.Empty; HttpCookie reqCookies = Request.Cookies["CartInfo"]; if (reqCookies != null) // there is a temporary Cart in cookies { dateOfOpen = reqCookies["DateOfOpen"].ToString(); /* save Cart Item in cookie */ // read saved cart item for given ProductDetailId HttpCookie reqCartItemCookies = Request.Cookies["CartItems[" + item.ProductDetailsId.ToString() + "]"]; // cartItem from request HttpCookie respCartItemCookie; // cartItem in response if (reqCartItemCookies != null) { CartItem mItem = new JavaScriptSerializer().Deserialize <CartItem>(reqCartItemCookies.Value); mItem.Amount = (short)(mItem.Amount + item.Amount); string myObjectJson = new JavaScriptSerializer().Serialize(mItem); respCartItemCookie = new HttpCookie("CartItems[" + item.ProductDetailsId.ToString() + "]", myObjectJson) { Expires = DateTime.Now.AddDays(1) }; } else { item.Amount = 1; string myObjectJson = new JavaScriptSerializer().Serialize(item); respCartItemCookie = new HttpCookie("CartItems[" + item.ProductDetailsId + "]", myObjectJson) { Expires = DateTime.Now.AddDays(1) }; } HttpContext.Response.Cookies.Add(respCartItemCookie); /* add productDetailID in cookies */ HttpCookie reqIDListCookies = Request.Cookies["ProductDetailIDlist"]; if (reqIDListCookies != null) { string yourListString = string.Empty; string dataAsString = reqIDListCookies.Value; List <int> listdata = new List <int>(); if (!dataAsString.Equals(string.Empty)) { listdata = dataAsString.Split(',').Select(x => Convert.ToInt32(x)).ToList(); } if (!listdata.Contains(item.ProductDetailsId)) { listdata.Add(item.ProductDetailsId); } // Stringify your list yourListString = String.Join(",", listdata); HttpCookie IDListCookies = new HttpCookie("ProductDetailIDlist", yourListString) { Expires = DateTime.Now.AddDays(1) }; HttpContext.Response.Cookies.Add(IDListCookies); } else { List <int> listdata = new List <int>(); listdata.Add(item.ProductDetailsId); // Stringify your list var yourListString = String.Join(",", listdata); HttpCookie IDListCookies = new HttpCookie("ProductDetailIDlist", yourListString) { Expires = DateTime.Now.AddDays(1) }; HttpContext.Response.Cookies.Add(IDListCookies); } } else // There is not any tmp Shopping Cart for this user { // create new Shopping Cart in Cookie HttpCookie cartCookie = new HttpCookie("CartInfo") { Expires = DateTime.Now.AddYears(1) }; cartCookie["DateOfOpen"] = DateTime.Now.ToString(); HttpContext.Response.Cookies.Add(cartCookie); // save Cart Item in cookie item.Amount = 1; string myObjectJson = new JavaScriptSerializer().Serialize(item); HttpCookie cartItemCookie = new HttpCookie("CartItems[" + item.ProductDetailsId + "]", myObjectJson) { Expires = DateTime.Now.AddDays(1) }; HttpContext.Response.Cookies.Add(cartItemCookie); /* add productDetailID into cookies */ List <int> listdata = new List <int>(); listdata.Add(item.ProductDetailsId); // Stringify your list var yourListString = String.Join(",", listdata); HttpCookie IDListCookies = new HttpCookie("ProductDetailIDlist", yourListString) { Expires = DateTime.Now.AddDays(1) }; HttpContext.Response.Cookies.Add(IDListCookies); } } ModelState.Clear(); return(this.Json(new { EnableSuccess = true, SuccessTitle = "Successful!", SuccessMsg = "Add cart successfully order!" })); } return(this.Json(new { EnableError = true, ErrorTitle = "Error", ErrorMsg = "Something goes wrong, please try again later" })); }
public bool AddItemToCart([FromBody] CartDetailItem cartObj) { return(dataAccess.AddItemHandler(cartObj.cartID, cartObj.productID)); }