public static void CopyPropFromAccountViewModel(this ApplicationUser user, AccountViewModel userView,IList<IdentityRole> roles) 
 {
     user.UserName = userView.UserName;
     user.Email = userView.Email;
     user.PhoneNumber = userView.PhoneNumber;
     user.Roles.Clear();
     foreach (var role in userView.UserInRole)
     {
         user.Roles.Add(role);
     }
 }
        public ActionResult UpdateUser(AccountViewModel userAccount,[DataSourceRequest] DataSourceRequest request)
        {
            try
            {

                var persistentUser = db.Users.GetById(userAccount.Id);
                persistentUser.CopyPropFromAccountViewModel(userAccount, roles);
                db.Users.Update(persistentUser);
                db.SaveChanges();
                return Json(new[] { persistentUser.ToAccountViewModel() }.ToDataSourceResult(request, ModelState));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(ex.GetType().ToString(), ex.Message);
                return Json(new[] { userAccount }.ToDataSourceResult(request, ModelState));
            }
        }
        public ActionResult DeleteUser([DataSourceRequest]DataSourceRequest request, AccountViewModel user)
        {

                if (user != null && ModelState.IsValid)
                {
                        if (user.Id == User.Identity.GetUserId())
                        {
                            ModelState.AddModelError("", "You cannot delete current user.");
                        }
                        else
                        {
                            db.Users.Delete(user.Id);
                            db.SaveChanges();
                        }
                }

                var users = db.Users.All().Select(AccountViewModel.ToAccountViewModel).ToList();

                return Json(users.ToDataSourceResult(request, ModelState));
        }