public async Task<IActionResult> ProcessOrder(OrderRequest request)
var product = await _productService.GetProductDetailsAsync(request.ProductId);
return BadRequest("Product not found.");
if (product.Stock < request.Quantity)
return BadRequest("Insufficient stock.");
var totalPrice = product.Price * request.Quantity;
if (request.ApplyDiscount && product.IsDiscountEligible)
Quantity = request.Quantity,
OrderDate = DateTime.UtcNow
_dbContext.Orders.Add(order);
await _dbContext.SaveChangesAsync();
await _emailService.SendOrderConfirmationAsync(request.UserEmail, order);
return Ok("Order processed successfully.");