public static UserViewModel GetUser(int id)
        {
            //if (_usingCache)
            //{
            //}

            RepositoryAspNetUsers repo = new RepositoryAspNetUsers();

            return(repo.GetModelById(id));
        }
        public GridResult <UserRolesViewModel> ListAllRoles(GridRequest request)
        {
            try
            {
                RepositoryAspNetUsers repo = new RepositoryAspNetUsers();

                return(repo.GridListAllRoles(request));
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                return(new GridResult <UserRolesViewModel> {
                    Status = "error", Message = ex.Message
                });
            }
        }
        public SaveResult Lock(UserIdRequest request)
        {
            try
            {
                // TODO: js error display

                if (request.Id == 0)
                {
                    return new SaveResult {
                               Status = "error", Message = "Id is not valid!"
                    }
                }
                ;

                if (UserManager.IsInRole(request.Id, "Admin"))
                {
                    return new SaveResult {
                               Status = "error", Message = "User is admin!"
                    }
                }
                ;

                RepositoryAspNetUsers repo = new RepositoryAspNetUsers();

                AspNetUser user = repo.GetById(request.Id);

                user.LockoutEnabled = true;

                user.LockoutEndDateUtc = new DateTime(2100, 1, 1);

                repo.Update(user);

                return(new SaveResult {
                    Status = "success"
                });
            }
            catch (Exception ex)
            {
                return(new SaveResult {
                    Status = "error", Message = ex.Message
                });
            }
        }
        public static string RolesTxt(int id)
        {
            if (id == 0)
                return "-";

            if (Instance._usersRolesTxt.ContainsKey(id))
            {
                KeyValuePair<int, string> userRolesTxt = Instance._usersRolesTxt.Single(x => x.Key == id);

                return userRolesTxt.Value;
            }

            RepositoryAspNetUsers repo = new RepositoryAspNetUsers();

            UserViewModel user = repo.GetModelById(id);

            if (!Instance._usersRolesTxt.TryAdd(id, user.RolesTxt))
                Instance._log.Trace("Failed to add user roles!");

            return user.RolesTxt;
        }
        public static List<AspNetRole> ListRoles(int id)
        {
            if (Instance._usersRoles.ContainsKey(id))
            {
                KeyValuePair<int, List<AspNetRole>> userRoles = Instance._usersRoles.Single(x => x.Key == id);

                return userRoles.Value;
            }
            else
            {
                RepositoryAspNetUsers repo = new RepositoryAspNetUsers();

                IQueryable<AspNetRole> rolesAsync = repo.ListRoles(id);

                List<AspNetRole> roles = rolesAsync.ToList();

                if (!Instance._usersRoles.TryAdd(id, roles))
                    Instance._log.Trace("Failed to add user roles!");

                return roles;
            }
        }
        public virtual SaveResult SetEmail(SetEmailViewModel request)
        {
            try
            {
                if (request.UserId == 0)
                {
                    return new SaveResult {
                               Status = "error", Message = "Id is not valid!"
                    }
                }
                ;

                if (UserManager.IsInRole(request.UserId, "Admin"))
                {
                    return new SaveResult {
                               Status = "error", Message = "User is admin!"
                    }
                }
                ;

                RepositoryAspNetUsers repo = new RepositoryAspNetUsers();

                AspNetUser user = repo.GetById(request.UserId);

                user.Email = request.NewEmail;

                repo.Update(user);

                return(new SaveResult {
                    Status = "success"
                });
            }
            catch (Exception ex)
            {
                return(new SaveResult {
                    Status = "error", Message = ex.Message
                });
            }
        }