public async Task <IActionResult> Index() { var user = await _userManager.GetUserAsync(User); if (user == null) { var returnUrl = "http://www.casualeal.com/Manage/Index"; return(RedirectToAction("Login", "Account", routeValues: new { returnUrl })); } if (user == null) { throw new ApplicationException($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); } var blacklisted = await _blacklistRepository.GetByUserIdAsync(user.Id); if (blacklisted != null && blacklisted.IsBanned) { await _signInManager.SignOutAsync(); _logger.LogInformation($"User {user.Email} was signed in, but blacklisted"); return(InvalidUser()); } var accountInfo = new IndexViewModel { Username = user.UserName, Email = user.Email, PhoneNumber = user.PhoneNumber, IsEmailConfirmed = user.ConfirmedEmail, StatusMessage = StatusMessage }; var summonerInfo = await _accountService.GetSummonerViewAsync(user); var summoners = await _accountService.GetFpSummonerView(); var referedBy = summoners.SummonerInfos.FirstOrDefault(x => x.UserId == user.ReferalId); var model = new AccountSummonerJointModel { ProfileInfo = accountInfo, SummonerInfo = summonerInfo, DiscordNames = summoners.SummonerInfos.Select(x => x.DiscordHandle), ReferredByDiscordHandle = referedBy?.DiscordHandle }; return(View(model)); }
public async Task <IActionResult> Index(AccountSummonerJointModel model) { if (!ModelState.IsValid) { return(View(model)); } var user = await _userManager.GetUserAsync(User); if (user == null) { var returnUrl = "http://www.casualeal.com/Manage/Index"; return(RedirectToAction("Login", "Account", routeValues: new { returnUrl })); } var userName = user.UserName; if (model.ProfileInfo.Username != userName) { var setUserNameResult = await _userManager.SetUserNameAsync(user, model.ProfileInfo.Username); if (!setUserNameResult.Succeeded) { throw new ApplicationException($"Unexpected error occurred setting userName for user with ID '{user.Id}'."); } } var email = user.Email; if (model.ProfileInfo.Email != email) { var setEmailResult = await _userManager.SetEmailAsync(user, model.ProfileInfo.Email); if (!setEmailResult.Succeeded) { throw new ApplicationException($"Unexpected error occurred setting email for user with ID '{user.Id}'."); } } var phoneNumber = user.PhoneNumber; if (model.ProfileInfo.PhoneNumber != phoneNumber) { var setPhoneResult = await _userManager.SetPhoneNumberAsync(user, model.ProfileInfo.PhoneNumber); if (!setPhoneResult.Succeeded) { throw new ApplicationException($"Unexpected error occurred setting phone number for user with ID '{user.Id}'."); } } user = await _userManager.GetUserAsync(User); if (user.ReferalId == null && model.ReferredByDiscordHandle != null && model.ReferredByDiscordHandle != model.DefaultReferedByDiscordHandle) { var referedSummoner = await _summonerInfoRepository.GetSummonerByDiscordHandleAsync(model.ReferredByDiscordHandle); user.ReferalId = referedSummoner.UserId; await _userManager.UpdateAsync(user); } StatusMessage = "Your profile has been updated"; return(RedirectToAction(nameof(Index))); }