public async Task <IActionResult> ObterExtrato([FromQuery] int ultimosDias, int pagina, int tamanhoPagina)
        {
            SegurancaClienteHelper sec = new SegurancaClienteHelper();

            if (!await sec.Autorizado(Request))
            {
                return(Unauthorized());
            }

            ExtratoPaginado paginado = null;

            try
            {
                paginado = _helper.ObterExtrato(sec.NumeroConta, ultimosDias, pagina, tamanhoPagina);

                if (paginado.Extratos.Count > 0)
                {
                    return(Ok(paginado));
                }
                else
                {
                    return(NotFound(paginado));
                }
            }
            catch (Exception)
            {
                return(StatusCode(Rotas.HttpStatusCodeIntervalError, "Desculpe! :o( Não conseguimos processar sua transação."));
            }
        }
示例#2
0
        public async Task <HttpStatusCode> AcionarListagemMovimentacoes(string numeroConta, int pagina, int tamanhoPagina)
        {
            try
            {
                string url = Rotas._ListagemMovimentacoesConta.
                             Replace("{0}", numeroConta.Trim()).
                             Replace("{1}", pagina.ToString().Trim()).
                             Replace("{2}", tamanhoPagina.ToString().Trim());

                var response = await _client.GetAsync(url);

                if (response.IsSuccessStatusCode)
                {
                    string aux = response.Content.ReadAsStringAsync().Result;
                    _ExtratoPaginado = ExtratoPaginado.FromJson(aux);
                }
                return(response.StatusCode);
            }
            catch (HttpRequestException e)
            {
                throw e;
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        public IActionResult ObterMovimentacao(string numeroConta, [FromQuery] int pagina, int tamanhoPagina)
        {
            if (!SegurancaGerencialHelper.Autorizado(Request))
            {
                return(Unauthorized());
            }

            ExtratoPaginado paginado = null;

            try
            {
                paginado = _helper.ObterMovimentacoes(numeroConta, pagina, tamanhoPagina);

                if (paginado.Extratos.Count > 0)
                {
                    return(Ok(paginado));
                }
                else
                {
                    return(NotFound(paginado));
                }
            }
            catch (Exception)
            {
                return(StatusCode(Rotas.HttpStatusCodeIntervalError));
            }
        }
        public ExtratoPaginado RetornaExtrato(string contaId, TransferenciaFiltro filtro,
                                              TransferenciaOrdem ordem, TransferenciaPaginacao paginacao)
        {
            var lista = _repoTransf.GetTransacoesPorContaId(contaId)
                        .AplicaFiltro(filtro)
                        .AplicaOrdenacao(ordem)
                        .Select(l => l.ToApi());

            return(ExtratoPaginado.From(paginacao, lista, contaId));
        }
        public ExtratoPaginado ObterExtrato(ExtratoFiltro filtro)
        {
            ExtratoPaginado ret    = new ExtratoPaginado(filtro);
            List <Extrato>  result = new List <Extrato>();

            string sql = "select ExtratoId Id, ContaNumero NumeroConta, ExtratoDataOperacao DataOperacao, " +
                         "       ExtratoValorOperacao ValorOperacao, ExtratoTipoOperacao TipoOperacao, ExtratoTransacao Transacao" +
                         "  from Extrato " +
                         " where ContaNumero = @NumeroConta " +
                         "   and ExtratoDataOperacao between @Passado and @Agora" +
                         " limit @TamanhoPagina offset @RegistroPontoPartida";

            using (SQLiteConnection connection = new SQLiteConnection(_conn))
            {
                string vNumeroConta          = filtro.NumeroConta;
                long   vPassado              = long.Parse(System.DateTime.Now.AddDays(filtro.UltimosDias * -1).ToString("yyyyMMdd") + "000000");
                long   vAgora                = long.Parse(System.DateTime.Now.ToString("yyyyMMddHHmmss"));
                int    vRegistroPontoPartida = (filtro.TamanhoPagina * filtro.Pagina) - filtro.TamanhoPagina;
                int    vTamanhoPagina        = filtro.TamanhoPagina + 1;

                result = connection.Query <Extrato>(@sql, new
                {
                    NumeroConta          = vNumeroConta,
                    Passado              = vPassado,
                    Agora                = vAgora,
                    RegistroPontoPartida = vRegistroPontoPartida,
                    TamanhoPagina        = vTamanhoPagina
                }).AsList <Extrato>();
            }

            if (result != null)
            {
                ret.ProximaPagina  = "0";
                ret.PaginaAnterior = (filtro.Pagina > 1 ? (filtro.Pagina - 1).ToString() : "0");

                if (result.Count > filtro.TamanhoPagina)
                {
                    ret.ProximaPagina = (filtro.Pagina + 1).ToString();
                    result.RemoveAt(result.Count - 1);
                }

                ret.Extratos.AddRange(result);
            }

            return(ret);
        }