コード例 #1
0
        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));
        }
コード例 #2
0
        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
            }));
        }
コード例 #3
0
        public async Task <IActionResult> GetSummary([FromRoute] OrderQuery query)
        {
            OrderSummaryDto orderSummary = await _dispatcher.QueryAsync <OrderSummaryDto>(query);

            return(Ok(orderSummary));
        }