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); }
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)); }