public async Task <ActionResult> Edit(UserDetailsViewModel model) { if (ModelState.IsValid) { using (var db = new ApplicationDbContext()) { MyUser user = db.Users.Find(model.UserId); user.Id = model.UserId; user.UserName = model.UserName; user.Email = model.EmailAddress; user.EmailConfirmed = model.EmailAddressConfirmed; user.AccessFailedCount = model.AccessFailedCount; user.LockoutEnabled = model.LockoutEnabled; user.LockoutEndDateUtc = model.LockoutEndDate; user.UserDetails.FirstName = model.FirstName; user.UserDetails.LastName = model.LastName; user.UserDetails.Age = model.Age; user.UserDetails.Address = model.Address; user.UserDetails.City = model.City; user.UserDetails.Country = model.Country; MyUserRole currentRole = db.Users.FirstOrDefault(m => m.Id == model.UserId) .Roles.FirstOrDefault(); db.Users.FirstOrDefault(m => m.Id == model.UserId) .Roles.Remove(currentRole); db.Users.FirstOrDefault(m => m.Id == model.UserId) .Roles.Add(new MyUserRole { RoleId = int.Parse(model.Role), UserId = model.UserId }); db.Entry(user).State = EntityState.Modified; await db.SaveChangesAsync(); ApplicationUserManager userManager = new ApplicationUserManager(new MyUserStore(new ApplicationDbContext())); // Dodati da se novi password salje ;) await userManager.RemovePasswordAsync(model.UserId); await userManager.AddPasswordAsync(model.UserId, model.Password); } return(RedirectToAction("Index", new { Message = UserMessageId.ChangeUser })); } ViewBag.Roles = new SelectList(db.Roles.AsEnumerable().ToList(), "Id", "Name", db.Roles.FirstOrDefault(m => m.Id.ToString() == model.Role)); ViewBag.Id = new SelectList(db.UserDetails, "Id", "Role", model.Role); return(View(model)); }
public async Task <JsonResult> AddUserRole(MyUserRole model) { try { await AddUserToRole(model); return(Json(new { success = true, data = "", error = "" }, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); } return(Json(new { success = false, data = "", error = "Error!" }, JsonRequestBehavior.AllowGet)); }
private async Task AddUserToRole(MyUserRole model) { var user = await UserManager.FindByIdAsync(model.UserId); model.UserRoleId = Guid.NewGuid().ToString(); //check if same role exists already var prevRoleExists = user.Roles.Where(x => x.UserId == model.UserId && x.RoleId == model.RoleId ).Any(); #region Adding entry in physician table in case of role is physician var role = await RoleManager.FindByNameAsync(UserRoles.Physician.ToDescription()); var physician = _physicianService.GetDetail(model.UserId); // if the user role has been changed from physician to some different role if (role.Id != model.RoleId && physician != null) { user.status_key = null; user.status_change_date = DateTime.Now.ToEST(); user.status_change_date_forAll = DateTime.Now.ToEST(); user.status_change_cas_key = null; UserManager.Update(user); } else if (role.Id == model.RoleId && physician != null) { if (!user.status_key.HasValue) { var defaultStatus = _physicianStatus.GetDefault(); user.status_key = defaultStatus.phs_move_status_key; user.status_change_date = DateTime.Now.ToEST(); user.status_change_date_forAll = DateTime.Now.ToEST(); user.status_change_cas_key = null; UserManager.Update(user); } } #endregion //if not only then add that role if (!prevRoleExists) { user.Roles.Add(model); IdentityResult identityResult = await UserManager.UpdateAsync(user); } }