public async Task <IActionResult> ManageProfile(AdminManageProfileViewModel VM) { string UserName = User.Identity.Name; ApplicationUser user = _userManager.Users.FirstOrDefault(x => x.UserName == UserName); user.UserName = VM.Email; user.Email = VM.Email; user.GivenNames = VM.GivenNames; user.Surname = VM.Surname; user.PhoneNumber = VM.PhoneNo; IdentityResult Updateduser = await _userManager.UpdateAsync(user); if (Updateduser.Succeeded) { try { Address userAddress = _addressService.Query(x => x.ApplicationUserId == user.Id).FirstOrDefault(); userAddress.AddressType = "Home"; userAddress.StreetAddress = VM.StreetAddress; userAddress.Suburb = VM.Suburb; userAddress.State = VM.State; userAddress.Postcode = VM.Postcode; userAddress.PreferredShippingAddress = true; userAddress.ApplicationUserId = user.Id; _addressService.Update(userAddress); } catch (Exception) { Address userAddress = new Address(); userAddress.AddressId = new Guid(); userAddress.AddressType = "Home"; userAddress.StreetAddress = VM.StreetAddress; userAddress.Suburb = VM.Suburb; userAddress.State = VM.State; userAddress.Postcode = VM.Postcode; userAddress.PreferredShippingAddress = true; userAddress.ApplicationUserId = user.Id; _addressService.Create(userAddress); } return(RedirectToAction("Index", "Home")); } // To do: try catch block around return in case user cant be found or there's an error... return(View(VM)); }
public IActionResult ManageProfile() { if (User.IsInRole("Admin") || User.IsInRole("SuperUser")) { string UserName = User.Identity.Name; bool userHasAddress = false; ApplicationUser user = _userManager.Users.Where(x => x.Email == UserName).FirstOrDefault(); AdminManageProfileViewModel VM = new AdminManageProfileViewModel() { Email = user.Email, GivenNames = user.GivenNames, Surname = user.Surname, PhoneNo = user.PhoneNumber }; Address userAddress = new Address(); // Check if user has an address in the system. If not, deal with the thrown exception. // I've simply added 'Exception' to the catch block as I'm not too fussed about which specific exception I get. try { userAddress = _addressService.Query(x => x.ApplicationUserId == user.Id).FirstOrDefault(); VM.StreetAddress = userAddress.StreetAddress; VM.Suburb = userAddress.Suburb; VM.State = userAddress.State; VM.Postcode = userAddress.Postcode; userHasAddress = true; } catch (Exception) { VM.StreetAddress = ""; VM.Suburb = ""; VM.State = ""; VM.Postcode = 1000; } ViewBag.UserHasAddress = userHasAddress; return(View(VM)); } else { return(View()); } }