private T FinalizaComando <T>(string resposta) where T : SatResposta { this.Log().Info($"NumeroSessao: {Sessao} - Resposta: {resposta}"); var resp = (T)Activator.CreateInstance(typeof(T), resposta, Encoding); if (resp.CodigoSEFAZ <= 0 || resp.MensagemSEFAZ.IsEmpty()) { return(resp); } var e = new SatMensagemEventArgs(resp.CodigoSEFAZ, resp.MensagemSEFAZ); OnMensagemSefaz.Raise(this, e); return(resp); }
private T FinalizaComando <T>(string resposta) where T : SatResposta { this.Log().Info($"NumeroSessao: {Sessao} - Resposta: {resposta}"); var resp = (T)Activator.CreateInstance(typeof(T), resposta, Encoding); if (!(resp is MFeSatResposta)) { if (resp.NumeroSessao != Sessao) { this.Log().Error($"Sessao retornada pelo SAT [{resp.NumeroSessao}], diferente da enviada [{Sessao}]."); if (Configuracoes.ValidarNumeroSessaoResposta) { var fsSessaoAVerificar = Sessao; var consultaCount = 0; do { consultaCount++; Guard.Against <ACBrException>(consultaCount > Configuracoes.NumeroTentativasValidarSessao, $"Sessao retornada pelo SAT [{resp.NumeroSessao}], diferente da enviada [{fsSessaoAVerificar}]."); IniciaComando($"ConsultarNumeroSessao({fsSessaoAVerificar})"); var ret = sat.ConsultarNumeroSessao(Sessao, CodigoAtivacao, fsSessaoAVerificar); this.Log().Info($"NumeroSessao: {Sessao} - Resposta: {ret}"); resp = (T)Activator.CreateInstance(typeof(T), ret, Encoding); } while (resp.NumeroSessao != fsSessaoAVerificar); } } } if (resp.CodigoSEFAZ <= 0 || resp.MensagemSEFAZ.IsEmpty()) { return(resp); } var e = new SatMensagemEventArgs(resp.CodigoSEFAZ, resp.MensagemSEFAZ); OnMensagemSefaz.Raise(this, e); AguardandoResposta = false; return(resp); }