/// <summary> /// Executar /// </summary> /// <returns></returns> public IRetCancelar Executar() { if (_servicoBase == null) { throw new InvalidOperationException("Uma instância do serviço base é requerido"); } if (_emisorEmissorServicoConfig == null) { throw new InvalidOperationException("Uma instância de configuração do emissor é requerido"); } _urlServico = ObterUrlServico(); _urlWsdlServico = ObterWsdlServico(); var d1 = ObterDados(); //Assinar d1.evento.ForEach(Assinar); if (_emisorEmissorServicoConfig.ValidarSchema) { ValidarSchema(d1); } SalvarPedido(d1); var soapXml = ObterCorpoMensagemSoap(_urlWsdlServico, d1); var ws = _servicoBase.ObterRequisicaoSoap(_urlServico, soapXml); var resposta = _servicoBase.ObterResposta(ws); //Obter Node var node = Utils.ObterNodeDeStringXml("retEnvEvento", resposta); var retorno1 = Utils.ConverterXMLParaClasse <retEnvEvento>(node); var xmlEnviado = Utils.ObterStringXML(d1); _processadas++; if (retorno1.retEvento.Any(n => n.infEvento == null)) { _rejeitadas++; } if (retorno1.retEvento.Any(n => n.infEvento != null)) { if (StatusSefaz.ListarCodigo.All(n => retorno1.retEvento.All(k => k.infEvento.cStat != n.Key))) { _rejeitadas++; } } var retorno2 = new RetCancelar(retorno1, node, _processadas, _rejeitadas, xmlEnviado); //Salvar arquivo SalvarResposta(retorno2); return(retorno2); }
/// <summary> /// Salvar arquivo Xml /// </summary> private void SalvarResposta(RetCancelar entity) { if (!_emisorEmissorServicoConfig.SalvarArquivoRetorno) { return; } //SalvarArquivo if (string.IsNullOrWhiteSpace(_emisorEmissorServicoConfig.DiretorioArquivoRetornoXml)) { throw new InvalidOperationException("Informe um diretório válido."); } var nomeArq = $"{_idlote}--eve.xml"; var caminho = Path.Combine(_emisorEmissorServicoConfig.DiretorioArquivoRetornoXml, "Status", "Recebidos"); Utils.EscreverArquivo(caminho, nomeArq, entity.XmlRecebido); }