in PartsUnlimited-aspnet45/src/PartsUnlimitedWebsite/Controllers/OrdersController.cs [35:98]
public async Task<ActionResult> Details(int? id)
{
if (id == null)
{
_telemetry.TrackTrace("Order/Server/NullId");
return RedirectToAction("Index", new { invalidOrderSearch = Request.QueryString["id"] });
}
var order = await _ordersQuery.FindOrderAsync(id.Value);
var username = User.Identity.GetUserName();
// If the username isn't the same as the logged in user, return as if the order does not exist
if (order == null || !String.Equals(order.Username, username, StringComparison.Ordinal))
{
_telemetry.TrackTrace("Order/Server/UsernameMismatch");
return RedirectToAction("Index", new { invalidOrderSearch = id.ToString() });
}
// Capture order review event for analysis
var eventProperties = new Dictionary<string, string>()
{
{"Id", id.ToString() },
{"Username", username }
};
var costSummary = new OrderCostSummary()
{
CartSubTotal = 0.ToString("C"),
CartShipping = 0.ToString("C"),
CartTax = 0.ToString("C"),
CartTotal = 0.ToString("C"),
};
if (order.OrderDetails == null)
{
_telemetry.TrackEvent("Order/Server/NullDetails", eventProperties, null);
}
else
{
var eventMeasurements = new Dictionary<string, double>()
{
{"LineItemCount", order.OrderDetails.Count }
};
_telemetry.TrackEvent("Order/Server/Details", eventProperties, eventMeasurements);
costSummary = _shippingTaxCalc.CalculateCost(order.OrderDetails, order.PostalCode);
//var itemsCount = order.OrderDetails.Sum(x => x.Count);
//var subTotal = order.OrderDetails.Sum(x => x.Count * x.Product.Price);
//var shipping = itemsCount * (decimal)6.00;
//var tax = (subTotal + shipping) * (decimal)0.06;
//var total = subTotal + shipping + tax;
//costSummary.CartSubTotal = subTotal.ToString("C");
//costSummary.CartShipping = shipping.ToString("C");
//costSummary.CartTax = tax.ToString("C");
//costSummary.CartTotal = total.ToString("C");
}
var viewModel = new OrderDetailsViewModel
{
OrderCostSummary = costSummary,
Order = order
};
return View(viewModel);
}