Пример #1
0
        public async Task <IServiceResult> BuyGameAsync([FromRoute] string id, [FromBody] LikeGameDTOs LikeGameDTOs)
        {
            try
            {
                // add game  and user  into user game table
                var userId = id.ToGuid();
                var game   = await _context.Games.SingleOrDefaultAsync(g => g.Id == LikeGameDTOs.Id);

                UserGame userGame = new UserGame()
                {
                    GameId = LikeGameDTOs.Id, PurchaseDate = DateTime.Now, UserId = userId
                };
                _context.UserGames.Add(userGame);
                // update money for publisher
                Publisher publisher = await _context.Publishers.SingleOrDefaultAsync(p => p.Id == game.PublisherId);

                publisher.Money += game.Price;
                // update money for user
                User user = await _context.Users.SingleOrDefaultAsync(p => p.Id == userId);

                user.Money -= game.Price;

                if (user.Money < 0)
                {
                    return(new ServiceResult(false, message: "Your account don't enought money to buy this game"));
                }
                // save change
                if (!await _unitOfWork.CompleteAsync())
                {
                    throw new SaveFailedException(nameof(userGame));
                }
                _logger.LogInformation($"User  {userGame.UserId} bought game id: {userGame.GameId} .");
                return(new ServiceResult(payload: userGame.GameId));
            }
            catch (Exception e)
            {
                _logger.LogError($"Can't create  a free code {LikeGameDTOs.Id}. {e.Message}");
                return(new ServiceResult(false, message: e.Message));
            }
        }
Пример #2
0
 public async Task <IServiceResult> LikeGameAsync([FromRoute] string id, [FromBody] LikeGameDTOs LikeGameDTOs)
 {
     try
     {
         var      userId   = id.ToGuid();
         WishGame wishGame = new WishGame()
         {
             GameId = LikeGameDTOs.Id, UserId = userId
         };
         _context.WishGame.Add(wishGame);
         if (!await _unitOfWork.CompleteAsync())
         {
             throw new SaveFailedException(nameof(wishGame));
         }
         _logger.LogInformation($"User  {wishGame.UserId} like game id: {wishGame.GameId} .");
         return(new ServiceResult(payload: wishGame.GameId));
     }
     catch (Exception e)
     {
         _logger.LogError($"Can't create  a free code {LikeGameDTOs.Id}. {e.Message}");
         return(new ServiceResult(false, message: e.Message));
     }
 }