private async Task MakeSaleInternal(SaleParameter prms) { if (prms.Amount <= 0) { AddError("Amount must be a positive number"); return; } var toy = await _context.Toys.FirstOrDefaultAsync(p => p.ID == prms.ToyId); if (toy == null) { AddError($"No toy with id {prms.ToyId} was found"); return; } if (toy.Available < prms.Amount) { AddError($"Requested to purchase {prms.Amount} but there only {toy.Available} available"); return; } toy.Available -= prms.Amount; _context.Sales.Add(new Sale { Amount = prms.Amount, Toy = toy, User = await UserRoles.GetUser(User, _userManager), SaleTime = DateTime.Now, TotalPrice = toy.Price * prms.Amount }); await _context.SaveChangesAsync(); }
public async Task <IActionResult> MakeSale(SaleParameter prms) { if (!ModelState.IsValid) { AddError($"Invalid model"); } else { await MakeSaleInternal(prms); } return(RedirectToAction("Index", "Home")); }