public async Task <ActionResult <BuyResultViewModel> > BuyBook( [Required][Range(1, int.MaxValue, ErrorMessage = "Incorrect book id")] int id, [FromBody] int customerId //noramlly would be determined from current authenticated user ) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var purcheseResult = await bookManager.SellBook(id, customerId); var response = new BuyResultViewModel { BookId = purcheseResult.BookId, CustomerId = purcheseResult.CustomerId, CustomerNewWallet = purcheseResult.CustomerNewWallet, IsStillInStock = purcheseResult.IsStillInStock }; return(Ok(response)); }
public IActionResult BuyResult(int ID) //ID for item { var viewModel = new BuyResultViewModel(); viewModel.Funds = _user.theUser.Funds; viewModel.CurrentUserID = _user.theUser.UserID; var userItem = new UserItemsDAL(); userItem.UserId = viewModel.CurrentUserID; double price = 0; foreach (var item in _shopDBContext.Items.ToList()) { if (item.ItemID == ID) { price = item.Price; userItem.ItemId = item.ItemID; userItem.Name = item.Name; userItem.Description = item.Description; userItem.Quantity = item.Quantity; userItem.Price = item.Price; } } _shopDBContext.Add(userItem); _shopDBContext.SaveChanges(); bool enoughCash = false; foreach (var user in _shopDBContext.Users.ToList()) { if (user.UserID == viewModel.CurrentUserID) { if (viewModel.Funds > price) { enoughCash = true; user.Funds = user.Funds - price; _shopDBContext.SaveChanges(); viewModel.Funds = user.Funds; _user.theUser.Funds = user.Funds; } } } var errorModel = new ErrorPageViewModel(); errorModel.UserFunds = viewModel.Funds; //var shopModel = new ShopViewModel(); //shopModel.CurrentUserID = _user.theUser.UserID; //shopModel.Funds = _user.theUser.Funds; if (enoughCash) { return(View(viewModel)); } else { return(View("ErrorPage", errorModel)); } }