private async Task <List <string> > TransmitirConsultarLoteContingenciaAsync(ConfiguracaoEntity config, List <string> notasNFCe, Modelo modelo)
        {
            var retornoTransmissao = TransmitirLoteNotasFiscaisContingencia(notasNFCe, modelo);

            if (retornoTransmissao.TipoMensagem == TipoMensagem.ErroValidacao)
            {
                return(new List <string>()
                {
                    retornoTransmissao.Mensagem
                });
            }
            else if (retornoTransmissao.TipoMensagem == TipoMensagem.ServicoIndisponivel)
            {
                return(new List <string>()
                {
                    mensagemErro
                });
            }

            int           tempoEspera = Int32.Parse(retornoTransmissao.RetEnviNFeInfRec.tMed) * 1000;
            List <string> erros       = new List <string>();

            Thread.Sleep(tempoEspera);
            var resultadoConsulta = ConsultarReciboLoteContingencia(retornoTransmissao.RetEnviNFeInfRec.nRec, modelo);

            if (resultadoConsulta == null)
            {
                return(new List <string>()
                {
                    mensagemErro
                });
            }

            foreach (var resultado in resultadoConsulta)
            {
                var ambiente = config.IsProducao ? Ambiente.Producao : Ambiente.Homologacao;
                var nota     = new NotaFiscalService().GetNotaFiscalByChave(resultado.Chave);

                if (resultado.CodigoStatus == "100")
                {
                    nota.DataAutorizacao = DateTime.ParseExact(resultado.DataAutorizacao, "yyyy-MM-ddTHH:mm:sszzz", CultureInfo.InvariantCulture);
                    nota.Protocolo       = resultado.Protocolo;
                    nota.Status          = (int)NFe.Repository.Status.ENVIADA;

                    string xml = await nota.LoadXmlAsync();

                    xml = xml.Replace("<protNFe />", resultado.Xml);

                    var notaFiscalService = new NotaFiscalService();

                    await notaFiscalService.SalvarAsync(nota, xml);
                }
                else
                {
                    if (resultado.Motivo.Contains("Duplicidade"))
                    {
                        X509Certificate2 certificado;
                        var certificadoEntity = new CertificadoRepository(new NFeContext()).GetCertificado();
                        var emitente          = EmissorService.GetEmissor();

                        if (!string.IsNullOrWhiteSpace(certificadoEntity.Caminho))
                        {
                            certificado = CertificateManager.GetCertificateByPath(certificadoEntity.Caminho,
                                                                                  RijndaelManagedEncryption.DecryptRijndael(certificadoEntity.Senha));
                        }
                        else
                        {
                            certificado = CertificateManager.GetCertificateBySerialNumber(certificadoEntity.NumeroSerial, false);
                        }

                        var retornoConsulta = NFeConsulta.ConsultarNotaFiscal
                                              (
                            nota.Chave,
                            emitente.Endereco.CodigoUF,
                            certificado,
                            config.IsProducao ? Ambiente.Producao : Ambiente.Homologacao,
                            nota.Modelo.Equals("65") ? Modelo.Modelo65 : Modelo.Modelo55
                                              );

                        if (retornoConsulta.IsEnviada)
                        {
                            var protSerialized = XmlUtil.Serialize(retornoConsulta.Protocolo, string.Empty)
                                                 .Replace("<?xml version=\"1.0\" encoding=\"utf-8\"?>", string.Empty)
                                                 .Replace("TProtNFe", "protNFe");

                            protSerialized = Regex.Replace(protSerialized, "<infProt (.*?)>", "<infProt>");

                            nota.DataAutorizacao = retornoConsulta.DhAutorizacao;
                            nota.Protocolo       = retornoConsulta.Protocolo.infProt.nProt;
                            nota.Status          = (int)NFe.Repository.Status.ENVIADA;

                            string xml = await nota.LoadXmlAsync();

                            xml = xml.Replace("<protNFe />", protSerialized);

                            var notaFiscalService = new NotaFiscalService();

                            await notaFiscalService.SalvarAsync(nota, xml);
                        }
                        else
                        {
                            erros.Add(string.Format("Modelo: {0} Nota: {1} Série: {2} \nMotivo: {3}", nota.Modelo, nota.Numero, nota.Serie, resultado.Motivo)); //O que fazer com essas mensagens de erro?
                        }
                    }
                    else
                    {
                        erros.Add(string.Format("Modelo: {0} Nota: {1} Série: {2} \nMotivo: {3}", nota.Modelo, nota.Numero, nota.Serie, resultado.Motivo)); //O que fazer com essas mensagens de erro?
                    }
                }
            }

            return(erros);
        }