public void AddBooksToSessionBasket_CheckAddItemToEmptyBasket(int id, int quantity) { using (var homeController = new HomeController(MockData.MoqLogger(), MockData.MoqShopContext(), MockData.MoqEmailSender(), MockData.MoqMyLogger())) { OrderedBook orderedBook = new OrderedBook { BookId = id, Quantity = quantity }; List <OrderedBook> expectedOrderedBookList = new List <OrderedBook>(); expectedOrderedBookList.Add(orderedBook); var controllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext() { Session = new MockHttpSession() } }; homeController.ControllerContext = controllerContext; var result = homeController.AddBooksToSessionBasket(id, quantity).ToList(); int actualQuantity = result.FirstOrDefault(x => x.BookId == id)?.Quantity ?? 0; int actualId = result.FirstOrDefault(x => x.BookId == id)?.BookId ?? 0; Assert.Equal(id, actualId); Assert.Equal(quantity, actualQuantity); } }
public async Task <MainViewModel> RemoveFromOrder(HttpContext httpContext, int page, int bookId) { MainViewModel model = await GetModelForUser(httpContext, page); if (model.HaveError) { return(model); } if (model.UserOrder == null) { model.ErrorMessage = "Заказ не не найден."; return(model); } if (model.UserOrder.IsСheckouted) { model.ErrorMessage = "Заказ уже оформлен. Изменить его невозможно."; return(model); } OrderedBook orderedBook = model.UserOrder.OrderedBooks.FirstOrDefault(ob => ob.BookId == bookId); if (orderedBook == null) { model.ErrorMessage = "Удаляемая книга в заказе не найдена"; return(model); } model.UserOrder.OrderedBooks.Remove(orderedBook); _db.Orders.Update(model.UserOrder); await _db.SaveChangesAsync(); return(model); }
public static IEnumerable <OrderedBook> GetRandomMoqOrderedBooksList() { shopContext context = MoqShopContext(); Random random = new Random(); List <int> tmp = new List <int>(); List <OrderedBook> mockOrderedBooks = new List <OrderedBook>(); int i = 0; while (i < 4) { int randomBookId = random.Next(1, 12); int randomQuantity = random.Next(1, 8); if (!tmp.Contains(randomBookId)) { OrderedBook orderedBook = new OrderedBook { BookId = randomBookId, Quantity = randomQuantity, Title = context.Books.First(x => x.BookId == randomBookId).Title, Price = context.Books.First(x => x.BookId == randomBookId).Price }; tmp.Add(randomBookId); mockOrderedBooks.Add(orderedBook); i++; } } return(mockOrderedBooks); }
protected void ddlRentOrBuy_SelectedIndexChanged(object sender, EventArgs e) { DropDownList ddl = (DropDownList)sender; GridViewRow row = (GridViewRow)ddl.NamingContainer; OrderedBook modified = OrderedBook.CreateOrder(row); UpdatePrice(modified, row); }
protected void txtQuantity_TextChanged(object sender, EventArgs e) { TextBox text = (TextBox)sender; GridViewRow row = (GridViewRow)text.NamingContainer; OrderedBook modified = OrderedBook.CreateOrder(row); UpdatePrice(modified, row); }
public void AddBooksToSessionBasket_CheckAddItemToNonEmptyBasket(int id, int quantity) { using (var homeController = new HomeController(MockData.MoqLogger(), MockData.MoqShopContext(), MockData.MoqEmailSender(), MockData.MoqMyLogger())) { OrderedBook orderedBook1 = new OrderedBook { BookId = 1, Quantity = 3 }; OrderedBook orderedBook2 = new OrderedBook { BookId = 2, Quantity = 4 }; OrderedBook orderedBook3 = new OrderedBook { BookId = 3, Quantity = 1 }; List <OrderedBook> mockOrderedBookList = new List <OrderedBook>(); mockOrderedBookList.Add(orderedBook1); mockOrderedBookList.Add(orderedBook2); mockOrderedBookList.Add(orderedBook3); int quantityFromSession = mockOrderedBookList.FirstOrDefault(x => x.BookId == id)?.Quantity ?? 0; var controllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext() { Session = new MockHttpSession() } }; homeController.ControllerContext = controllerContext; homeController.HttpContext.Session.Set(WebConst.SessionCart, mockOrderedBookList); var result = homeController.AddBooksToSessionBasket(id, quantity).ToList(); int actualQuantity = result.FirstOrDefault(x => x.BookId == id)?.Quantity ?? 0; int actualId = result.FirstOrDefault(x => x.BookId == id)?.BookId ?? 0; if (actualId == 0 && actualQuantity == 0) { Assert.True(mockOrderedBookList.Count == result.Count + 1); } else { Assert.Equal(id, actualId); Assert.Equal(quantity + quantityFromSession, actualQuantity); } } }
/// <summary> /// Returns first four Book in List of OrderedBook. /// </summary> /// <returns></returns> public static IEnumerable <OrderedBook> GetMoqOrderedBooksList() { shopContext context = MoqShopContext(); List <OrderedBook> mockOrderedBooks = new List <OrderedBook>(); OrderedBook orderedBook1 = new OrderedBook { BookId = 1, Quantity = 3, Title = context.Books.First(x => x.BookId == 1).Title, Price = context.Books.First(x => x.BookId == 1).Price }; OrderedBook orderedBook2 = new OrderedBook { BookId = 2, Quantity = 4, Title = context.Books.First(x => x.BookId == 2).Title, Price = context.Books.First(x => x.BookId == 2).Price }; OrderedBook orderedBook3 = new OrderedBook { BookId = 3, Quantity = 2, Title = context.Books.First(x => x.BookId == 3).Title, Price = context.Books.First(x => x.BookId == 3).Price }; OrderedBook orderedBook4 = new OrderedBook { BookId = 4, Quantity = 1, Title = context.Books.First(x => x.BookId == 4).Title, Price = context.Books.First(x => x.BookId == 4).Price }; mockOrderedBooks.Add(orderedBook1); mockOrderedBooks.Add(orderedBook2); mockOrderedBooks.Add(orderedBook3); mockOrderedBooks.Add(orderedBook4); return(mockOrderedBooks); }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { customer = new Customer(); DataSet ds = dbc.GetDataSet("Select * FROM Books"); Session["DataSet"] = ds; Session["Customer"] = customer; UpdateInputBooksGridView(); foreach (GridViewRow row in gvBooksInput.Rows) { OrderedBook defaultPrice = OrderedBook.CreateOrder(row); UpdatePrice(defaultPrice, row); } } if (Session["OrderComplete"] != null && (bool)Session["OrderComplete"] == true) { Session["OrderComplete"] = false; ClearInputs(); } }
public void ShoppingCart_ShouldReturnValidModel() { using (var homeController = new HomeController(MockData.MoqLogger(), MockData.MoqShopContext(), MockData.MoqEmailSender(), MockData.MoqMyLogger())) { OrderedBook orderedBook1 = new OrderedBook { BookId = 1, Quantity = 3 }; OrderedBook orderedBook2 = new OrderedBook { BookId = 2, Quantity = 4 }; OrderedBook orderedBook3 = new OrderedBook { BookId = 3, Quantity = 2 }; List <OrderedBook> mockOrderedBookList = new List <OrderedBook>(); mockOrderedBookList.Add(orderedBook1); mockOrderedBookList.Add(orderedBook2); mockOrderedBookList.Add(orderedBook3); var controllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext() { Session = new MockHttpSession() } }; homeController.ControllerContext = controllerContext; homeController.HttpContext.Session.Set(WebConst.SessionCart, mockOrderedBookList); var result = homeController.ShoppingCart() as ViewResult; var model = result?.Model as ShoppingCartViewModel; Assert.NotNull(model); Assert.NotNull(model.Basket); Assert.Equal("The House in the Cerulean Sea", model.Basket.FirstOrDefault(x => x.BookId == 3)?.Title); Assert.Equal(2, model.Basket.FirstOrDefault(x => x.BookId == 3)?.Quantity); Assert.Equal(70.1, model.Basket.FirstOrDefault(x => x.BookId == 3)?.Price); } }
public void ShoppingCartUpdate_CheckRedirection(int id, int value) { using (var homeController = new HomeController(MockData.MoqLogger(), MockData.MoqShopContext(), MockData.MoqEmailSender(), MockData.MoqMyLogger())) { OrderedBook orderedBook1 = new OrderedBook { BookId = 1, Quantity = 3 }; OrderedBook orderedBook2 = new OrderedBook { BookId = 2, Quantity = 4 }; OrderedBook orderedBook3 = new OrderedBook { BookId = 4, Quantity = 2 }; OrderedBook orderedBook4 = new OrderedBook { BookId = 3, Quantity = 3 }; List <OrderedBook> mockOrderedBookList = new List <OrderedBook>(); mockOrderedBookList.Add(orderedBook1); mockOrderedBookList.Add(orderedBook2); mockOrderedBookList.Add(orderedBook3); mockOrderedBookList.Add(orderedBook4); var controllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext() { Session = new MockHttpSession() } }; homeController.ControllerContext = controllerContext; homeController.HttpContext.Session.Set(WebConst.SessionCart, mockOrderedBookList); var action = homeController.ShoppingCartUpdate(id, value) as RedirectToActionResult; Assert.Equal("ShoppingCart", action.ActionName); } }
private void AddBook(BookAmount bookAmount) { if (bookAmount == null) { return; } var orderedBook = Order.OrderedBooks.FirstOrDefault(ob => ob.BookId == bookAmount.BookId); if (orderedBook == null) { orderedBook = new OrderedBook { Amount = 1, Book = bookAmount.Book, BookId = bookAmount.BookId, Price = bookAmount.Book.Price }; Order.OrderedBooks.Add(orderedBook); } }
public void GetListFromCookies_IfNotEmptyReturnList() { using (var homeController = new HomeController(MockData.MoqLogger(), MockData.MoqShopContext(), MockData.MoqEmailSender(), MockData.MoqMyLogger())) { OrderedBook orderedBook1 = new OrderedBook { BookId = 1, Quantity = 3 }; OrderedBook orderedBook2 = new OrderedBook { BookId = 2, Quantity = 4 }; OrderedBook orderedBook3 = new OrderedBook { BookId = 3, Quantity = 1 }; List <OrderedBook> mockOrderedBookList = new List <OrderedBook>(); mockOrderedBookList.Add(orderedBook1); mockOrderedBookList.Add(orderedBook2); mockOrderedBookList.Add(orderedBook3); var controllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext() { Session = new MockHttpSession() } }; homeController.ControllerContext = controllerContext; homeController.HttpContext.Session.Set(WebConst.SessionCart, mockOrderedBookList); var result = homeController.GetListFromCookies(); Assert.Equal(3, result.Count); Assert.Equal(4, result.FirstOrDefault(x => x.BookId == 2)?.Quantity ?? 0); } }
public async Task <MainViewModel> AddToOrder(HttpContext httpContext, int page, int bookId) { MainViewModel model = await GetModelForUser(httpContext, page); if (model.HaveError) { return(model); } Book book = await _db.Books.FindAsync(bookId); if (book == null) { model.ErrorMessage = "Добавляемая книга не найдена."; return(model); } if (book.Quantity < 1) { model.ErrorMessage = $"Извините, данная книга закончилась."; return(model); } if (model.UserOrder == null) { model.UserOrder = new Order { PromoCodeValue = model.UserPromoCode }; model.UserOrder.OrderedBooks = new List <OrderedBook> { new OrderedBook { Order = model.UserOrder, Book = book } }; _db.Orders.Add(model.UserOrder); await _db.SaveChangesAsync(); return(model); } if (model.UserOrder.IsСheckouted) { model.ErrorMessage = "Заказ уже оформлен. Изменить его невозможно."; return(model); } OrderedBook orderedBook = model.UserOrder.OrderedBooks.FirstOrDefault(ob => ob.BookId == bookId); if (orderedBook != null) { model.ErrorMessage = "Вы уже заказали данную книгу."; return(model); } orderedBook = new OrderedBook { Order = model.UserOrder, Book = book }; model.UserOrder.OrderedBooks.Add(orderedBook); _db.Orders.Update(model.UserOrder); await _db.SaveChangesAsync(); return(model); }
protected void btnSubmitOrder_Click(object sender, EventArgs e) { //Make sure user info inputs are valid foreach (TextBox txt in divInputs.Controls.OfType <TextBox>().ToList()) { if (!Validation.Validate(txt.Text, Regex.Split(txt.ID, "Student")[1])) { txt.BorderColor = System.Drawing.Color.Red; return; } else { txt.BorderColor = System.Drawing.Color.LightGray; } } //Make sure they selected a campus if (ddlCampus.SelectedIndex == 0) { ddlCampus.BorderColor = System.Drawing.Color.Red; return; } else { ddlCampus.BorderColor = System.Drawing.Color.LightGray; } //Get every ordered book, add them to list List <OrderedBook> booksOrdered = new List <OrderedBook>(); List <GridViewRow> checkedBooks = gvBooksInput.Rows.OfType <GridViewRow>() .Select(r => r.FindControl("chkBoxOrder") as CheckBox) //Look at row's checkbox .Where(cb => cb.Checked == true) //If CheckBox is checked add to list .Select(cb => cb.NamingContainer as GridViewRow).ToList(); //For each checkbox in list get its row and add to final list //Did they order at least one book? if (checkedBooks.Count == 0) { lblSubmit.Text = "Must order at least one book to continue."; return; } else { lblSubmit.Text = ""; } foreach (GridViewRow row in checkedBooks) { OrderedBook order = null; TextBox txt = (TextBox)row.FindControl("txtQuantity"); if (Validation.Validate(txt.Text, Regex.Split(txt.ID, "txt")[1])) { order = OrderedBook.CreateOrder(row); booksOrdered.Add(order); txt.BorderColor = System.Drawing.Color.LightGray; } else { txt.BorderColor = System.Drawing.Color.Red; lblSubmit.Text = "Must provide a quantity for books you wish to order."; return; } } Session["OrderComplete"] = true; //Bind ordered books to Order Gridview Customer customer = (Customer)Session["Customer"]; if (!string.Equals(txtStudentID.Text, customer.StudentID)) { GetCustomerInfo(); customer = (Customer)Session["Customer"]; } foreach (OrderedBook order in booksOrdered) { customer.Orders.Add(order); } gvBooksOrder.DataSource = customer.Orders; gvBooksOrder.DataBind(); UpdateViewOrder(); InventoryManagement.UpdateRecords(booksOrdered); }
//Update price column for order table public void UpdatePrice(OrderedBook modified, GridViewRow row) { Label price = (Label)row.FindControl("upPrice").FindControl("lblPrice"); price.Text = modified.TotalCost.ToString("c"); }
} // end go button // Order book button that displays the order receipt protected void btnOrder_Click(object sender, EventArgs e) { DropDownList ddlBookFormat; DropDownList ddlRentBuy; TextBox quantity; for (int row = 0; row < gvBooks.Rows.Count; row++) { double price = Convert.ToDouble(gvBooks.DataKeys[row].Value); ddlBookFormat = (DropDownList)gvBooks.Rows[row].FindControl("ddlFormat"); ddlRentBuy = (DropDownList)gvBooks.Rows[row].FindControl("ddlRentBuy"); quantity = (TextBox)gvBooks.Rows[row].FindControl("txtQuantity"); if (ddlRentBuy.SelectedValue.ToString() == "rent" && ddlBookFormat.SelectedValue.ToString() == "hardcover") { price = price * 2; } else if (ddlRentBuy.SelectedValue.ToString() == "rent" && ddlBookFormat.SelectedValue.ToString() == "paper-back") { price = price * .50; } else if (ddlRentBuy.SelectedValue.ToString() == "rent" && ddlBookFormat.SelectedValue.ToString() == "e-book") { price = price * 0.10; } else if (ddlRentBuy.SelectedValue.ToString() == "buy" && ddlBookFormat.SelectedValue.ToString() == "e-book") { price = price * 0.25; } else if (ddlRentBuy.SelectedValue.ToString() == "buy" && ddlBookFormat.SelectedValue.ToString() == "hardcover") { price = price * 3; } else if (ddlRentBuy.SelectedValue.ToString() == "buy" && ddlBookFormat.SelectedValue.ToString() == "paper-back") { price = price * 1; } int rentQuantity = 0; int buyQuantity = 0; CheckBox checkBox = (CheckBox)gvBooks.Rows[row].FindControl("chkSelectBook"); if (checkBox.Checked) { OrderedBook book = new OrderedBook(); book.Isbn = gvBooks.Rows[row].Cells[3].Text; book.Title = gvBooks.Rows[row].Cells[1].Text; book.Type = ddlBookFormat.SelectedValue.ToString(); book.RentBuy = ddlRentBuy.SelectedValue.ToString(); book.Price = price; book.Quantity = Int32.Parse(quantity.Text.ToString()); book.TotalPrice = price * Convert.ToUInt32(quantity.Text.ToString()); orderedBooksArrayList.Add(book); if (book.RentBuy == "rent") { rentQuantity = rentQuantity + book.Quantity; } else if (book.RentBuy == "buy") { buyQuantity = buyQuantity + book.Quantity; } String sqlUpdate = "UPDATE Books SET TotalSales + " + book.TotalPrice + ", " + "TotalQuantityRented = TotalQuantityRented + " + rentQuantity + ", " + "TotalQuantitySold = TotalQuantitySold " + buyQuantity + " WHERE Title = '" + book.Title + "'"; bookDB.DoUpdate(sqlUpdate); } } // end loop of rows. makeNextGridViewVisible(); BuildTheOrder(); gvBooks.Visible = false; } // end order button event handler