public async Task <ActionResult> AddAddressToOrderProduct(int?orderId, int?productId) { if (orderId == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } if (productId == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } OrderProduct orderProduct = await context.OrderProducts .Include(op => op.Order) .Include(op => op.Product) .Include(op => op.OrderProductAddresses) .FirstOrDefaultAsync(oa => oa.OrderId == orderId && oa.ProductId == productId); if (orderProduct == null) { return(HttpNotFound()); } AddAddressToOrderProductViewModel model = new AddAddressToOrderProductViewModel(); model.OrderProduct = new OrderProductViewModel(orderProduct); model.AvailableAddresses = GetAvailableAddresses(orderProduct); return(View(model)); }
public async Task <ActionResult> AddAddressToOrderProduct(AddAddressToOrderProductViewModel model) { OrderProduct orderProduct = await context.OrderProducts .FindAsync(model.OrderProduct.Order.Id, model.OrderProduct.Product.Id); if (orderProduct == null) { return(HttpNotFound()); } if (!ModelState.IsValid) { model.AvailableAddresses = GetAvailableAddresses(orderProduct, model.AddressId); return(View(model)); } Address address = await context.Addresses.FindAsync(model.AddressId); if (address == null) { return(HttpNotFound()); } context.OrderProductAddresses.Add(new OrderProductAddress { OrderProduct = orderProduct, Address = address, DeliveryDate = model.DeliveryDate }); 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 { orderId = orderProduct.OrderId, productId = orderProduct.ProductId })); }