public async Task <ActionResult> Confirm([FromQuery] string idList, [FromQuery] string ProductID, [FromQuery] int Amount) { if (string.IsNullOrEmpty(idList) && string.IsNullOrEmpty(ProductID)) { return(Redirect("/Home")); } string userID = HttpContext.User.Identity.Name; OrderConfirmModel orderConfirmModel = new OrderConfirmModel(); orderConfirmModel.ShipAddresses = new List <SelectListItem>(); orderConfirmModel.OrderItem = new Order() { OrderID = Guid.NewGuid(), UserID = userID, OrderDate = DateTime.Now, OrderState = OrderStatus.PendingPayment }; Guid tempGuid = Guid.Empty; List <ShipAddress> addressStringList = await _shipAddressRepository.GetAddressAsync(userID, _MaxAddressCount, 0); foreach (ShipAddress sa in addressStringList) { orderConfirmModel.ShipAddresses.Add( new SelectListItem { Text = sa.ToString(), Value = sa.ToString() }); } if (string.IsNullOrEmpty(idList)) { orderConfirmModel.OrderDetails = await CreateOrderDetailsByProductAsync( orderConfirmModel.OrderItem.OrderID, ProductID, Amount); } else { orderConfirmModel.OrderDetails = await CreateOrderDetailsByCartIDListAsync( orderConfirmModel.OrderItem.OrderID, idList); } orderConfirmModel.IDList = idList; orderConfirmModel.ProductID = ProductID; orderConfirmModel.ProductAmount = Amount; foreach (OrderDetail od in orderConfirmModel.OrderDetails) { orderConfirmModel.TotalAmount += od.SubTotal; } return(View(orderConfirmModel)); }
public async Task <IActionResult> ConfirmOrder(OrderConfirmModel confirmModel) { if (ModelState.IsValid) { var userId = User.Claims.First(n => n.Type == ClaimTypes.NameIdentifier).Value; var user = await _context.Users.FirstAsync(n => n.Id == userId); var cartProducts = await _context.ProductCards .Where(x => x.UserId == user.Id && !x.OrderId.HasValue) .Include(x => x.Product) .ToListAsync(); Order order = new Order { Date = DateTime.Now, Address = user.Address, UserId = user.Id, StatusId = 1, PostalCode = user.PostalCode, TotalPrice = cartProducts.Sum(x => x.Product.Price) }; var orderAdded = await _context.AddAsync(order); await _context.SaveChangesAsync(); user.PhoneNumber = confirmModel.Phone; user.Address = confirmModel.Address; user.PostalCode = confirmModel.PostalCode; _context.UpdateRange(cartProducts.Select(x => { x.SoldPrice = x.Product.Price; x.OrderId = order.Id; return(x); })); _context.Update(user); await _context.SaveChangesAsync(); return(LocalRedirect("/Home/Index?msg=confirmorder")); } return(View("Index")); }