public async Task <IServiceResult <BorrowedGame> > ReturnGame(int friendId, int borrowedGameId)
        {
            try
            {
                var serviceResult    = new ServiceResult <BorrowedGame>();
                var gameToBeReturned = await _unitOfWork.BorrowedGames.GetBorrowedGameById(borrowedGameId);

                if (gameToBeReturned.Friend.UserId != friendId)
                {
                    serviceResult.AddMessage($"Only Games You Borrow Can Be Returned:  {borrowedGameId}");
                    return(serviceResult);
                }

                var returnedGame = await _unitOfWork.BorrowedGames.Delete(borrowedGameId);

                if (returnedGame == null)
                {
                    serviceResult.AddMessage($"Game couldn't be returned: {borrowedGameId}");
                    return(serviceResult);
                }
                returnedGame.Game.Return();
                _unitOfWork.Games.Update(returnedGame.Game);
                await _unitOfWork.Commit();

                serviceResult.SetResult(returnedGame);

                return(serviceResult);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public async Task <IServiceResult <IList <BorrowedGame> > > BorrowGames(int friendId, List <int> gameIds)
        {
            try
            {
                var serviceResult = new ServiceResult <IList <BorrowedGame> >();
                var borrowedGames = new List <BorrowedGame>();
                var user          = await _unitOfWork.Users.GetUserWithType(friendId);

                if (user == null)
                {
                    serviceResult.AddMessage("User Not Found");
                    return(serviceResult);
                }

                foreach (var gameId in gameIds)
                {
                    var game = await _unitOfWork.Games.GetGameByIdWithBorrowed(gameId);

                    if (game == null)
                    {
                        serviceResult.AddMessage("Game Not Found");
                        return(serviceResult);
                    }
                    if (!game.Available)
                    {
                        serviceResult.AddMessage("Game Not Available");
                        return(serviceResult);
                    }
                    var borrowedGame = await _unitOfWork.BorrowedGames.Create(new BorrowedGame((Friend)user, game));

                    borrowedGames.Add(borrowedGame);
                }
                await _unitOfWork.Commit();

                serviceResult.SetResult(borrowedGames);
                return(serviceResult);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }