public IActionResult Edit(long id) { Assistant assistant = null; if (User.IsInRole("Assistant")) { assistant = _context.Assistants.Where(a => a.User.Id == _userManager.GetUserId(User)).Include(a => a.Doctor).Include(a => a.User).Single(); } else { assistant = _context.Assistants.Include(a => a.Doctor).Include(a => a.User).Single(a => a.Id == id); } if (assistant == null) { return(NotFound()); } ViewData["Doctors"] = GetDoctors(assistant.Doctor.Id); EditAssistant model = new EditAssistant { Id = assistant.Id, FirstName = assistant.FirstName, MiddleName = assistant.MiddleName, LastName = assistant.LastName, DisplayName = assistant.DisplayName, Address = assistant.Address, Gender = assistant.Gender, Image = assistant.Image, Username = assistant.User.UserName, Email = assistant.User.Email, Phone = assistant.User.PhoneNumber }; return(View(model)); }
public async Task <IActionResult> Edit(long id, EditAssistant assistant, IFormFile file) { string returnAction = "Search"; Assistant A; if (User.IsInRole("Assistant")) { A = _context.Assistants .Include(a => a.User) .Include(a => a.Doctor) .First(a => a.User.Id == _userManager.GetUserId(User)); returnAction = "Profile"; } else { A = _context.Assistants .Include(a => a.User) .Include(a => a.Doctor) .First(a => a.Id == assistant.Id); } if (id != assistant.Id) { return(NotFound()); } if (ModelState.IsValid) { try { IdentityUser user = A.User; var username = await _userManager.GetUserNameAsync(user); if (assistant.Username != username) { if (_userManager.Users.Any(u => u.UserName == assistant.Username)) { ModelState.AddModelError(String.Empty, "User name already taken"); ViewData["Doctors"] = GetDoctors(assistant.SelectedDoctorId); return(View(assistant)); } var setUserNameResult = await _userManager.SetUserNameAsync(user, assistant.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)) { assistant.Image = file.FileName; file.CopyTo(filestream); filestream.Flush(); } } A.FirstName = assistant.FirstName; A.MiddleName = assistant.MiddleName; A.LastName = assistant.LastName; A.DisplayName = assistant.DisplayName; A.Address = assistant.Address; A.Gender = assistant.Gender; A.Image = assistant.Image; A.Doctor = _context.Doctors.Find(assistant.SelectedDoctorId); var email = await _userManager.GetEmailAsync(user); if (assistant.Email != email) { var setEmailResult = await _userManager.SetEmailAsync(user, assistant.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 (assistant.Phone != phoneNumber) { var setPhoneResult = await _userManager.SetPhoneNumberAsync(user, assistant.Phone); if (!setPhoneResult.Succeeded) { var userId = await _userManager.GetUserIdAsync(user); throw new InvalidOperationException($"Unexpected error occurred setting phone number for user with ID '{userId}'."); } } A.User = user; _context.Update(A); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!AssistantExists(assistant.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(returnAction)); } ViewData["Doctors"] = GetDoctors(assistant.SelectedDoctorId); return(View(assistant)); }