示例#1
0
        public async Task <IActionResult> EditUserGame(UserGameListingModel model)
        {
            // Added model validation
            if (!ModelState.IsValid)
            {
                return(RedirectToAction("EditUserGame", "UserGame"));
            }

            var newUserGameContent = new NewUserGameModel
            {
                GamePlayedName = model.GameName,

                //Players detail
                User_01_Id   = model.User_01_Id,
                User_01_Team = model.User_01_Team,

                User_02_Id   = model.User_02_Id,
                User_02_Team = model.User_02_Team,

                //Score
                GameScoreUser01 = model.GameScoreUser01,
                GameScoreUser02 = model.GameScoreUser02,
            };

            var userGame = BuildUserGame(newUserGameContent);

            userGame.Id = model.Id;

            await _userGameService.EditUserGame(userGame);

            // SignalR send message to All that DB was updated
            await _hubContext.Clients.All.SendAsync("Notify", $"Created new UserGame at : {DateTime.Now}");

            return(RedirectToAction("Index", "Home"));
        }
示例#2
0
        /**
         * Creates new Post in a Forum determined by forumId
         * It prepopulates the form with user and Forum data
         */
        public IActionResult CreateNewUserGame()
        {
            var games = _gameService.GetAll();

            var users = _userService.GetAllActive().OrderBy(user => user.UserName);

            var model = new NewUserGameModel
            {
                GamesList = games,
                UsersList = users
            };

            return(View(model));
        }
        // =====================
        private UserGame BuildUserGame(NewUserGameModel model)
        {
            var user1      = _userService.GetById(model.User_01_Id);
            var user2      = _userService.GetById(model.User_02_Id);
            var gamePlayed = _gameService.GetByName(model.GamePlayedName);

            // Check the winner
            var winner       = "DRAW";
            var scores       = model.GameScore.Split(":");
            var player1Score = 0;
            var player2Score = 0;

            if (scores.Length != 0)
            {
                player1Score = Convert.ToInt32(scores.GetValue(0));
                player2Score = Convert.ToInt32(scores.GetValue(1));
            }

            if (player1Score > player2Score)
            {
                winner = user1.Id;
            }

            if (player1Score < player2Score)
            {
                winner = user2.Id;
            }



            return(new UserGame
            {
                User_01_Id = model.User_01_Id,
                User_01_Team = model.User_01_Team,
                User_02_Id = model.User_02_Id,
                User_02_Team = model.User_02_Team,

                //Score
                GameScore = model.GameScore,

                //Winner, “USER_01_Id”, “USER_02_Id”, “DRAW”
                Winner = winner,

                //Referee details. Only keep their User.Id
                RefereeUserId = model.RefereeUserId,

                // Name of the game
                GamePlayed = gamePlayed
            });
        }
        public async Task <IActionResult> AddUserGame(NewUserGameModel model)
        {
            var userId = _userManager.GetUserId(User);
            //_userManager is a built in service. From
            // Microsoft.AspNetCore.Identity; - Provides API to interact with Users in
            // Data store.
            //User is a built in Object that contains Current User info.
            // We may Use current user later as a refery
            var user = await _userManager.FindByIdAsync(userId);


            var userGame = BuildUserGame(model);
            //TODO: User management rating.

            await _userGameService.AddUserGameAsync(userGame);

            return(RedirectToAction("Index", "UserGame", new { userGameId = userGame.Id }));
        }
示例#5
0
        public async Task <IActionResult> AddUserGame(NewUserGameModel model)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToAction("CreateNewUserGame", "UserGame"));
            }

            var userId = _userManager.GetUserId(User);

            // Record user who submitted the form as a refery. Just for the record

            model.RefereeUserId = userId;

            var userGame = BuildUserGame(model);

            await _userGameService.AddUserGameAsync(userGame);

            //await _monthlyWinnersService.AddNewWinnerAsync(null);

            // SignalR send message to All that DB was updated
            await _hubContext.Clients.All.SendAsync("Notify", $"Created new UserGame at : {DateTime.Now}");

            return(RedirectToAction("Index", "Home"));
        }
示例#6
0
        private UserGame BuildUserGame(NewUserGameModel model)
        {
            var user1      = _userService.GetById(model.User_01_Id);
            var user2      = _userService.GetById(model.User_02_Id);
            var gamePlayed = _gameService.GetByName(model.GamePlayedName);

            // Check the winner
            var winner   = "DRAW";
            var winnerId = "DRAW";
            //var scores = model.GameScore.Split(":");
            var player1Score = Convert.ToInt32(model.GameScoreUser01);
            var player2Score = Convert.ToInt32(model.GameScoreUser02);

            if (player1Score > player2Score)
            {// user1 won
                winnerId = user1.Id;
                winner   = "user1";
            }

            if (player1Score < player2Score)
            {// user2 won
                winnerId = user2.Id;
                winner   = "user2";
            }

            // CalculatePoints method passes 5 parameters
            // 1. User Ones Points before calculation
            // 2. User Twos Points before calculation
            // 3. The winner in form "user1" or "user2"
            // 4. The Id of the game played
            // 5. The number of games user 1 has played
            // 6. The number of games user 2 has played
            // -----------------------------------------
            // The method returns an integer array with the change in points for both users
            // user 1: index 0
            // user 2: index 1
            int[] pointsCalculated = _userGameService.CalculatePoints(_userGameService.getUserPointsByMonth(user1.Id, gamePlayed.Id.ToString()),
                                                                      _userGameService.getUserPointsByMonth(user2.Id, gamePlayed.Id.ToString()),
                                                                      winner,
                                                                      gamePlayed.Id.ToString());
            return(new UserGame
            {
                User_01_Id = model.User_01_Id,
                User_01_Team = model.User_01_Team,
                User_02_Id = model.User_02_Id,
                User_02_Team = model.User_02_Team,

                //Score
                GameScoreUser01 = player1Score,
                GameScoreUser02 = player2Score,

                //Winner, “user1”, “user2”, “DRAW”
                Winner = winnerId,

                //Referee details. Only keep their User.Id
                RefereeUserId = model.RefereeUserId,

                // Name of the game
                GamePlayed = gamePlayed,

                // User_01_Awarder_Points
                User_01_Awarder_Points = pointsCalculated[0],
                // User_02_Awarder_Points
                User_02_Awarder_Points = pointsCalculated[1]
            });
        }