Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }