public async Task <Response> RemoveBookInCart(string id) { var session = HttpContext.Session.GetString("BookStore"); var response = await userCartBal.GetCart(session); var originalID = SecureHelper.GetOriginalInput(id); if (response.Status is false) { try { var listCartBook = SessionHelper.GetCartSession(this.HttpContext.Session); var book = listCartBook.Where(x => x.BookId.Equals(originalID)).FirstOrDefault(); listCartBook.Remove(book); SessionHelper.SetCartSession(this.HttpContext.Session, listCartBook); return(await Task.FromResult <Response>(new Response("Success", true, 1, listCartBook))); } catch (Exception e) { return(Models.Response.CatchError(e.Message)); } } else { var cart = response.Obj as Cart; await userCartBal.RemoveFromCart(cart.Id, originalID); return(await Task.FromResult <Response>(new Response("Success", true, 1, cart.CartBook))); } }
public async Task <Response> EditQuantityBookInCart(string id, string quantity) { var session = HttpContext.Session.GetString("BookStore"); var response = await userCartBal.GetCart(session); var originalID = SecureHelper.GetOriginalInput(id); if (response.Status is false) { try { var listCartBook = SessionHelper.GetCartSession(this.HttpContext.Session); var index = listCartBook.FindIndex(x => x.BookId.Equals(originalID)); listCartBook[index].Quantity = int.Parse(quantity); listCartBook[index].SubTotal = listCartBook[index].Book.CurrentPrice * int.Parse(quantity); SessionHelper.SetCartSession(this.HttpContext.Session, listCartBook); return(await Task.FromResult <Response>(new Response("Success", true, 1, listCartBook[index]))); } catch (Exception e) { return(Models.Response.CatchError(e.Message)); } } else { var cart = response.Obj as Cart; var newCartBook = await userCartBal.EditQuantityInCart(cart.Id, originalID, int.Parse(quantity)); return(await Task.FromResult <Response>(new Response("Success", true, 1, newCartBook.Obj as CartBook))); } }
public async Task <Response> AddBookToCart(string id, string quantity) { var userID = HttpContext.Session.GetInt32("UserID"); if (userID is null) { try { var originalID = SecureHelper.GetOriginalInput(id); var book = (await bookInfoBal.GetBookWithoutDetail(originalID)).Obj as Book; var listCartBook = SessionHelper.GetCartSession(this.HttpContext.Session); var index = listCartBook.FindIndex(x => x.BookId.Equals(originalID)); if (index >= 0) { listCartBook[index].Quantity += int.Parse(quantity); listCartBook[index].SubTotal += book.CurrentPrice * int.Parse(quantity); } else { listCartBook.Add(new CartBook { BookId = originalID, Quantity = int.Parse(quantity), SubTotal = int.Parse(quantity) * book.CurrentPrice, PickedDate = DateTime.Now, Book = book }); } SessionHelper.SetCartSession(this.HttpContext.Session, listCartBook); return(await Task.FromResult <Response>(new Response("Success", true, 1, listCartBook))); } catch (Exception e) { return(Models.Response.CatchError(e.Message)); } } else { var cart = (await bookInfoBal.GetCart(int.Parse(userID.ToString()))).Obj as Cart; if (cart is null) { var newCart_Response = await bookInfoBal.CreateCart(int.Parse(userID.ToString())); Cart newCart = newCart_Response.Obj as Cart; var originalID = SecureHelper.GetOriginalInput(id); var book = (await bookInfoBal.GetBook(originalID)).Obj as Book; await bookInfoBal.AddToCart(newCart, book, int.Parse(quantity)); return(new Response("Success", true, 1, newCart.CartBook)); } else { var originalID = SecureHelper.GetOriginalInput(id); var book = (await bookInfoBal.GetBook(originalID)).Obj as Book; await bookInfoBal.AddToCart(cart, book, int.Parse(quantity)); return(new Response("Success", true, 1, cart.CartBook)); } } }
public async Task <Response> GetBook(string id) { var originalID = SecureHelper.GetOriginalInput(id); var response = await bookInfoBal.GetBookWithSecureID(originalID); return(response); }
public async Task <IActionResult> Index(string id) { ViewBag.FullName = HttpContext.Session.GetString("UserFullName"); ViewBag.ListCategory = (await bookInfoBal.GetListCategory()).Obj as List <Category>; var originalID = SecureHelper.GetOriginalInput(id); var response = await bookInfoBal.GetBook(originalID); ViewBag.RelatedList = (await bookInfoBal.GetListRelatedBooks(originalID)).Obj as List <Book>; HttpContext.Session.SetString("PreviousState", "Book/" + id); return(View(response.Obj as Book)); }
public async Task <Response> InsertToCart(Cart cart, Book book, int quantity) { try { var originalID = book.Id.Length < 18 ? book.Id : SecureHelper.GetOriginalInput(book.Id); var checkCartBook = await context.CartBook .Where(x => x.BookId.Equals(originalID) && x.CartId.Equals(cart.Id)) .FirstOrDefaultAsync(); if (checkCartBook is null) { var cartBook = new CartBook { BookId = book.Id.Length < 18 ? book.Id : SecureHelper.GetOriginalInput(book.Id), CartId = cart.Id, PickedDate = DateTime.Now, Quantity = quantity, SubTotal = book.CurrentPrice }; context.CartBook.Add(cartBook); await context.SaveChangesAsync(); return(new Response("Success", true, 1, cartBook)); } else { checkCartBook.Quantity += quantity; checkCartBook.SubTotal += book.CurrentPrice * quantity; context.CartBook.Update(checkCartBook); await context.SaveChangesAsync(); return(new Response("Success", true, 1, checkCartBook)); } } catch (Exception e) { return(Response.CatchError(e.Message)); } }
public async Task <Response> SaveOrder([FromForm] Order order) { var session = HttpContext.Session.GetString("BookStore"); var response = await userOrderBal.GetCart(session); if (response.Status is false) { List <CartBook> listCart = SessionHelper.GetCartSession(HttpContext.Session); List <Order> orderList = SessionHelper.GetOrdersSession(HttpContext.Session); var task_Count = await userOrderBal.CountOrder(); var orderID = "Order" + ((task_Count.Obj as int?) + 1); order.Id = orderID; order.UserId = 0; order.Total = listCart.Sum(x => x.SubTotal); order.CreatedDate = DateTime.Now; order.Status = "Processing"; var order_session = new Order() { Id = orderID, FullName = order.FullName, Address = order.Address, PhoneNumber = order.PhoneNumber, CreatedDate = order.CreatedDate, Status = "Processing", Total = order.Total, UserId = 0 }; foreach (var cartbook in listCart) { cartbook.Book.Id = SecureHelper.GetOriginalInput(cartbook.Book.Id); OrderDetail orderDetail = new OrderDetail { OrderId = orderID, BookId = cartbook.BookId, Quantity = cartbook.Quantity, }; order.OrderDetail.Add(orderDetail); var orderDetail_session = new OrderDetail { OrderId = orderID, BookId = cartbook.BookId, Quantity = cartbook.Quantity, Book = cartbook.Book }; order_session.OrderDetail.Add(orderDetail_session); } orderList.Add(order_session); SessionHelper.SetOrdersSession(HttpContext.Session, orderList); SessionHelper.ResetCartSession(this.HttpContext.Session, listCart); return(await userOrderBal.CreateOrder(order)); } else { List <CartBook> listCart = (response.Obj as Cart).CartBook; var task_Count = await userOrderBal.CountOrder(); var orderID = "Order" + ((task_Count.Obj as int?) + 1); order.Id = orderID; order.UserId = HttpContext.Session.GetInt32("UserID").Value; order.Total = listCart.Sum(x => x.SubTotal); order.CreatedDate = DateTime.Now; order.Status = "Processing"; foreach (var cartbook in listCart) { OrderDetail orderDetail = new OrderDetail { OrderId = orderID, BookId = cartbook.BookId, Quantity = cartbook.Quantity }; order.OrderDetail.Add(orderDetail); } await userOrderBal.ResetCart(HttpContext.Session.GetInt32("UserID").Value); return(await userOrderBal.CreateOrder(order)); } }
public async Task <Response> GetOrder(string secureID) { return(await orderBal.GetOrder(SecureHelper.GetOriginalInput(secureID))); }