public ActionResult Edit(EditAccountModel editModel) { var userManager = new UserManager<Account>(new UserStore<Account>(DbContext)); Account editAccount = userManager.FindByName(editModel.UserName); if (editAccount == null) { return RedirectErrorPage(); } // Kiểm tra tên tài khoản đã tồn tại hay chưa Account accountDb; if (editAccount.UserName != editModel.UserName) { accountDb = userManager.FindByName(editModel.UserName); if (accountDb != null) { ModelState.AddModelError("UserName", "Tên tài khoản đã được sử dụng."); } } if (editAccount.Email != editModel.Email) { accountDb = userManager.FindByEmail(editModel.Email); if (accountDb != null) { ModelState.AddModelError("Email", "Email đã được sử dụng."); } } if (editAccount.Profile.Identity != editModel.Identity) { accountDb = DbContext.Accounts.FirstOrDefault(s => s.Profile.Identity == editModel.Identity); if (accountDb != null) { ModelState.AddModelError("Identity", "Mã số này đã được sử dụng."); } } if (ModelState.IsValid) { try { var acc = userManager.FindByName(editModel.UserName); acc.Email = editModel.Email; acc.PhoneNumber = editModel.PhoneNumber; acc.Profile.BirthDate = editModel.BirthDate; acc.Profile.FirstName = editModel.FirstName; acc.Profile.LastName = editModel.LastName; acc.Profile.Notes = editModel.Notes; acc.Profile.Actived = editModel.Actived; acc.Profile.Identity = editModel.Identity; var result = userManager.Update(acc); if (result.Succeeded) { if (!string.IsNullOrEmpty(editModel.Password)) { userManager.RemovePassword(acc.Id); userManager.AddPassword(acc.Id, editModel.Password); } if (editModel.Role == "Admin") { userManager.AddToRole(acc.Id, "Admin"); userManager.AddToRole(acc.Id, "Teacher"); } else if (editModel.Role == "Teacher") { userManager.AddToRole(acc.Id, "Teacher"); } else { userManager.AddToRole(acc.Id, "Student"); } return Redirect(null); } ModelState.AddModelError("", "Đã có lỗi xảy ra. Vui lòng thử lại sau."); } catch { ModelState.AddModelError("", "Đã có lỗi xảy ra. Vui lòng thử lại sau."); } } ViewBag.IsEdit = true; InitFormData(editModel); return View(editModel); }
public ActionResult Edit(string username) { if (string.IsNullOrEmpty(username)) { return RedirectErrorPage(); } var userManager = new UserManager<Account>(new UserStore<Account>(DbContext)); Account account = userManager.FindByName(username); if (account == null) { return RedirectErrorPage(); } EditAccountModel accountModel = new EditAccountModel() { UserName = account.UserName, PhoneNumber = account.PhoneNumber, Email = account.Email, Identity = account.Profile.Identity, LastName = account.Profile.LastName, FirstName = account.Profile.FirstName, Notes = account.Profile.Notes, BirthDate = account.Profile.BirthDate, Actived = account.Profile.Actived }; var roles = userManager.GetRoles(account.Id); if (roles.Contains("Admin")) { accountModel.Role = "Admin"; } else if (roles.Contains("Teacher")) { accountModel.Role = "Teacher"; } else { accountModel.Role = "Student"; } InitFormData(accountModel); ViewBag.IsEdit = true; return View(accountModel); }