/// <summary>
        /// Grava autorização e relaciona as saídas
        /// </summary>
        /// <param name="resultadoProcessamento"></param>
        /// <param name="listaSolicitacaoSaida"></param>
        /// <returns></returns>
        private long InserirAutorizacao(CartaoCreditoAutorizacao autorizacao)
        {
            var repAutorizacao = new RepositorioGenerico <tb_autorizacao_cartao>();
            tb_autorizacao_cartao _autorizacao_cartaoE = new tb_autorizacao_cartao();

            try
            {
                _autorizacao_cartaoE.header              = autorizacao.Header;
                _autorizacao_cartaoE.codIdentificacao    = autorizacao.CodIndentificacao;
                _autorizacao_cartaoE.cupomFiscal         = autorizacao.CupomFiscal;
                _autorizacao_cartaoE.tipoDocumentoFiscal = autorizacao.TipoDocumentoFiscal;
                _autorizacao_cartaoE.valor = autorizacao.Valor;
                _autorizacao_cartaoE.nomeBandeiraCartao = autorizacao.NomeBandeiraCartao;
                _autorizacao_cartaoE.statusTransacao    = autorizacao.StatusTransacao;
                _autorizacao_cartaoE.tipoTransacao      = autorizacao.TipoTransacao;
                _autorizacao_cartaoE.processado         = autorizacao.Processado;
                _autorizacao_cartaoE.tipoParcelamento   = autorizacao.TipoParcelamento;
                if (autorizacao.StatusTransacao.Equals("0"))
                {
                    _autorizacao_cartaoE.autorizacaoTransacao = autorizacao.AutorizacaoTransacao;
                    _autorizacao_cartaoE.dataHoraAutorizacao  = autorizacao.DataHoraAutorizacao;
                    _autorizacao_cartaoE.nsuTransacao         = autorizacao.NsuTransacao;
                    _autorizacao_cartaoE.quantidadeParcelas   = autorizacao.QuantidadeParcelas == 0 ? 1 : autorizacao.QuantidadeParcelas;
                }
                repAutorizacao.Inserir(_autorizacao_cartaoE);
                repAutorizacao.SaveChanges();

                var saceEntities = (SaceEntities)repAutorizacao.ObterContexto();
                var query        = from saida in saceEntities.tb_saida
                                   where saida.pedidoGerado.Equals(autorizacao.CupomFiscal)
                                   select saida;
                List <tb_saida> listaSaidas = query.ToList();
                foreach (tb_saida saidaE in listaSaidas)
                {
                    _autorizacao_cartaoE.tb_saida.Add(saidaE);
                }
                repAutorizacao.SaveChanges();
            }
            catch (Exception e)
            {
                if (e.InnerException is MySqlException)
                {
                    MySqlException exception = (MySqlException)e.InnerException;
                    if (exception.Number != 1062) // quando a autorização já foi inserida na base não precisa enviar erro.
                    {
                        throw new DadosException("Autorização Cartão", e.Message, e);
                    }
                }
            }
            return(_autorizacao_cartaoE.codAutorizacao);
        }
        public Boolean AtualizarRespostaCartoes(string nomeServidor)
        {
            Boolean       atualizou    = false;
            DirectoryInfo PastaRetorno = new DirectoryInfo(Global.PASTA_COMUNICACAO_CARTAO);
            DirectoryInfo PastaBackup  = new DirectoryInfo(Global.PASTA_COMUNICACAO_TEF_BACKUP);

            string nomeComputador = System.Windows.Forms.SystemInformation.ComputerName;

            if (nomeComputador.Equals(nomeServidor) && PastaRetorno.Exists)
            {
                // Busca automaticamente todos os arquivos em todos os subdiretórios
                FileInfo[] Files = PastaRetorno.GetFiles("*.TEF", SearchOption.TopDirectoryOnly);
                if (Files.Length == 0)
                {
                    atualizou = true;
                }
                else
                {
                    foreach (FileInfo file in Files)
                    {
                        try
                        {
                            CartaoCreditoAutorizacao autorizacao = new CartaoCreditoAutorizacao();
                            StreamReader             reader      = new StreamReader(file.FullName);
                            String linha = null;
                            String data  = null;
                            while ((linha = reader.ReadLine()) != null)
                            {
                                if (linha.StartsWith("000-000"))
                                {
                                    autorizacao.Header = linha.Substring(10);
                                }
                                else if (linha.StartsWith("001-000"))
                                {
                                    autorizacao.CodIndentificacao = Int32.Parse(linha.Substring(10));
                                }
                                else if (linha.StartsWith("002-000"))
                                {
                                    autorizacao.CupomFiscal = linha.Substring(10);
                                }
                                else if (linha.StartsWith("003-000"))
                                {
                                    autorizacao.Valor = Decimal.Parse(linha.Substring(10)) / 100;
                                }
                                else if (linha.StartsWith("009-000"))
                                {
                                    autorizacao.StatusTransacao = linha.Substring(10);
                                }
                                else if (linha.StartsWith("011-000"))
                                {
                                    autorizacao.TipoTransacao = int.Parse(linha.Substring(10));
                                }
                                else if (linha.StartsWith("012-000"))
                                {
                                    autorizacao.NsuTransacao = long.Parse(linha.Substring(10));
                                }
                                else if (linha.StartsWith("013-000"))
                                {
                                    autorizacao.AutorizacaoTransacao = linha.Substring(10);
                                }
                                else if (linha.StartsWith("017-000"))
                                {
                                    autorizacao.TipoParcelamento = int.Parse(linha.Substring(10));
                                }
                                else if (linha.StartsWith("018-000"))
                                {
                                    autorizacao.QuantidadeParcelas = int.Parse(linha.Substring(10));
                                }
                                else if (linha.StartsWith("022-000"))
                                {
                                    data = linha.Substring(10);
                                }
                                else if (linha.StartsWith("023-000"))
                                {
                                    autorizacao.DataHoraAutorizacao = DateTime.ParseExact((data + linha.Substring(10)), "ddMMyyyyHHmmss", null);
                                }
                                else if (linha.StartsWith("040-000"))
                                {
                                    autorizacao.NomeBandeiraCartao = linha.Substring(10);
                                }
                            }
                            reader.Close();
                            autorizacao.TipoDocumentoFiscal = Saida.TIPO_DOCUMENTO_ECF;
                            if (autorizacao.Header.Equals("CRT") || autorizacao.Header.Equals("CNC"))
                            {
                                InserirAutorizacao(autorizacao);
                            }
                            if (PastaBackup.Exists)
                            {
                                file.CopyTo(Global.PASTA_COMUNICACAO_FRENTE_LOJA_BACKUP + file.Name, true);
                                file.Delete();
                            }
                        }
                        catch (Exception e)
                        {
                            // Se houver algum impossibilidade de processa a transação ela fica na pasta.
                        }
                    }
                }
            }
            return(atualizou);
        }