consultarProcuracao method
Consulta procurações eletrônicas entre um outorgante e um procurador.
Este método detecta automaticamente se os documentos informados são CPF ou CNPJ.
outorgante - CPF ou CNPJ do outorgante (quem passou a procuração)
outorgado - (Opcional) CPF ou CNPJ do procurador. Se não informado, utiliza o documento do usuário autenticado.
contratanteNumero - (Opcional) CNPJ do contratante. Se não informado, usa o da autenticação.
autorPedidoDadosNumero - (Opcional) CPF/CNPJ do autor. Se não informado, usa o da autenticação.
Implementation
Future<ObterProcuracaoResponse> consultarProcuracao({
required String outorgante,
String? outorgado,
String? contratanteNumero,
String? autorPedidoDadosNumero,
}) async {
// Tenta obter o outorgado do parâmetro ou da autenticação
final outorgadoFinal = outorgado ?? _apiClient.autorPedidoDadosNumero;
if (outorgadoFinal == null || outorgadoFinal.isEmpty) {
throw ArgumentError(
'CPF/CNPJ do outorgado (procurador) não informado e não foi possível obter da autenticação. '
'Certifique-se de que o cliente esteja autenticado ou informe o parâmetro "outorgado".',
);
}
// Cria o request que já detecta automaticamente os tipos de documento
final requestData = ObterProcuracaoRequest.fromDocuments(
outorgante: outorgante,
outorgado: outorgadoFinal,
);
// Valida dados antes de enviar
final erros = requestData.validate();
if (erros.isNotEmpty) {
// Em produção, você pode querer lançar uma exceção ou retornar erro
// throw ArgumentError('Dados inválidos: ${erros.join(', ')}');
}
final request = BaseRequest(
contribuinteNumero:
requestData.outorgante, // O contribuinte é o outorgante
pedidoDados: PedidoDados(
idSistema: ProcuracoesConstants.idSistema,
idServico: ProcuracoesConstants.idServico,
versaoSistema: ProcuracoesConstants.versaoSistema,
dados: requestData.toJsonString(),
),
);
final response = await _apiClient.post(
'/Consultar',
request,
contratanteNumero: contratanteNumero,
autorPedidoDadosNumero: autorPedidoDadosNumero,
);
return ObterProcuracaoResponse.fromJson(response);
}