public IActionResult Change(VMUserAndRoles user) { if (ModelState.IsValid == false) { return(View(GetUser(user.ID))); } else { var User = DB.Users.First(f => f.Id == Int32.Parse(Request.Form["ID"])); if (User != null) { User.Fname = Request.Form["FName"]; User.Lname = Request.Form["LName"]; User.Email = Request.Form["EMail"]; var RolesToDelite = DB.UserRoles.Where(w => w.UserId == User.Id); DB.UserRoles.RemoveRange(RolesToDelite); var RolesInDB = DB.Roles.Select(s => s.Role).ToArray(); foreach (var i in Request.Form) { if (RolesInDB.Contains(i.Key) == true) { var RoleID = DB.Roles.First(f => f.Role == i.Key).Id; DB.UserRoles.Add(new UserRoles { UserId = User.Id, RoleId = RoleID }); } } DB.SaveChanges(); Response.Headers.Add("REFRESH", "3;http://localhost:3189/account"); return(Content("User is modified")); } else { return(Content("User not found")); } } }
private VMUserAndRoles GetUser(int UserID) { var UserAndRoles = new VMUserAndRoles(); UserAndRoles.ID = UserID; var User = this.DB.Users.FirstOrDefault(f => f.Id == UserID); UserAndRoles.FName = User.Fname; UserAndRoles.LName = User.Lname; UserAndRoles.EMail = User.Email; var AllRoles = DB.Roles.Select(s => s.Role).ToArray(); var ActiveRoles = (from acRols in DB.UserRoles join allRoles in DB.Roles on acRols.RoleId equals allRoles.Id where acRols.UserId == UserID select allRoles.Role).ToList(); var NotActiveRoles = AllRoles.Except(ActiveRoles); foreach (var i in ActiveRoles) { UserAndRoles.UserRoles.Add(i, true); } foreach (var i in NotActiveRoles) { UserAndRoles.UserRoles.Add(i, false); } UserAndRoles.UserRoles = UserAndRoles.UserRoles.OrderBy(o => o.Key).ToDictionary(s => s.Key, s => s.Value); return(UserAndRoles); }