// 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)); }
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)); }