コード例 #1
0
        public ActionResult Index()
        {
            if (HttpContext.Request.HttpMethod == "POST")
            {
                try
                {
                    string cardNumber = HttpContext.Request.Form["card-number"];
                    ViewBag.CardNumber = cardNumber;
                    switch (HttpContext.Request.Form["action"])
                    {
                    case "checkExistence":
                        bool exists = paymentGateway.AccountExists(cardNumber);
                        if (exists)
                        {
                            ViewBag.SuccessMessage = "Account exists!";
                        }
                        else
                        {
                            ViewBag.ErrorMessage = "Account does not exist.";
                        }
                        break;

                    case "charge":
                        double chargeAmount = Double.Parse(HttpContext.Request.Form["charge-amount"]);
                        try {
                            paymentGateway.Charge(cardNumber, chargeAmount);
                            ViewBag.SuccessMessage = "Account was successfully charged.";
                        } catch (PaymentGatewayException e)
                        {
                            ViewBag.ErrorMessage = e.Message;
                        }
                        break;

                    case "return":
                        double returnAmount = Double.Parse(HttpContext.Request.Form["return-amount"]);
                        paymentGateway.Deposit(cardNumber, returnAmount);
                        ViewBag.SuccessMessage = "Deposit successful.";
                        break;

                    case "ping":
                        bool result = paymentGateway.Ping();
                        if (result)
                        {
                            ViewBag.SuccessMessage = "Ping received OK!.";
                        }
                        else
                        {
                            ViewBag.ErrorMessage = "Ping did not receive OK :(.";
                        }
                        break;

                    case "balance":
                        decimal balance = paymentGateway.GetBalance(cardNumber);
                        ViewBag.SuccessMessage = "Balance: $" + balance;
                        break;

                    case "activate":
                        paymentGateway.ActivateAccount(cardNumber);
                        ViewBag.SuccessMessage = "Account activated!";
                        break;

                    case "create":
                        string newCardNumber = paymentGateway.CreateAccount();
                        ViewBag.SuccessMessage = "Account created! Card number: " + newCardNumber;
                        break;

                    default:
                        ViewBag.ErrorMessage = "Invalid action.";
                        break;
                    }
                } catch (FormatException e)
                {
                    ViewBag.ErrorMessage = "One or more inputs has an invalid format.";
                } catch (Exception e)
                {
                    ViewBag.ErrorMessage = e.GetType() + ":" + e.Message;
                }
            }

            return(View());
        }