public async Task <ActionResult <CursorPaginatedResponse <ExpenseDto> > > GetExpensesForBudgetAsync(int id, [FromQuery] CursorPaginationParameters searchParams) { var budget = await budgetRepository.GetByIdAsync(id); if (budget == null) { return(NotFound($"No Budget with Id {id} found.")); } if (!IsUserAuthorizedForResource(budget)) { return(Unauthorized("You can only access your own budget.")); } var expenses = await budgetRepository.GetExpensesForBudgetAsync(id, searchParams); var paginatedResponse = CursorPaginatedResponse <ExpenseDto> .CreateFrom(expenses, mapper.Map <IEnumerable <ExpenseDto> >, searchParams.IncludeNodes, searchParams.IncludeEdges); return(Ok(paginatedResponse)); }