public UsuarioDto CreateInternal(UsuarioDto usuarioDto)
        {
            if (usuarioDto == null)
            {
                throw new Exception("O usuário não pode ser nulo");
            }

            usuarioDto.Validate();

            Usuario usuario = new Usuario()
            {
                id                = Guid.NewGuid().ToString(),
                nome              = usuarioDto.nome.Trim(),
                username          = usuarioDto.username.Trim().ToUpper(),
                senha             = usuarioDto.username.Trim().ToUpper(),
                isAdmin           = usuarioDto.isAdmin,
                cadastroConcluido = false
            };

            //usuario.Validate();
            usuario.Format();

            if (AlreadyExists(usuario.id, usuario.username))
            {
                throw new Exception("Já existe esse Username cadastrado");
            }

            usuario.senha = CryptographyUtils.ToMd5(usuario.senha);

            _usuarioRepository.Create(usuario);

            return(UsuarioDto.ConvertToDto(usuario));
        }
        public UsuarioDto Create(Usuario usuario)
        {
            if (usuario == null)
            {
                throw new Exception("O usuário não pode ser nulo");
            }

            usuario.id = Guid.NewGuid().ToString();

            usuario.Validate();
            usuario.Format();

            if (AlreadyExists(usuario.id, usuario.username))
            {
                throw new Exception("Já existe esse Nome de Usuário cadastrado");
            }

            // Criptografa a senha e busca no banco para validar usuário
            string senhaMD5 = CryptographyUtils.ToMd5(usuario.senha);

            usuario.senha = senhaMD5;

            _usuarioRepository.Create(usuario);

            return(UsuarioDto.ConvertToDto(usuario));
        }
        public void ResetPassword(UsuarioDto usuarioDto)
        {
            Usuario usuario = Get(usuarioDto.id);

            if (usuario == null)
            {
                throw new Exception("Usuário não encontrado");
            }

            usuario.senha = CryptographyUtils.ToMd5(usuario.username.ToUpper());

            _usuarioRepository.Update(usuario);
        }
        public UsuarioDto Authenticate(LoginDto obj)
        {
            // Criptografa a senha e busca no banco para validar usuário
            string  senhaMD5 = CryptographyUtils.ToMd5(obj.senha);
            Usuario usuario  = _usuarioRepository.Authenticate(obj.username, senhaMD5);

            if (usuario == null)
            {
                throw new Exception("Usuário/senha inválido(s)");
            }


            // Retorna o UsuárioDTO
            return(UsuarioDto.ConvertToDto(usuario));
        }
        public void UpdatedPassword(Usuario usuarioSenha)
        {
            Usuario usuario = Get(usuarioSenha.id);

            if (usuario == null)
            {
                throw new Exception("Usuário não encontrado");
            }

            if (string.IsNullOrWhiteSpace(usuarioSenha.senha))
            {
                throw new Exception("A senha não pode ser branca ou nula");
            }

            usuario.senha = CryptographyUtils.ToMd5(usuarioSenha.senha);

            _usuarioRepository.Update(usuario);
        }