in Hands-on lab/lab-files/src/src/PartsUnlimitedWebsite/Controllers/CheckoutController.cs [58:109]
public async Task<IActionResult> AddressAndPayment(Order order)
{
var formCollection = await HttpContext.Request.ReadFormAsync();
try
{
if (string.Equals(formCollection["PromoCode"].FirstOrDefault(), PromoCode,
StringComparison.OrdinalIgnoreCase) == false)
{
return View(order);
}
else
{
order.Username = HttpContext.User.Identity.Name;
order.OrderDate = DateTime.Now;
//Add the Order
_db.Orders.Add(order);
await _db.SaveChangesAsync(HttpContext.RequestAborted);
//Process the order
var cart = ShoppingCart.GetCart(_db, HttpContext);
cart.CreateOrder(order);
// Save all changes
await _db.SaveChangesAsync(HttpContext.RequestAborted);
try
{
string connectionString = Configuration[ConfigurationPath.Combine("ConnectionStrings", "StorageConnectionString")];
QueueClient queueClient = new QueueClient(connectionString, "orders");
queueClient.CreateIfNotExists();
if (queueClient.Exists())
{
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(order.OrderId.ToString());
queueClient.SendMessage(System.Convert.ToBase64String(plainTextBytes));
}
}
catch (Exception ex)
{
return View("Error");
}
return RedirectToAction("Complete",
new { id = order.OrderId });
}
}
catch (Exception ex)
{
return View("Error");
}
}