Example #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);
                }
                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);
        }
Example #2
0
        public virtual ActionResult Create(CreateGameDefinitionViewModel createGameDefinitionViewModel, ApplicationUser currentUser)
        {
            if (ModelState.IsValid)
            {
                createGameDefinitionViewModel.Name = createGameDefinitionViewModel.Name.Trim();
                var gameDefinition = Mapper.Map <CreateGameDefinitionViewModel, CreateGameDefinitionRequest>(createGameDefinitionViewModel);

                var savedResult = gameDefinitionSaver.CreateGameDefinition(gameDefinition, currentUser);

                if (!String.IsNullOrWhiteSpace(createGameDefinitionViewModel.ReturnUrl))
                {
                    return(new RedirectResult(createGameDefinitionViewModel.ReturnUrl + "?gameId=" + savedResult.Id));
                }

                return(new RedirectResult(Url.Action(MVC.GamingGroup.ActionNames.Index, MVC.GamingGroup.Name)
                                          + "#" + GamingGroupController.SECTION_ANCHOR_GAMEDEFINITIONS));
            }

            return(View(MVC.GameDefinition.Views.Create, createGameDefinitionViewModel));
        }
        public virtual ActionResult Save(SavePlayedGameRequest request, ApplicationUser currentUser)
        {
            if (ModelState.IsValid)
            {
                int?resultId;
                if (request.EditMode && request.PlayedGameId.HasValue)
                {
                    _playedGameSaver.UpdatePlayedGame(
                        _mapperFactory.GetMapper <SavePlayedGameRequest, UpdatedGame>().Map(request),
                        TransactionSource.WebApplication, currentUser);

                    resultId = request.PlayedGameId;
                }
                else
                {
                    if (request.GameDefinitionId == null)
                    {
                        if (string.IsNullOrEmpty(request.GameDefinitionName))
                        {
                            return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                        }

                        request.GameDefinitionId = _gameDefinitionSaver.CreateGameDefinition(new CreateGameDefinitionRequest
                        {
                            Name          = request.GameDefinitionName,
                            GamingGroupId = request.GameDefinitionId ?? currentUser.CurrentGamingGroupId,
                            BoardGameGeekGameDefinitionId = request.BoardGameGeekGameDefinitionId
                        }, currentUser).Id;
                    }

                    foreach (var newPlayer in request.PlayerRanks.Where(p => !p.PlayerId.HasValue))
                    {
                        newPlayer.PlayerId = _playerSaver.CreatePlayer(new CreatePlayerRequest
                        {
                            GamingGroupId = currentUser.CurrentGamingGroupId,
                            Name          = newPlayer.PlayerName
                        }, currentUser).Id;
                    }


                    resultId =
                        _playedGameSaver.CreatePlayedGame(
                            _mapperFactory.GetMapper <SavePlayedGameRequest, NewlyCompletedGame>().Map(request),
                            TransactionSource.WebApplication, currentUser).Id;
                }


                return(Json(new { success = true, playedGameId = resultId }));
            }

            return(Json(new { success = false, errors = ModelState.Errors() }, JsonRequestBehavior.AllowGet));
        }
Example #4
0
        public virtual HttpResponseMessage SaveNewGameDefinition([FromBody] NewGameDefinitionMessage newGameDefinitionMessage, [FromUri] int gamingGroupId)
        {
            var createGameDefinitionRequest = new CreateGameDefinitionRequest
            {
                BoardGameGeekGameDefinitionId = newGameDefinitionMessage.BoardGameGeekObjectId,
                Name = newGameDefinitionMessage.GameDefinitionName
            };

            var newGameDefinition = gameDefinitionSaver.CreateGameDefinition(createGameDefinitionRequest, CurrentUser);

            var newlyCreatedGameDefinitionMessage = new NewlyCreatedGameDefinitionMessage
            {
                GameDefinitionId = newGameDefinition.Id
            };

            return(Request.CreateResponse(HttpStatusCode.OK, newlyCreatedGameDefinitionMessage));
        }