public UsuarioModel Cadastrar(CadastrarUsuarioRequest request)
        {
            request.Validar();

            var senha         = CriptografiaSha512.GerarHash(request.Senha);
            var perfilUsuario = _repositorioUsuario.ObterPerfil(request.Tipo);
            var usuario       = request.ParaEntidade(senha, perfilUsuario);

            new ValidacaoCadastroUsuario(_repositorioUsuario, _repositorioArquivo).Validar(usuario);

            _unitOfWork.IniciarTransacao();

            _repositorioEndereco.Inserir(usuario.Endereco);
            _repositorioUsuario.Inserir(usuario);
            _repositorioUsuarioCausa.Inserir(usuario);

            _unitOfWork.ExecutarCommit();

            return(new UsuarioModel(usuario));
        }