Пример #1
0
        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));
        }
Пример #2
0
        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));
        }