public async Task <IActionResult> Edit(string UserId, UserEditViewModel userEditVM) { if (!ModelState.IsValid) { return(View(userEditVM)); } var user = await _context.Users.FindAsync(UserId); if (user == null) { throw new ApplicationException($"Unable to load user with ID '{UserId}'."); } var ChangeLog = new UsersChangeLog { HRID = user.HRID, StaffId = user.StaffId, FirstName = user.FirstName, MiddleName = user.MiddleName, LastName = user.LastName, Address = user.Address, City = user.City, State = user.State, ZipCode = user.ZipCode, Country = user.Country, Email = user.Email, EmailConfirmed = user.EmailConfirmed, PhoneNumber = user.PhoneNumber, PhoneNumberConfirmed = user.PhoneNumberConfirmed, UserName = user.UserName, HomeEmail = user.HomeEmail, HomeEmailConfirmed = user.HomeEmailConfirmed, CreatedAt = user.CreatedAt, DeletedAt = user.DeletedAt, UpdatedAt = DateTime.Now }; await _context.UsersChangeLog.AddAsync(ChangeLog); await _context.SaveChangesAsync(); user.StaffId = userEditVM.StaffId; user.Address = userEditVM.Address; user.City = userEditVM.City; user.State = userEditVM.State; user.ZipCode = userEditVM.ZipCode; user.Country = userEditVM.Country; user.HomeEmail = userEditVM.HomeEmail; user.CreatedAt = ChangeLog.CreatedAt; user.UpdatedAt = ChangeLog.UpdatedAt; _context.Users.Update(user); await _context.SaveChangesAsync(); var username = userEditVM.Username; if (userEditVM.Username != username) { var setUsernameResult = await _userManager.SetUserNameAsync(user, userEditVM.Username); if (!setUsernameResult.Succeeded) { throw new ApplicationException($"Unexpected error occurred setting username for user with ID '{user.Id}'."); } } var email = user.Email; if (userEditVM.Email != email) { var setEmailResult = await _userManager.SetEmailAsync(user, userEditVM.Email); if (!setEmailResult.Succeeded) { throw new ApplicationException($"Unexpected error occurred setting email for user with ID '{user.Id}'."); } } var phoneNumber = user.PhoneNumber; if (userEditVM.PhoneNumber != phoneNumber) { var setPhoneResult = await _userManager.SetPhoneNumberAsync(user, userEditVM.PhoneNumber); if (!setPhoneResult.Succeeded) { throw new ApplicationException($"Unexpected error occurred setting phone number for user with ID '{user.Id}'."); } } StatusMessage = "Profile has been updated"; return(RedirectToAction(nameof(Edit), new { @UserId = UserId })); }
public async Task <IActionResult> Index(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 ChangeLog = new UsersChangeLog { HRID = user.HRID, StaffId = user.StaffId, FirstName = user.FirstName, MiddleName = user.MiddleName, LastName = user.LastName, Address = user.Address, City = user.City, State = user.State, ZipCode = user.ZipCode, Country = user.Country, Email = user.Email, EmailConfirmed = user.EmailConfirmed, PhoneNumber = user.PhoneNumber, PhoneNumberConfirmed = user.PhoneNumberConfirmed, UserName = user.UserName, HomeEmail = user.HomeEmail, HomeEmailConfirmed = user.HomeEmailConfirmed, UpdatedAt = DateTime.Now }; await _context.UsersChangeLog.AddAsync(ChangeLog); await _context.SaveChangesAsync(); user.Address = model.Address; user.City = model.City; user.State = model.State; user.ZipCode = model.ZipCode; user.Country = model.Country; user.HomeEmail = model.HomeEmail; user.UpdatedAt = ChangeLog.UpdatedAt; _context.Users.Update(user); await _context.SaveChangesAsync(); 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}'."); } } StatusMessage = "Your profile has been updated"; return(RedirectToAction(nameof(Index))); }