public ActionResult SelectParts(CustomizeProductViewModel viewModel) { var selectedPartList = viewModel.Product.Parts.Where(p => p.IsSelected == true).ToList(); if (selectedPartList != null) { var deliveryDate = DateTime.Now.AddDays(selectedPartList.OrderByDescending(d => d.LeadTime).First().LeadTime); int productId = viewModel.Product.Id; StringBuilder productCode = new StringBuilder(); decimal productPrice = 0; bool isReady = false; var userID = _userService.Get(HttpContext.User.Identity.Name).Entity; foreach (var part in selectedPartList) { productPrice += part.Price; isReady = deliveryDate > DateTime.Now ? false : true; productCode.Append(part.StockKeepingUnit.Substring(0, 2)); } var order = new Order { Product = _productService.GetProduct(viewModel.Product.Id), DeliveryDate = deliveryDate, IsReady = isReady, Price = productPrice, ProductId = productId, User = userID }; _orderService.AddOrder(order); } return(View("~/Views/User/SelectParts.cshtml")); }
public ActionResult CustomizeProduct() { var viewModel = new CustomizeProductViewModel { Products = _productService.GetAllProducts().Select(p => new ProductModel(p)).ToList() }; return(View(viewModel)); }
public ActionResult ConfigureProduct() { var viewModel = new CustomizeProductViewModel { Products = _productService.GetAllProducts().Select(p => new ProductViewModel(p)).ToList() }; return(View("~/Views/User/ConfigureProduct.cshtml", viewModel)); }
public ActionResult SelectParts(CustomizeProductViewModel viewModel) { var selectedPartList = viewModel.Product.Parts.Where(p => p.IsSelected == true).ToList(); var totalCat = viewModel.Product.Parts.Select(p => p.CategoryId).Distinct().ToArray(); // Setup so that one part of every category must be selected before completion if (selectedPartList.Count() != totalCat.Count()) { return(View(viewModel)); } var partList = new List <Part>(); foreach (var item in selectedPartList) { partList.Add(_productService.GetProduct(viewModel.Product.Id).Parts.SingleOrDefault(p => p.Id == item.Id)); } if (partList != null || partList.Count > 0) { double orderLeadtime = new double(); foreach (var item in partList) { orderLeadtime += item.LeadTime; } StringBuilder productCode = new StringBuilder(); var order = new Order() { Product = _productService.GetProduct(viewModel.Product.Id), DeliveryDate = DateTime.Now.AddDays(orderLeadtime), IsReady = false, User = _userService.Get(HttpContext.User.Identity.Name).Entity }; foreach (var part in partList) { order.Price += part.Price; order.IsReady = order.DeliveryDate > DateTime.Now ? false : true; productCode.Append(part.StockKeepingUnit); } order.ProductCode = productCode.ToString(); _orderService.AddOrder(order); } return(RedirectToAction("OrderList")); }
public ActionResult SelectParts(int id) { var product = _productService.GetProduct(id); var viewModel = new CustomizeProductViewModel() { Product = new ProductModel(product) }; viewModel.Product.Parts = product.Parts.Select(p => new PartModel(p)).OrderBy(m => m.CategoryId).ToList(); return(View(viewModel)); }
public async Task <IActionResult> CustomizeProduct(int id) { var productItem = _mapper.Map <ProductItemViewModel>(await _productItemService.GetProductItemAsync(id)); var ingredients = _mapper.Map <List <IngredientViewModel> >(await _ingredientService.GetAllIngredientAsync()); if (productItem.Product.Name == "Pizza") { ingredients.Remove(ingredients.Where(x => x.Name == "Bread").FirstOrDefault()); } if (productItem.Product.Name == "Sandwich") { ingredients.Remove(ingredients.Where(x => x.Name == "PizzaBase").FirstOrDefault()); } var customizeProductViewModel = new CustomizeProductViewModel() { ProductItemViewModel = productItem, Ingredients = ingredients, Quantity = 1 }; return(View(customizeProductViewModel)); }