consultarProcuracao method

Future<ObterProcuracaoResponse> consultarProcuracao({
  1. required String outorgante,
  2. String? outorgado,
  3. String? contratanteNumero,
  4. String? autorPedidoDadosNumero,
})

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);
}