public async Task <IActionResult> Edit(long id) { InsuranceCompany insuranceCompany = null; if (User.IsInRole("Insurance")) { insuranceCompany = _context.InsuranceCompanies.Include(i => i.User).Where(i => i.User.Id == _userManager.GetUserId(User)).Single(); } else { insuranceCompany = _context.InsuranceCompanies.Include(i => i.User).Single(i => i.Id == id); } if (insuranceCompany == null) { return(NotFound()); } EditInsuranceCompany model = new EditInsuranceCompany { Id = insuranceCompany.Id, Name = insuranceCompany.Name, Address = insuranceCompany.Address, Fax = insuranceCompany.Fax, Image = insuranceCompany.Image, Username = insuranceCompany.User.UserName, Email = insuranceCompany.User.Email, Phone = insuranceCompany.User.PhoneNumber }; return(View(model)); }
public async Task <IActionResult> Edit(long id, EditInsuranceCompany model, IFormFile file) { string returnAction = "Search"; if (_userManager.Users.Any(u => u.UserName == model.Username)) { ModelState.AddModelError(String.Empty, "User name already taken"); return(View(model)); } if (id != model.Id) { return(NotFound()); } InsuranceCompany company = _context.InsuranceCompanies.Include(i => i.User).Single(i => i.Id == id); if (ModelState.IsValid) { try { IdentityUser user = company.User; var username = await _userManager.GetUserNameAsync(user); if (model.Username != username) { if (_userManager.Users.Any(u => u.UserName == model.Username)) { ModelState.AddModelError(String.Empty, "User name already taken"); return(View(model)); } var setUserNameResult = await _userManager.SetUserNameAsync(user, model.Username); if (!setUserNameResult.Succeeded) { var userId = await _userManager.GetUserIdAsync(user); throw new InvalidOperationException($"Unexpected error occurred setting username for user with ID '{userId}'."); } } if (file != null) { var filePath = Path.GetTempFileName(); using (FileStream filestream = System.IO.File.Create(_environment.WebRootPath + "\\images\\" + file.FileName)) { model.Image = file.FileName; file.CopyTo(filestream); filestream.Flush(); } } company.Name = model.Name; company.Address = model.Address; company.Fax = model.Fax; company.Image = model.Image; var email = await _userManager.GetEmailAsync(user); if (model.Email != email) { var setEmailResult = await _userManager.SetEmailAsync(user, model.Email); if (!setEmailResult.Succeeded) { var userId = await _userManager.GetUserIdAsync(user); throw new InvalidOperationException($"Unexpected error occurred setting email for user with ID '{userId}'."); } } var phoneNumber = await _userManager.GetPhoneNumberAsync(user); if (model.Phone != phoneNumber) { var setPhoneResult = await _userManager.SetPhoneNumberAsync(user, model.Phone); if (!setPhoneResult.Succeeded) { var userId = await _userManager.GetUserIdAsync(user); throw new InvalidOperationException($"Unexpected error occurred setting phone number for user with ID '{userId}'."); } } company.User = user; _context.InsuranceCompanies.Update(company); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!InsuranceCompanyExists(company.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(returnAction)); } return(View(model)); }