Пример #1
0
        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)));
            }
        }
Пример #2
0
        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)));
            }
        }
Пример #3
0
        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));
                }
            }
        }
Пример #4
0
        public async Task <Response> GetBook(string id)
        {
            var originalID = SecureHelper.GetOriginalInput(id);
            var response   = await bookInfoBal.GetBookWithSecureID(originalID);

            return(response);
        }
Пример #5
0
        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));
        }
Пример #6
0
        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));
            }
        }
Пример #7
0
        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));
            }
        }
Пример #8
0
 public async Task <Response> GetOrder(string secureID)
 {
     return(await orderBal.GetOrder(SecureHelper.GetOriginalInput(secureID)));
 }