public HttpResponseMessage UpdateUser(ManagerUserViewModel user) //cap nhat user
        {
            try
            {
                //update user at aspNetUser Table
                var ApplicationUserUpdate = new ApplicationUser
                {
                    Id = user.UserId,
                    EmailConfirmed = false,
                    PasswordHash = UserManager.PasswordHasher.HashPassword(user.Password),
                    SecurityStamp = user.SecurityStamp,
                    UserName = user.UserName,
                    Email = user.Email,
                };
                context.Entry(ApplicationUserUpdate).State = System.Data.Entity.EntityState.Modified;
                context.SaveChanges();

                //update userinfo at userinfo table
                UserInfo userInfoModel = new UserInfo();
                //check avatar
                if (user.UserInfo.Avatar != "")
                    user.UserInfo.Avatar = "/Content/UploadFiles/images/" + user.UserInfo.Avatar;
                else
                    user.UserInfo.Avatar = "/Content/UploadFiles/images/No_image_available.png";
                userInfoModel = user.UserInfo;
                using (var ncontext = new ApplicationDbContext())
                {
                    ncontext.Entry(userInfoModel).State = System.Data.Entity.EntityState.Modified;
                    ncontext.SaveChanges();
                };

                //update userRoles at aspNetRoles table
                ApplicationUser userFromDb = context.Users.Where(u => u.UserName.Equals(user.UserName, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();
                var userRoles = UserManager.GetRoles(user.UserId);
                if (userRoles.Count() > 0)
                {
                    //remove user from current roles
                    foreach (var role in userRoles)
                    {
                        UserManager.RemoveFromRole(userFromDb.Id, role);
                    }
                    //add user to new roles
                    UserManager.AddToRole(user.UserId, user.Roles.SingleOrDefault().Name);
                }



                return Request.CreateResponse(HttpStatusCode.OK);
            }
            catch
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }
        }
        public HttpResponseMessage ChangePassword(ManagerUserViewModel user) //cap nhat user
        {
            try
            {
                ApplicationUser userFromDb = context.Users.Where(u => u.Id == user.UserId).FirstOrDefault();
                var responseMessage = new { title = "Lỗi đổi mật khẩu", message = "Error", isSuccess = false };
                if (UserManager.CheckPassword(userFromDb, user.Password))
                {
                    
                    IdentityResult result= UserManager.ChangePassword(user.UserId, user.Password, user.NewPassword);
                    context.SaveChanges();
                    if(result.Succeeded==true)
                        responseMessage = new { title = "Thành công", message = "Đổi mật khẩu thành công", isSuccess = true };
                    else
                     responseMessage = new { title = "Lỗi đổi mật khẩu", message = "Mật khẩu phải bao gồm cả số, chữ thường và chữ in hoa", isSuccess = false };
                   


                }
                else
                {responseMessage = new { title = "Lỗi đổi mật khẩu", message = "Mật khẩu cũ không đúng", isSuccess = false };
                   

                }
                return Request.CreateResponse(HttpStatusCode.OK, responseMessage);
            }
            catch
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }
        }
        public HttpResponseMessage GetAllUsers() //lay tat ca user
        {
            try
            {
                var userList = new List<ManagerUserViewModel>();
                foreach (var user in context.Users.ToList())
                {
                    var userRolesId = user.Roles.Select(m => m.RoleId).ToList();
                    var userId = user.Id;
                    var userModelInfo = context.Users.Where(m => m.Id == userId).Select(m => m.UserInfo).SingleOrDefault();
                    var model = new ManagerUserViewModel()
                    {
                        UserId = user.Id,
                        UserName = user.UserName,
                        Password = user.PasswordHash,
                        SecurityStamp = Guid.NewGuid().ToString(),
                        Email = user.Email,
                        UserInfo = userModelInfo,
                        Roles = context.Roles.Where(r => userRolesId.Contains(r.Id))
                                        .OrderBy(r => r.Name)
                                        .ToList()
                    };
                    userList.Add(model);
                }

                //var output = JsonConvert.SerializeObject(userList);
                return Request.CreateResponse(HttpStatusCode.OK, userList);
            }
            catch
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }
        }