public async Task <ISaida> ProcurarLancamentos(ProcurarLancamentoEntrada procurarEntrada)
 {
     // Verifica se os parĂ¢metros para a procura foram informadas corretamente
     return(procurarEntrada.Invalido
         ? new Saida(false, procurarEntrada.Mensagens, null)
         : await _lancamentoRepositorio.Procurar(procurarEntrada));
 }
Example #2
0
        public async Task <ProcurarSaida> Procurar(ProcurarLancamentoEntrada procurarEntrada)
        {
            var query = _efContext.Lancamentos
                        .Include(x => x.Conta)
                        .Include(x => x.Categoria)
                        .ThenInclude(x => x.CategoriaPai)
                        .Include(x => x.Pessoa)
                        .Include(x => x.Anexos)
                        .AsNoTracking()
                        .AsQueryable();

            if (procurarEntrada.IdConta.HasValue)
            {
                query = query.Where(x => x.IdConta == procurarEntrada.IdConta.Value);
            }

            if (procurarEntrada.IdCategoria.HasValue)
            {
                query = query.Where(x => x.IdCategoria == procurarEntrada.IdCategoria.Value);
            }

            if (procurarEntrada.IdPessoa.HasValue)
            {
                query = query.Where(x => x.IdCategoria == procurarEntrada.IdPessoa.Value);
            }

            if (procurarEntrada.DataInicio.HasValue && procurarEntrada.DataFim.HasValue)
            {
                query = query.Where(x => x.Data.Date >= procurarEntrada.DataInicio.Value.Date && x.Data.Date <= procurarEntrada.DataFim.Value.Date);
            }

            query = query.OrderByProperty(procurarEntrada.OrdenarPor, procurarEntrada.OrdenarSentido);

            if (procurarEntrada.Paginar())
            {
                var pagedList = await query.ToPagedListAsync(procurarEntrada.PaginaIndex.Value, procurarEntrada.PaginaTamanho.Value);

                return(new ProcurarSaida(
                           pagedList.ToList().Select(x => new LancamentoSaida(x)),
                           procurarEntrada.OrdenarPor,
                           procurarEntrada.OrdenarSentido,
                           pagedList.TotalItemCount,
                           pagedList.PageCount,
                           procurarEntrada.PaginaIndex,
                           procurarEntrada.PaginaTamanho));
            }
            else
            {
                var totalRegistros = await query.CountAsync();

                return(new ProcurarSaida(
                           (await query.ToListAsync()).Select(x => new LancamentoSaida(x)),
                           procurarEntrada.OrdenarPor,
                           procurarEntrada.OrdenarSentido,
                           totalRegistros));
            }
        }
Example #3
0
        public async Task <IActionResult> Procurar([FromBody, SwaggerParameter("ParĂ¢metros utilizados para realizar a procura.", Required = true)] ProcurarLancamentoViewModel model)
        {
            var entrada = new ProcurarLancamentoEntrada(
                base.ObterIdUsuarioClaim(),
                model.IdConta,
                model.IdCategoria,
                model.IdPessoa,
                model.DataInicio,
                model.DataFim,
                model.OrdenarPor,
                model.OrdenarSentido,
                model.PaginaIndex,
                model.PaginaTamanho
                );

            return(new ApiResult(await _lancamentoServico.ProcurarLancamentos(entrada)));
        }
Example #4
0
        public async Task <ProcurarSaida> Procurar(ProcurarLancamentoEntrada procurarEntrada)
        {
            var query = _efContext.Lancamentos
                        .Include(x => x.Conta)
                        .Include(x => x.Categoria.CategoriaPai)
                        .Include(x => x.Pessoa)
                        .Include(x => x.Parcela)
                        .Include(x => x.Anexos)
                        .Include(x => x.Detalhes)
                        .ThenInclude(x => x.Categoria.CategoriaPai)
                        .AsNoTracking()
                        .Where(x => x.IdUsuario == procurarEntrada.IdUsuario)
                        .AsQueryable();

            if (procurarEntrada.IdConta.HasValue)
            {
                query = query.Where(x => x.IdConta == procurarEntrada.IdConta.Value);
            }

            if (procurarEntrada.IdCategoria.HasValue)
            {
                query = query.Where(x => x.IdCategoria == procurarEntrada.IdCategoria.Value || x.Categoria.IdCategoriaPai == procurarEntrada.IdCategoria.Value);
            }

            if (procurarEntrada.IdPessoa.HasValue)
            {
                query = query.Where(x => x.IdPessoa == procurarEntrada.IdPessoa.Value);
            }

            if (procurarEntrada.DataInicio.HasValue && procurarEntrada.DataFim.HasValue)
            {
                query = query.Where(x => x.Data.Date >= procurarEntrada.DataInicio.Value.Date && x.Data.Date <= procurarEntrada.DataFim.Value.Date);
            }

            switch (procurarEntrada.OrdenarPor)
            {
            case LancamentoOrdenarPor.CategoriaCaminho:
                query = procurarEntrada.OrdenarSentido == "ASC" ? query.AsEnumerable().OrderBy(x => x.Categoria.ObterCaminho()).AsQueryable() : query.AsEnumerable().OrderByDescending(x => x.Categoria.ObterCaminho()).AsQueryable();
                break;

            case LancamentoOrdenarPor.Data:
                query = procurarEntrada.OrdenarSentido == "ASC" ? query.OrderBy(x => x.Data) : query.OrderByDescending(x => x.Data);
                break;

            case LancamentoOrdenarPor.NomePessoa:
                query = procurarEntrada.OrdenarSentido == "ASC" ? query.OrderBy(x => (x.Pessoa != null) ? x.Pessoa.Nome : string.Empty) : query.OrderByDescending(x => (x.Pessoa != null) ? x.Pessoa.Nome : string.Empty);
                break;

            case LancamentoOrdenarPor.NomeConta:
                query = procurarEntrada.OrdenarSentido == "ASC" ? query.OrderBy(x => (x.Conta != null) ? x.Conta.Nome : string.Empty) : query.OrderByDescending(x => (x.Conta != null) ? x.Conta.Nome : string.Empty);
                break;

            case LancamentoOrdenarPor.Valor:
                query = procurarEntrada.OrdenarSentido == "ASC" ? query.OrderBy(x => x.Valor) : query.OrderByDescending(x => x.Valor);
                break;

            default:
                query = procurarEntrada.OrdenarSentido == "ASC" ? query.OrderBy(x => x.Id) : query.OrderByDescending(x => x.Id);
                break;
            }

            if (procurarEntrada.Paginar())
            {
                var pagedList = await query.ToPagedListAsync(procurarEntrada.PaginaIndex.Value, procurarEntrada.PaginaTamanho.Value);

                return(new ProcurarSaida(
                           pagedList.ToList().Select(x => new LancamentoSaida(x)),
                           procurarEntrada.OrdenarPor.ToString(),
                           procurarEntrada.OrdenarSentido,
                           pagedList.TotalItemCount,
                           pagedList.PageCount,
                           procurarEntrada.PaginaIndex,
                           procurarEntrada.PaginaTamanho));
            }
            else
            {
                var totalRegistros = query.Count();

                return(new ProcurarSaida(
                           query.ToList().Select(x => new LancamentoSaida(x)),
                           procurarEntrada.OrdenarPor.ToString(),
                           procurarEntrada.OrdenarSentido,
                           totalRegistros));
            }
        }