//CreatePlayer takes the email used when registering to find the new user created in AspNetUsers //To then create a new entry in our Player Table and to link them via AspNetUsers.ID and Player.PlayerID public IActionResult CreatePlayer(string email) { var registeredUser = db.AspNetUsers.SingleOrDefault(u => u.Email == email); string newAccount = "NewAccount"; DateTime today = DateTime.Now; Player player = new Player(); player.PlayerId = registeredUser.Id; player.PlayerUserName = registeredUser.UserName; player.PlayerScore = 0; player.LastUpdatedDay = today; player.CreatedDay = today; player.IsFirstTimeLoggingIn = true; player.DifficultyLevel = "Beginner"; db.Player.Add(player); db.SaveChanges(); return(View("~/Views/Home/Index.cshtml", newAccount)); }
public async Task <IActionResult> OnPostAsync(string returnUrl = null) { returnUrl = returnUrl ?? Url.Content("~/"); if (ModelState.IsValid) { // This doesn't count login failures towards account lockout // To enable password failures to trigger account lockout, set lockoutOnFailure: true var result = await _signInManager.PasswordSignInAsync(Input.UserName, Input.Password, Input.RememberMe, lockoutOnFailure : false); if (result.Succeeded) { MathGameDBContext db = new MathGameDBContext(); _logger.LogInformation("User logged in."); //HttpContext.Session.SetInt32("PlayerCurrentScore", 0); var currentUser = db.AspNetUsers.SingleOrDefault(u => u.UserName == Input.UserName).Id; var firstTimeLoggingIn = db.Player.SingleOrDefault(u => u.PlayerId == currentUser).IsFirstTimeLoggingIn; if (firstTimeLoggingIn) { db.Player.SingleOrDefault(u => u.PlayerId == currentUser).IsFirstTimeLoggingIn = false; db.SaveChanges(); return(RedirectToAction("IsFirstTimeLogginIn", "Player")); } else { return(RedirectToAction("Player", "Player")); } } if (result.RequiresTwoFactor) { return(RedirectToPage("./LoginWith2fa", new { ReturnUrl = returnUrl, RememberMe = Input.RememberMe })); } if (result.IsLockedOut) { _logger.LogWarning("User account locked out."); return(RedirectToPage("./Lockout")); } else { ModelState.AddModelError(string.Empty, "Invalid login attempt."); return(Page()); } } // If we got this far, something failed, redisplay form return(Page()); }
//When the player finishes their quiz, this method takes their score and if intermediate or advanced difficulty was selected, will multiply their score. //After that it will also add the score to your overall score player record. //It will also add "time" to your monster public IActionResult QuizComplete() { string playerID = GetPlayer(); double initialScore = Global.QuizScore; double newScore = 0; double monsterEnergy = 0; if (Global.QuizDifficulty == "advanced") { newScore = initialScore * 2; } else if (Global.QuizDifficulty == "intermediate") { newScore = initialScore * 1.5; } else { newScore = initialScore; } monsterEnergy = Math.Floor(newScore * 30); DateTime expDate = db.Avatar.SingleOrDefault(u => u.PlayerId == playerID && u.IsActive == true).ExpireDate; DateTime newExpDate = expDate.AddHours(newScore / 2); int monsterMood = db.Avatar.SingleOrDefault(u => u.PlayerId == playerID && u.IsActive == true).MoodId; int currentEnergy = db.Avatar.SingleOrDefault(u => u.PlayerId == playerID && u.IsActive == true).AvatarEnergy; db.Player.SingleOrDefault(u => u.PlayerId == playerID).PlayerScore += newScore; db.Avatar.SingleOrDefault(u => u.PlayerId == playerID && u.IsActive == true).LastFeedDate = DateTime.Now; db.Avatar.SingleOrDefault(u => u.PlayerId == playerID && u.IsActive == true).ExpireDate = newExpDate; if (newExpDate >= DateTime.Now.AddDays(1)) { db.Avatar.SingleOrDefault(u => u.PlayerId == playerID && u.IsActive == true).ExpireDate = DateTime.Now.AddDays(1); } else { db.Avatar.SingleOrDefault(u => u.PlayerId == playerID && u.IsActive == true).ExpireDate = newExpDate; } if ((currentEnergy + Convert.ToInt32(monsterEnergy)) > 1440) { int energyDiff = 1440 - currentEnergy; db.Avatar.SingleOrDefault(u => u.PlayerId == playerID && u.IsActive == true).AvatarEnergy += energyDiff; } else { db.Avatar.SingleOrDefault(u => u.PlayerId == playerID && u.IsActive == true).AvatarEnergy += Convert.ToInt32(monsterEnergy); } if (currentEnergy >= 1380 && currentEnergy <= 1440) { db.Avatar.SingleOrDefault(u => u.PlayerId == playerID && u.IsActive == true).MoodId = 6; } else if (currentEnergy >= 1081 && currentEnergy <= 1379) { db.Avatar.SingleOrDefault(u => u.PlayerId == playerID && u.IsActive == true).MoodId = 5; } else if (currentEnergy >= 721 && currentEnergy <= 1080) { db.Avatar.SingleOrDefault(u => u.PlayerId == playerID && u.IsActive == true).MoodId = 4; } else if (currentEnergy >= 361 && currentEnergy <= 720) { db.Avatar.SingleOrDefault(u => u.PlayerId == playerID && u.IsActive == true).MoodId = 3; } else if (currentEnergy >= 1 && currentEnergy <= 360) { db.Avatar.SingleOrDefault(u => u.PlayerId == playerID && u.IsActive == true).MoodId = 2; } else { db.Avatar.SingleOrDefault(u => u.PlayerId == playerID && u.IsActive == true).MoodId = 1; } db.SaveChanges(); ResetQuiz(); return(View("~/Views/GamePlay/QuizComplete.cshtml", newScore)); }