private SaleOrders CalculateOrder(CartViewModel model) { var order = new SaleOrders(); order.AcceptedTime = null; order.CancledTime = null; order.Id = _rand.RandomStringFrom(RandomExtension.Uppers_Digits, 10); order.OrderTime = DateTime.UtcNow; order.FinishedTime = null; order.Status = "New"; var details = new List <SaleOrderDetails>(); foreach (var kv in model.details) { var d = kv.Value; var pro = _context.Products.FirstOrDefault(p => p.Id == d.product_id && p.Active == true); var oD = new SaleOrderDetails(); oD.Id = Guid.NewGuid().ToString(); oD.OrderId = order.Id; oD.ProductId = pro.Id; oD.Quantity = d.quantity; oD.TotalAmount = d.quantity * pro.UnitPrice; if (pro.DiscountAmount != null) { oD.FinalAmount = oD.TotalAmount - pro.DiscountAmount; } else if (pro.DiscountPercent != null) { oD.FinalAmount = oD.TotalAmount - (oD.TotalAmount * pro.DiscountPercent / 100.0); } else { oD.FinalAmount = oD.TotalAmount; } details.Add(oD); } order.SaleOrderDetails = details; order.TotalAmount = details.Sum(oD => oD.TotalAmount); order.FinalAmount = details.Sum(oD => oD.FinalAmount); return(order); }
public IActionResult CheckCart(CartViewModel model) { try { var result = ValidateCart(model); if (result.Any()) { return(BadRequest(new { messages = result })); } var order = CalculateOrder(model); return(Ok(ToOrderResponse(order))); } catch (Exception e) { return(Error(new { message = "Có lỗi xảy ra. Vui lòng thử lại.", data = e, })); } }