Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> MakeSale(SaleParameter prms)
        {
            if (!ModelState.IsValid)
            {
                AddError($"Invalid model");
            }
            else
            {
                await MakeSaleInternal(prms);
            }

            return(RedirectToAction("Index", "Home"));
        }