public async Task <IActionResult> OrderDetails(int orderId, PaymentDto model) { OrderSummaryDto orderSummary = null; try { orderSummary = await _viewModel.GetOrderSummaryAsync(model.OrderId); if (orderSummary == null) { TempData.Add("Message", "Unable to load your order details. Please try again latter or contact support."); return(RedirectToAction("Error")); } ViewBag.OrderSummary = orderSummary; if (ModelState.IsValid == false) { return(View(model)); } if (string.IsNullOrWhiteSpace(model.CreditCardNumber)) { throw new Exception("Please enter your credit card details to proceed with payment"); } var isValidCard = await _creditCardChecker.CheckCard(model.CreditCardNumber); if (isValidCard == false) { ModelState.AddModelError("", "Invalid credit card number entered"); return(View(model)); } await _viewModel.UpdateOrderStatusAsync(model.OrderId, "paid"); TempData.Add("Name", $"{orderSummary.FirstName} {orderSummary.LastName}"); TempData.Add("Total", $"{ orderSummary.Total.ToString("$ #, ##0.00")}"); return(RedirectToAction("Completed")); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } return(View(model)); }
public async Task <IActionResult> OrderDetails(int orderId) { var sessState = _session.GetString("_sessionState"); if (string.IsNullOrEmpty(sessState) || sessState != "valid") { return(RedirectToAction("Index", new { orderId = orderId })); } OrderSummaryDto orderSummary = null; try { orderSummary = await _viewModel.GetOrderSummaryAsync(orderId); if (orderSummary == null) { TempData.Add("Message", "Order not found"); return(RedirectToAction("Error")); } if (orderSummary.Status == "PAID") { TempData.Add("Message", "Order has already been paid for"); return(RedirectToAction("Error")); } await _viewModel.UpdateOrderStatusAsync(orderId, "viewed"); } catch (Exception ex) { TempData.Add("Message", ex.Message); return(RedirectToAction("Error")); } ViewBag.OrderSummary = orderSummary; return(View(new PaymentDto() { OrderId = orderId })); }
public async Task <IActionResult> GetSummary([FromRoute] OrderQuery query) { OrderSummaryDto orderSummary = await _dispatcher.QueryAsync <OrderSummaryDto>(query); return(Ok(orderSummary)); }