Exemplo n.º 1
0
        public int?ImportBoardGameGeekGames(ApplicationUser applicationUser)
        {
            if (applicationUser == null)
            {
                throw new ArgumentNullException();
            }
            var bggUser = _userRetriever.RetrieveUserInformation(applicationUser)?.BoardGameGeekUser;

            if (bggUser != null)
            {
                var userGames = _boardGameGeekApiClient.GetUserGames(bggUser.Name);
                if (!userGames.Any())
                {
                    return(null);
                }
                var currentGames = GetCurrentGames(applicationUser);
                var pendingGames = GetPendingGames(userGames, currentGames);
                if (!pendingGames.Any())
                {
                    return(0);
                }
                var longRunningClients = GlobalHost.ConnectionManager.GetHubContext <LongRunningTaskHub>().Clients.Group(applicationUser.CurrentGamingGroupId.ToString());

                int gamesImported     = 0;
                var gameNamesImported = new List <string>();

                CreateGameDefinitions(applicationUser, pendingGames, gamesImported, longRunningClients, gameNamesImported);
                return(pendingGames.Count);
            }
            return(null);
        }
Exemplo n.º 2
0
        public int?ImportBoardGameGeekGames(ApplicationUser applicationUser)
        {
            if (applicationUser == null)
            {
                throw new ArgumentNullException();
            }
            var bggUser = _userRetriever.RetrieveUserInformation(applicationUser)?.BoardGameGeekUser;

            if (bggUser != null)
            {
                var userGames = _boardGameGeekApiClient.GetUserGames(bggUser.Name);
                if (!userGames.Any())
                {
                    return(null);
                }
                else
                {
                    var currentGames = GetCurrentGames(applicationUser);
                    var pendingGames = GetPendingGames(userGames, currentGames);
                    if (!pendingGames.Any())
                    {
                        return(0);
                    }
                    else
                    {
                        var longRunningClients = GlobalHost.ConnectionManager.GetHubContext <LongRunningTaskHub>().Clients.Group(applicationUser.CurrentGamingGroupId.ToString());

                        int gamesImported     = 0;
                        var gameNamesImported = new List <string>();

                        foreach (var bggGame in pendingGames)
                        {
                            var gameName = $"{bggGame.Name} ({bggGame.YearPublished})";
                            gamesImported++;

                            longRunningClients.BGGImportDetailsProgress(gamesImported, pendingGames.Count, gameName);

                            if (!gameNamesImported.Contains(gameName))
                            {
                                _gameDefinitionSaver.CreateGameDefinition(new CreateGameDefinitionRequest()
                                {
                                    Name = $"{bggGame.Name} ({bggGame.YearPublished})",
                                    BoardGameGeekGameDefinitionId = bggGame.GameId,
                                    Active = true
                                }, applicationUser);
                            }


                            gameNamesImported.Add(gameName);
                        }
                        return(pendingGames.Count);
                    }
                }
            }
            return(null);
        }