public IHttpActionResult Login(UsuarioSenhaDTO usuario)
        {
            if (usuario == null || usuario.Login == null || usuario.Senha == null)
            {
                return(BadRequest());
            }
            Usuario user;

            try
            {
                Modelo db = new Modelo();
                user = db.Usuarios.Find(usuario.Login);


                if (user == null)
                {
                    return(BadRequest("Usuário não encontrado!"));
                }

                string senhaCrypt = CryptoGraph.Encrypt(usuario.Senha);

                if (user.Senha != senhaCrypt)
                {
                    return(BadRequest("Senha incorreta!"));
                }


                string token = TokenServices.GenerateToken(user.Login, roles: user.Perfil);

                var userObj = new
                {
                    Token   = token,
                    Usuario = user.Nome,
                    usuario.Login,
                    user.FuncionarioId,
                    user.Funcionario?.MatriculaFuncionario,
                    user.Funcionario?.CodigoEmpresa,
                    user.Perfil
                };
                db.Dispose();

                return(Ok(userObj));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, ex));
            }
        }
        public IHttpActionResult RecuperarSenha(UsuarioSenhaDTO usuario)
        {
            if (string.IsNullOrEmpty(usuario.Login))
            {
                return(BadRequest("É necessário informar o login!"));
            }

            if (string.IsNullOrEmpty(usuario.Senha))
            {
                return(BadRequest("É necessário informar a senha!"));
            }

            if (string.IsNullOrEmpty(usuario.CodigoRecuperacao))
            {
                return(BadRequest("É necessário informa o código de recuperação!"));
            }

            try
            {
                Usuario usuarioDB = usuariosService.GetUsuario(usuario.Login);
                if (usuario.CodigoRecuperacao != usuarioDB.CodigoRecuperacao)
                {
                    return(BadRequest("Código de Recuperação inválido!"));
                }

                usuarioDB.Senha             = CryptoGraph.Encrypt(usuario.Senha);
                usuarioDB.CodigoRecuperacao = null;
                usuariosService.AddOrUpdateUsuario(usuarioDB);
                return(Ok("Senha alterada com Sucesso!"));
            }
            catch (UsuarioNaoEncontradoException)
            {
                return(Content(HttpStatusCode.NotFound, "Usuário não encontrado!"));
            }
            catch
            {
                return(Content(HttpStatusCode.InternalServerError, "Ocorreu um erro desconhecido. Por favor, entre em contato com o suporte."));
            }
        }