public async Task <IActionResult> Settings(IndexViewModel model) { if (!ModelState.IsValid) { return(View(model)); } var user = await _userManager.GetUserAsync(User); if (user == null) { throw new ApplicationException($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); } var email = user.Email; if (model.Email != email) { var setEmailResult = await _userManager.SetEmailAsync(user, model.Email); if (!setEmailResult.Succeeded) { throw new ApplicationException($"Unexpected error occurred setting email for user with ID '{user.Id}'."); } } var phoneNumber = user.PhoneNumber; if (model.PhoneNumber != phoneNumber) { var setPhoneResult = await _userManager.SetPhoneNumberAsync(user, model.PhoneNumber); if (!setPhoneResult.Succeeded) { throw new ApplicationException($"Unexpected error occurred setting phone number for user with ID '{user.Id}'."); } } foreach (var prop in model.GetType().GetProperties()) { if (user.GetType().GetProperty(prop.Name) == null) { continue; } if (user.GetType().GetProperty(prop.Name).GetValue(user) == prop.GetValue(model)) { continue; } user.GetType().GetProperty(prop.Name).SetValue(user, prop.GetValue(model)); } if (model.ProfileUploaded != null) { using (var fileStream = new FileStream((AppEnvironment.WebRootPath + "/images/Profiles/" + user.GetHashCode().ToString() + ".jpg"), FileMode.Create)) { await model.ProfileUploaded.CopyToAsync(fileStream); user.ProfileImage = user.GetHashCode().ToString() + ".jpg"; } } await _userManager.UpdateAsync(user); StatusMessage = "Ваш профиль был успешно обновлен!"; return(RedirectToAction(nameof(Index))); }