예제 #1
0
        public async Task <ActionResult <IEnumerable <ExpenseDtoGet> > > GetExpenses(
            [FromQuery] DateTime?from    = null,
            [FromQuery] DateTime?to      = null,
            [FromQuery] Models.Type?type = null)
        {
            //Filters results by date
            IQueryable <Expense> result = _context.Expenses.Include(e => e.Comments);

            if (from != null)
            {
                result = result.Where(e => from <= e.Date);
            }
            if (to != null)
            {
                result = result.Where(e => e.Date <= to);
            }

            if (type != null)
            {
                result = result.Where(e => e.Type == type);
            }

            var resultList = await result.Select(e => ExpenseDtoGet.GetDtoFromExpense(e)).ToListAsync();

            return(resultList);
        }
예제 #2
0
        public async Task <IActionResult> GetExpenses(
            [FromQuery] DateTime?from    = null,
            [FromQuery] DateTime?to      = null,
            [FromQuery] Models.Type?type = null,
            [FromQuery] int page         = 0,
            [FromQuery] int itemsPerPage = 15)
        {
            IQueryable <Expense> result = _context.Expenses.Include(e => e.Comments);

            if (type != null)
            {
                result = result.Where(f => f.Type == type);
            }
            if (from != null)
            {
                result = result.Where(f => from <= f.Date);
            }
            if (to != null)
            {
                result = result.Where(f => f.Date <= to);
            }

            var resultList = await result
                             .Skip(page *itemsPerPage)
                             .Take(itemsPerPage)
                             .Select(e => ExpenseDtoGet.GetDtoFromExpense(e))
                             .ToListAsync();

            var PaginatedList = new PaginatedList <ExpenseDtoGet>(page, await result.CountAsync(), itemsPerPage);

            PaginatedList.Items.AddRange(resultList);

            return(Ok(PaginatedList));
        }