Ejemplo n.º 1
0
        public void testar_extrato()
        {
            var conta = new ContaCorrente();

            conta.Credita(1000);
            conta.Numero = 123;

            var extrato = new Extrato(conta);

            extrato.Executa();

            RepositorioTransacaoBancaria.LimparRepositorio();

            RepositorioTransacaoBancaria.Adicionar(extrato);

            Assert.Contains(extrato, RepositorioTransacaoBancaria.Listar());

            Extrato recuperado = RepositorioTransacaoBancaria.Listar().Cast <Extrato>().FirstOrDefault();

            List <Extrato> extratos = RepositorioTransacaoBancaria.Listar()
                                      .Where(t => t.GetType().Name == typeof(Extrato).Name)
                                      .Cast <Extrato>()
                                      .ToList();

            Assert.AreEqual(extrato, recuperado);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Imprimir o extrato de cancelamento do CFe.
        /// </summary>
        /// <param name="cfe">The cfe.</param>
        /// <param name="cFeCanc">The c fe canc.</param>
        public void ImprimirExtratoCancelamento(CFe cfe, CFeCanc cFeCanc)
        {
            Guard.Against <ACBrException>(!Ativo, "Componente não está ativo.");
            Guard.Against <ArgumentNullException>(Extrato == null, "Componente de Impressão não definido !");

            Extrato.ImprimirExtratoCancelamento(cfe, cFeCanc);
        }
Ejemplo n.º 3
0
        public Task Handle(CadastrarExtratoCommand notification, CancellationToken cancellationToken)
        {
            if (!_usuarioQueryRepository.UsuarioExistente(notification.Email))
            {
                NotificarErro(notification.MessageType, $"O usuario {notification.Email} não está cadastrado");
                return(Task.CompletedTask);
            }

            var extrato = new Extrato(notification.Pontos, notification.Email, notification.Estabelecimento, DateTime.Now);

            _extratoCommandRepository.Adicionar(extrato);

            if (!HasNotificationsError())
            {
                _mediator.PublicarEvento(new ExtratoCadastradoEvent(extrato));
            }

            var saldo = AtualizarSaldo(notification.Email, notification.Pontos, notification.MessageType);

            if (!HasNotificationsError())
            {
                _mediator.PublicarEvento(new SaldoAtualizadoEvent(saldo));
            }

            return(Task.CompletedTask);
        }
        public async Task <IActionResult> PostMovimentacao(IFormFile file)
        {
            try
            {
                if (file != null)
                {
                    var filePath = UploadFiles.Upload(file);

                    Importacao importacao = new Importacao();
                    importacao.Id             = Guid.NewGuid();
                    importacao.DataImportacao = DateTime.Now;
                    importacao.NomeArquivo    = filePath;
                    importacao.Movimentacoes  = Extrato.MontaExtrato(await _movimentacaoRepository.GetSaldo(), importacao);

                    _importacaoRepository.Add(importacao);

                    if (await _importacaoRepository.SaveChangesAsync())
                    {
                        return(Ok(await _movimentacaoRepository.Get()));
                    }
                }

                return(BadRequest());
            }
            catch (Exception)
            {
                return(this.StatusCode(StatusCodes.Status500InternalServerError, "Falha no upload do arquivo."));
            }
        }
Ejemplo n.º 5
0
        private void ClassificaItens(IEnumerable <Regra> regras)
        {
            if (!Extrato.Any())
            {
                return;
            }

            var minData = Extrato.Min(p => p.Data);
            var maxData = Extrato.Max(p => p.Data);

            var existing = Balance
                           .Where(bi => bi.Data >= minData && bi.Data <= maxData)
                           .ToList();

            foreach (var regra in regras)
            {
                regra.Initialize();
            }

            foreach (var item in Extrato)
            {
                foreach (var regra in regras)
                {
                    if (regra.MatchAndUpdate(item))
                    {
                        break;
                    }
                }
                item.AfetaSaldo = !item.Historico.Contains("Depósito bloq") && item.AfetaSaldo;
                item.AddToDB    = item.AddToDB && !existing.Any(d => d.Similar(item));
            }
        }
Ejemplo n.º 6
0
        public void Execute(IPluginExecutionContext context)
        {
            try
            {
                DynamicEntity entity = null;
                if (context.PostEntityImages.Properties.Contains("Target") && context.PostEntityImages.Properties["Target"] is DynamicEntity)
                {
                    entity = (DynamicEntity)context.PostEntityImages.Properties["Target"];
                }
                if (entity == null)
                {
                    return;
                }
                if (!entity.Properties.Contains("new_extratoid"))
                {
                    return;
                }

                Guid    extratoId = ((Lookup)entity.Properties["new_extratoid"]).Value;
                Extrato extrato   = new Extrato(DomainService.Organizacao)
                {
                    Id = extratoId
                };
                extrato.AtualizarValor();
                DomainService.RepositoryExtrato.Update(extrato);
            }
            catch (Exception ex) { LogService.GravaLog(ex, TipoDeLog.PluginNew_lancamento_avulso, "PostUpdate"); }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Imprime o extrato resumido do CFe.
        /// </summary>
        /// <param name="cfe">The cfe.</param>
        public void ImprimirExtratoResumido(CFe cfe)
        {
            Guard.Against <ACBrException>(!Ativo, "Componente não está ativo.");
            Guard.Against <ArgumentNullException>(Extrato.IsNull(), "Componente de Impressão não definido !");

            Extrato.ImprimirExtratoResumido(cfe);
        }
Ejemplo n.º 8
0
        public static void InserirSaldo(decimal valor, string origem, string destino, int natureza, int tipo, string descricao, LoginViewModel usuario, string emailEmpresa)
        {
            IList <Extrato> extratos = new List <Extrato>();

            var extrato = new Extrato(valor, natureza, tipo, origem, destino, null, Status.Aprovado)
            {
                Ativo          = true,
                DataCriacao    = DateTime.UtcNow,
                DataEdicao     = DateTime.UtcNow,
                Descricao      = descricao,
                IdCliente      = usuario.idCliente,
                Nome           = "Saldo",
                Status         = 1,
                UsuarioCriacao = usuario.IdUsuario,
                UsuarioEdicao  = usuario.IdUsuario,
                TipoOrigem     = 2,
                TipoDestino    = 3,
                EmailEmpresa   = emailEmpresa,
            };

            extratos.Add(extrato);

            var keyUrl = ConfigurationManager.AppSettings["UrlAPI"].ToString();
            var url    = keyUrl + "/Seguranca/WpFinanceiro/InserirCredito/" + usuario.idCliente + "/" + usuario.IdUsuario;

            var envio = new
            {
                extratos,
            };

            var helper = new ServiceHelper();
            var result = helper.Post <object>(url, envio);
        }
Ejemplo n.º 9
0
        private void LerMeses()
        {
            for (int i = 0; i < 3; i++)
            {
                var extrato = new Extrato()
                {
                    CartaoCredito = true,
                };

                var elementos = driver.FindElements(By.XPath("//a[contains(@onclick, '_fatura')]"));
                if (i >= elementos.Count)
                {
                    return;
                }
                Actions builder  = new Actions(driver);
                var     elemento = elementos[i];
                var     texto    = elemento.Text;
                builder.MoveToElement(elemento).Click().Perform();

                LerInfo(extrato, texto, i);
                LerMovimentacoes(extrato);

                if (extrato.Transacoes.Any())
                {
                    _extratos.Add(extrato);
                }
            }
        }
Ejemplo n.º 10
0
        private void LerTabelaCartao(string nome)
        {
            var cotacaoDolar    = BuscaCotacaoDolar();
            var trs             = driver.FindElements(By.XPath("//div[@class = 'tabla_datos']/table/tbody/tr[not(contains(@class, 'cabecera2'))]"));
            var labelVencimento = driver.FindElement(By.XPath("//span[contains(@class, 'left') and text() = 'Data de vencimento:']"));
            var vencimento      = labelVencimento.FindElement(By.XPath("../span[contains(@class, 'right')]"));

            if (!DateTime.TryParse(vencimento.Text.Trim(), out var dataVencimento))
            {
                dataVencimento = DateTime.MinValue;
            }
            var extrato = new Extrato
            {
                CartaoCredito = true,
                Descricao     = $"Final {nome}",
                Referencia    = dataVencimento
            };

            foreach (var tr in trs)
            {
                var colunas = tr.FindElements(By.TagName("td"));

                if (colunas.Count < 4)
                {
                    continue;
                }

                var transacao = new Transacao
                {
                    Descricao = colunas[1].Text.Trim()
                };

                if (!DateTime.TryParse(colunas[0].Text.Trim(), out var data))
                {
                    continue;
                }
                transacao.Data = data;

                var strValor      = colunas[3].Text.Trim();
                var multiplicador = 1.0;
                if (string.IsNullOrWhiteSpace(strValor))
                {
                    multiplicador = cotacaoDolar;
                    strValor      = colunas[2].Text.Trim();
                }

                if (!Double.TryParse(strValor, out var valor))
                {
                    continue;
                }
                transacao.Valor = valor * multiplicador;


                extrato.AdicionaTransacao(transacao);
            }
            if (extrato.Transacoes.Any())
            {
                _extratos.Add(extrato);
            }
        }
Ejemplo n.º 11
0
        public void Saldo_Suficiente_Para_Retirada_Pagamento()
        {
            var extrato   = new Extrato();
            var resultado = extrato.SaldoInsuficiente(10, 5);

            Assert.False(resultado);
        }
Ejemplo n.º 12
0
        private void MnuExtrato_Click(object sender, EventArgs e)
        {
            bool bAllow = gtiCore.GetBinaryAccess((int)TAcesso.ExtratoContribuinte);

            if (bAllow)
            {
                gtiCore.Ocupado(this);
                var formToShow = Application.OpenForms.Cast <Form>().FirstOrDefault(c => c is Forms.Extrato);
                if (formToShow != null)
                {
                    formToShow.Show();
                }
                else
                {
                    Extrato f1 = new Extrato
                    {
                        Tag       = "Menu",
                        MdiParent = this
                    };
                    f1.Show();
                }
                gtiCore.Liberado(this);
            }
            else
            {
                MessageBox.Show("Acesso não permitido.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Ejemplo n.º 13
0
    private static void ReadTable(IWebDriver driver, string conta, ref List <Extrato> extratos)
    {
        try
        {
            var cultureBR = new CultureInfo("pt-BR");
            IList <IWebElement> tabelas = driver.FindElements(By.XPath("//*[@id='TRNcontainer01']/table"));

            foreach (var tabela in tabelas)
            {
                foreach (var tr in tabela.FindElements(By.TagName("tr")))
                {
                    IList <IWebElement> tds = tr.FindElements(By.TagName("td"));

                    if (tds.Count > 0 && tr.FindElement(By.TagName("td")).Text.Contains("/"))
                    {
                        var extrato = new Extrato();
                        extrato.conta = conta;

                        // Bug virada do ano
                        var ano = DateTime.Now.Year;

                        int  n;
                        bool isNumeric = int.TryParse(tds[0].Text.Substring(3), out n);

                        if (isNumeric)
                        {
                            var mes = Convert.ToInt32(tds[0].Text.Substring(3));

                            if (mes > DateTime.Now.Month) // virou o ano
                            {
                                ano -= 1;
                            }

                            extrato.data      = DateTime.ParseExact(tds[0].Text + "/" + ano.ToString(), "dd/MM/yyyy", CultureInfo.InvariantCulture);
                            extrato.descricao = ExtratoHelper.GetDescricao(tds[1].Text);

                            if (extrato.descricao != null)
                            {
                                if (tds[2].Text.Contains("-"))
                                {
                                    extrato.credito = (decimal?)decimal.Parse(tds[2].Text.Replace("-", ""), NumberStyles.Currency, cultureBR);
                                }
                                else
                                {
                                    extrato.debito = -1 * (decimal?)decimal.Parse(tds[2].Text.Replace("-", ""), NumberStyles.Currency, cultureBR);
                                }

                                ExtratoHelper.AddExtrato(ref extratos, extrato);
                            }
                        }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
Ejemplo n.º 14
0
 public static void AddExtrato(ref List <Extrato> extratos, Extrato extrato)
 {
     if (!extrato.credito.HasValue && !extrato.debito.HasValue && !extrato.saldo.HasValue)
     {
         return;
     }
     extratos.Add(extrato);
 }
Ejemplo n.º 15
0
        public Extrato GerarExtrato(long contaId)
        {
            Conta contaBuscadaDoBanco = _contaRepositorio.Buscar(contaId);

            Extrato extrato = contaBuscadaDoBanco.GerarExtrato();

            return(extrato);
        }
Ejemplo n.º 16
0
        private static Extrato CriarExtrato()
        {
            var participanteId = Guid.NewGuid();
            var extratoId      = Guid.NewGuid();
            var extrato        = new Extrato(extratoId, participanteId);

            return(extrato);
        }
Ejemplo n.º 17
0
        public static void LancaTransacoes(OportunidadeViewModel vaga, LoginViewModel usuario)
        {
            IList <Extrato> extratos = new List <Extrato>();

            for (int i = 0; i < vaga.Quantidade; i++)
            {
                var valor1 = (vaga.Valor) * -1;

                var extrato1 = new Extrato(valor1, 2, 1, vaga.IdEmpresa.ToString(),
                                           vaga.IdEmpresa.ToString(), vaga.ID, Status.Aprovado)
                {
                    Ativo          = true,
                    DataCriacao    = DateTime.UtcNow,
                    DataEdicao     = DateTime.UtcNow,
                    Descricao      = "Debitando valor da vaga.",
                    IdCliente      = usuario.idCliente,
                    Nome           = "Débito",
                    Status         = 1,
                    UsuarioCriacao = usuario.IdUsuario,
                    UsuarioEdicao  = usuario.IdUsuario,
                    TipoOrigem     = 3,
                    TipoDestino    = 3,
                };

                var valor2 = vaga.Valor;

                var extrato2 = new Extrato(valor2, 2, 1, vaga.IdEmpresa.ToString(),
                                           "52", vaga.ID, Status.Bloqueado)
                {
                    Ativo          = true,
                    DataCriacao    = DateTime.UtcNow,
                    DataEdicao     = DateTime.UtcNow,
                    Descricao      = "Disponibilizando valor da vaga.",
                    IdCliente      = usuario.idCliente,
                    Nome           = "Pagamento",
                    Status         = 1,
                    UsuarioCriacao = usuario.IdUsuario,
                    UsuarioEdicao  = usuario.IdUsuario,
                    TipoOrigem     = 3,
                    TipoDestino    = 2,
                };

                extratos.Add(extrato1);
                extratos.Add(extrato2);
            }

            var keyUrl = ConfigurationManager.AppSettings["UrlAPI"].ToString();
            var url    = keyUrl + "/Seguranca/WpFinanceiro/AlocarCredito/" + usuario.idCliente + "/" + usuario.IdUsuario;

            var envio = new
            {
                extratos,
            };

            var helper = new ServiceHelper();
            var result = helper.Post <object>(url, envio);
        }
Ejemplo n.º 18
0
 public void Post([FromBody] Extrato extrato)
 {
     _extratoRepositorio.Adicionar(new Extrato()
     {
         Email    = extrato.Email,
         CompraId = extrato.CompraId,
         Pontos   = extrato.Pontos
     });
 }
Ejemplo n.º 19
0
 public void ExtratoParaBalance()
 {
     foreach (var bal in Extrato.Where(i => i.AddToDB)
              .OrderBy(i => i.Data).ThenBy(i => i.Valor))
     {
         Balance.Add(bal);
     }
     Extrato.Clear();
 }
Ejemplo n.º 20
0
        private Extrato CriaRetorno(string cssPath, bool tipoCartao, int colData, int colDescricao, int colValor)
        {
            var trs     = driver.FindElements(By.CssSelector(cssPath));
            var retorno = new Extrato {
                CartaoCredito = tipoCartao
            };

            AdicionaItens(retorno, trs, colData, colDescricao, colValor);

            return(retorno);
        }
Ejemplo n.º 21
0
        public List <T> ListarPor(Extrato extrato, Domain.Model.Conta assistenciaTecnica = null)
        {
            var query = GetQueryExpression <T>(true);

            query.Criteria.Conditions.Add(new ConditionExpression("new_extrato_pagamentoid", ConditionOperator.Equal, extrato.Id));
            if (assistenciaTecnica != null)
            {
                query.Criteria.Conditions.Add(new ConditionExpression("new_autorizadaid", ConditionOperator.Equal, assistenciaTecnica.Id));
            }
            return((List <T>) this.RetrieveMultiple(query).List);
        }
Ejemplo n.º 22
0
 public async Task Adicionar(Extrato extrato)
 {
     try
     {
         await _context.Extratos.InsertOneAsync(extrato);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
        public void Conta_dominio_GerarExtrato_deve_passar()
        {
            var valorEsperado = 0;

            _conta = ObjectMother.ObtemContaValida();

            var result = Extrato.GerarExtrato(_conta);

            result.Should().NotBeNull();
            result.Limite.Should().BeGreaterThan(valorEsperado);
        }
Ejemplo n.º 24
0
        private static void BuscaSaldo(Extrato extrato)
        {
            var tr = extrato.Transacoes.FirstOrDefault();

            if (tr == null)
            {
                return;
            }

            extrato.SaldoAnterior = tr.Saldo - tr.Valor;
        }
Ejemplo n.º 25
0
        public Extrato GerarExtrato(int id)
        {
            if (id < 1)
            {
                throw new NaoEncontradoException();
            }

            Conta conta = _repositorioConta.PegarPorId(id) ?? throw new NaoEncontradoException();

            return(Extrato.GerarExtrato(conta));
        }
Ejemplo n.º 26
0
        public static Extrato ObterExtratoValido()
        {
            Extrato extrato = new Extrato();

            extrato.DataEmissao = DateTime.Now;
            extrato.Limite      = 500;
            extrato.Saldo       = 100;
            extrato.NumeroConta = "12345";
            extrato.NomeCliente = "cliente";

            return(extrato);
        }
Ejemplo n.º 27
0
        public void CriarExtrato(Guid extratoId, Guid participanteId)
        {
            if (extratoRepository.ExisteExtratoParticipante(participanteId))
            {
                throw new DomainException("O participante já possui extrato.");
            }

            var extrato = new Extrato(extratoId, participanteId);


            eventStoreService.SaveAggregate(extrato);
        }
Ejemplo n.º 28
0
        public void Imprimir_Extrato_Conta_Inativa()
        {
            ContaCorrente conta = new ContaCorrente();
            RepositorioTransacaoBancaria.Adicionar(new Deposito(conta, 1000));
            RepositorioTransacaoBancaria.Adicionar(new Saque(conta, 200));
            ServicoConta.Bloquear(conta);

            Extrato extrato = new Extrato(conta, DateTime.Now.AddDays(-1), DateTime.Now);
            Assert.Throws<InvalidOperationException>(() => extrato.Executa());

            Assert.IsNotNull(extrato.Comprovante.Descricao);
        }
Ejemplo n.º 29
0
        static Transacao ObterInformacaoTransacao(StreamReader streamReader, Extrato extrato)
        {
            Transacao transacao = new Transacao();

            transacao.Status = new Status();

            extrato.InstituicaoFinanceira.Conta = new InstituicaoFinanceiraConta();

            var linha = streamReader.ReadLine().Trim();

            while (!FimInformacaoTransacao(linha))
            {
                switch (ObterDescricaoItemExtrato(linha))
                {
                case ("TRNUID"):
                    transacao.Codigo = ObterNumeroInteiroLinha(linha, "<TRNUID>", "</TRNUID>");
                    break;

                case ("CODE"):
                    transacao.Status.Codigo = ObterNumeroInteiroLinha(linha, "<CODE>", "</CODE>");
                    break;

                case ("SEVERITY"):
                    transacao.Status.Categoria = ObterTextoLinha(linha, "<SEVERITY>", "</SEVERITY>");
                    break;

                case ("CURDEF"):
                    transacao.Moeda = ObterTextoLinha(linha, "<CURDEF>", "</CURDEF>");
                    break;

                case ("ACCTID"):
                    extrato.InstituicaoFinanceira.Conta.Conta = ObterTextoLinha(linha, "<ACCTID>", "</ACCTID>");
                    break;

                case ("ACCTTYPE"):
                    extrato.InstituicaoFinanceira.Conta.Tipo = ObterTextoLinha(linha, "<ACCTTYPE>", "</ACCTTYPE>");
                    break;

                case ("DTSTART"):
                    transacao.DataInicial = ObterDataHoraLinha(linha, "<DTSTART>", "</DTSTART>");
                    break;

                case ("DTEND"):
                    transacao.DataFinal = ObterDataHoraLinha(linha, "<DTEND>", "</DTEND>");
                    break;
                }

                linha = streamReader.ReadLine().Trim();
            }

            return(transacao);
        }
Ejemplo n.º 30
0
        public void LimparCampoExtratoLogisticaReversa(Extrato extrato)
        {
            var queryHelper = GetQueryExpression <T>(true);

            queryHelper.Criteria.Conditions.Add(new ConditionExpression("new_extrato_logistica_reversaid", ConditionOperator.Equal, extrato.Id));
            var bec = base.Provider.RetrieveMultiple(queryHelper);

            foreach (Entity item in bec.Entities)
            {
                item["new_extrato_logistica_reversaid"] = null;
                base.Provider.Update(item);
            }
        }
Ejemplo n.º 31
0
        public void Imprimir_Extrato()
        {
            ContaCorrente conta = new ContaCorrente();

            RepositorioTransacaoBancaria.Adicionar(new Deposito(conta, 1000));
            RepositorioTransacaoBancaria.Adicionar(new Saque(conta, 200));

            Extrato extrato = new Extrato(conta, DateTime.Now.AddDays(-1), DateTime.Now);

            extrato.Executa();

            Assert.AreEqual(2, extrato.TransacoesBancarias.Count());
        }
Ejemplo n.º 32
0
        public void Imprimir_Extrato()
        {
            ContaCorrente conta = new ContaCorrente();

            RepositorioTransacaoBancaria.Adicionar(new Deposito(conta, 1000));
            RepositorioTransacaoBancaria.Adicionar(new Saque(conta, 200));

            Extrato extrato = new Extrato(conta, DateTime.Now.AddDays(-1), DateTime.Now);

            extrato.Executa();

            Assert.AreEqual(2, extrato.TransacoesBancarias.Count());
        }
Ejemplo n.º 33
0
    public List<Extrato> ListarExtrato(string mes, string ano, Int32 conta)
    {
        query = @"SELECT    tb_transacao.trans_id,
                            tb_transacao.trans_dia,
                            tb_transacao.trans_mes,
                            tb_transacao.trans_ano,
                            tb_tipo.tip_nome,
                            tb_categoria.cat_nome,
                            tb_transacao.trans_descricao,
                            tb_transacao.trans_valor,
                            tb_conta.cont_nome,
                            tb_conta.cont_saldo
                  FROM      tb_conta INNER JOIN
                            tb_transacao ON tb_conta.cont_id = tb_transacao.fk_cont_id INNER JOIN
                            tb_categoria ON tb_transacao.fk_cat_id = tb_categoria.cat_id INNER JOIN
                            tb_tipo ON tb_transacao.fk_tip_id = tb_tipo.tip_id
                  WHERE     tb_transacao.fk_tip_id <> 4
                  AND       tb_transacao.trans_mes = @mes
                  AND       tb_transacao.trans_ano = @ano
                  AND       tb_transacao.fk_cont_id = @conta
                  ORDER BY  tb_transacao.trans_dia ASC";
        try
        {
            conn.Open();

            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = query;

            cmd.Parameters.AddWithValue("@mes", mes);
            cmd.Parameters.AddWithValue("@ano", ano);
            cmd.Parameters.AddWithValue("@conta", conta);

            SqlDataReader dr = cmd.ExecuteReader();

            List<Extrato> extratos = new List<Extrato>();

            while (dr.Read())
            {
                Extrato extrato = new Extrato();
                extrato.Id = Convert.ToInt32(dr[0]);
                extrato.Data = dr[1].ToString() + "/" + dr[2].ToString() + "/" + dr[3].ToString();
                extrato.Tipo = dr[4].ToString();
                extrato.Categoria = dr[5].ToString();
                extrato.Descricao = dr[6].ToString();
                extrato.Valor = "R$ " + dr[7].ToString().Replace(".", ",");

                extratos.Add(extrato);
            }

            return extratos;
        }
        catch
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }