public async Task CreateQuestionSuggestionNotification(QuizaldoUser user, QuestionSuggestion questionSuggestion) { var notification = new Notification(); notification.Text = $"{user.UserName} has suggested a question:\n " + $"{questionSuggestion.QuestionName} with correct answer:\n " + $"{questionSuggestion.CorrectAnswer}."; notification.CreatedOn = DateTime.Now; notification.UserId = user.Id; notification.User = user; await this.context.Notifications.AddAsync(notification); await this.context.SaveChangesAsync(); }
public async Task CreateQuizNotification(Quiz quiz, QuizaldoUser user, QuizServiceModel model) { var notification = new Notification(); notification.Text = $"{user.UserName} has completed {quiz.Name} quiz with " + $"{model.Result.UsersCorrectAnswers} correct and " + $"{model.Result.UsersWrongAnswers} wrong answers."; notification.CreatedOn = DateTime.Now; notification.UserId = user.Id; notification.User = user; await this.context.Notifications.AddAsync(notification); await this.context.SaveChangesAsync(); }
public async Task <IActionResult> OnPostAsync(string returnUrl = null) { returnUrl = returnUrl ?? Url.Content("~/"); ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList(); if (ModelState.IsValid) { var user = new QuizaldoUser { UserName = Input.UserName, Email = Input.Email }; var result = await _userManager.CreateAsync(user, Input.Password); if (result.Succeeded) { _logger.LogInformation("User created a new account with password."); //var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); //code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code)); //var callbackUrl = Url.Page( // "/Account/ConfirmEmail", // pageHandler: null, // values: new { area = "Identity", userId = user.Id, code = code }, // protocol: Request.Scheme); if (_userManager.Options.SignIn.RequireConfirmedAccount) { return(RedirectToPage("RegisterConfirmation", new { email = Input.Email })); } else { await _signInManager.SignInAsync(user, isPersistent : false); return(LocalRedirect(returnUrl)); } } foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } } // If we got this far, something failed, redisplay form return(Page()); }
public async Task GetMasterAchievement(QuizaldoUser user) { var achievement = await this.context.Achievements .FirstOrDefaultAsync(x => x.Name.Equals(AchievementConstants.Master)); if (achievement == null) { return; } var userAchievements = await this.context.UserAchievements .Where(x => x.User.Id == user.Id) .Include(x => x.Achievement) .ToListAsync(); //master achievement requires all previous achievements to be completed var allAchievementsCount = this.context.Achievements.Count() - 1; if (userAchievements.Count() == allAchievementsCount) { if (!this.context.UserAchievements.Any(x => x.UserId == user.Id && x.AchievementId == achievement.Id)) { var userAchivement = new UserAchievement(); userAchivement.UserId = user.Id; userAchivement.User = user; userAchivement.AchievementId = achievement.Id; userAchivement.Achievement = achievement; userAchivement.AchievedOn = DateTime.Now; user.TotalAchievementPoints += achievement.Points; await this.context.UserAchievements.AddAsync(userAchivement); await this.context.SaveChangesAsync(); await this.notificationService.CreateAchievementNotification(user, achievement); } } }
public async Task GetExcellentAchievement(QuizaldoUser user) { var achievement = await this.context.Achievements .FirstOrDefaultAsync(x => x.Name.Equals(AchievementConstants.Excellent)); if (achievement == null) { return; } var userResults = await this.context.UserResults .Where(x => x.User.Id == user.Id) .ToListAsync(); if (userResults.Any(x => x.UsersWrongAnswers == 0)) { if (!this.context.UserAchievements.Any(x => x.UserId == user.Id && x.AchievementId == achievement.Id)) { var userAchivement = new UserAchievement(); userAchivement.UserId = user.Id; userAchivement.User = user; userAchivement.AchievementId = achievement.Id; userAchivement.Achievement = achievement; userAchivement.AchievedOn = DateTime.Now; user.TotalAchievementPoints += achievement.Points; await this.context.UserAchievements.AddAsync(userAchivement); await this.context.SaveChangesAsync(); await this.notificationService.CreateAchievementNotification(user, achievement); } } }