Example #1
0
        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));
            }
        }