public async Task <ActionResult> AddProductToOrder(AddProductToOrderViewModel model) { Order order = await context.Orders.FindAsync(model.Order.Id); if (order == null) { return(HttpNotFound()); } if (!ModelState.IsValid) { model.AvailableProducts = GetAvailableProducts(order, model.ProductId); return(View(model)); } Product product = await context.Products.FindAsync(model.ProductId); if (product == null) { return(HttpNotFound()); } context.OrderProducts.Add(new OrderProduct { Order = order, Product = product, Price = model.Price }); try { await context.SaveChangesAsync(); } catch (Exception ex) { string errorMessage = ex.Message; while (ex != null) { errorMessage = ex.Message; ex = ex.InnerException; } ModelState.AddModelError("", errorMessage); return(View(model)); } return(RedirectToAction(nameof(Details), new { id = order.Id })); }
public async Task <ActionResult> Post(AddProductToOrderViewModel model) { var productsResponse = await GetAsync(HttpClients.ProductApi, "products"); var products = await productsResponse.ResultAsync <IEnumerable <ProductViewModel> >(); var command = CommandMapper.Map <AddProductToOrder>(model); command.Price = products.First(p => p.Sku == command.Sku).Price; command.UserId = Constants.DefaultUserId; await Bus.Send(command); return(Accepted()); }
public IActionResult AddingProduct(int orderId) { if (!this.orders.Exists(orderId)) { return(this.BadRequest()); } var order = this.orders.FindById(orderId); var dataProducts = this.products.ListingProducts(); var addProductToOrderViewModel = new AddProductToOrderViewModel { OrderId = order.Id, DataProducts = dataProducts }; return(this.View(addProductToOrderViewModel)); }
public async Task <ActionResult> AddProductToOrder(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Order order = await context.Orders .Include(o => o.OrderProducts) .FirstOrDefaultAsync(o => o.Id == id); if (order == null) { return(HttpNotFound()); } AddProductToOrderViewModel model = new AddProductToOrderViewModel(); model.Order = new OrderViewModel(order); model.AvailableProducts = GetAvailableProducts(order); return(View(model)); }