Example #1
0
        // GET: Credits/Purchase
        public IActionResult Purchase()
        {
            ViewData["UserID"] = User.FindFirstValue(ClaimTypes.NameIdentifier);
            CreditPurchaseViewModel vm = new CreditPurchaseViewModel()
            {
                Packages = _packageManager.GetPackages(PackageType.Credits).Data
            };

            return(View(vm));
        }
Example #2
0
        public IActionResult Purchase(CreditPurchaseViewModel vm)
        {
            if (ModelState.IsValid)
            {
                // Randomly generate payment method and status (for now?)
                // -------------
                Random r         = new Random();
                var    pmethods  = Enum.GetValues(typeof(PaymentMethod));
                var    ostatuses = Enum.GetValues(typeof(OrderStatus));
                // -------------

                Package selectedPackage = _packageManager.GetPackage(vm.SelectedPackageID);
                if (selectedPackage != null)
                {
                    CreditPurchase purchase = new CreditPurchase()
                    {
                        UserID     = User.FindFirstValue(ClaimTypes.NameIdentifier),
                        Credits    = selectedPackage.Amount,
                        TotalPrice = selectedPackage.Price,
                        Method     = (PaymentMethod)pmethods.GetValue(r.Next(1, pmethods.Length)),
                        Status     = (OrderStatus)ostatuses.GetValue(r.Next(1, ostatuses.Length))
                    };

                    if (_creditPurchaseManager.CreateCreditPurchase(purchase) != null)
                    {
                        if (!_creditManager.AddCredit(purchase.UserID, purchase.Credits))
                        {
                            throw new DbUpdateException();
                        }
                    }
                    return(RedirectToAction(nameof(Index)));
                }
                else
                {
                    throw new NullReferenceException(nameof(selectedPackage));
                }
            }
            ViewData["UserID"] = User.FindFirstValue(ClaimTypes.NameIdentifier);
            return(View(vm));
        }