public Task <Invoice> GetInvoice(string userId, int activityId, InvoiceIncludeFilters invoiceIncludeFilters) { var queryable = dbContext.Invoices.AsQueryable(); queryable = queryable.ApplyIncludes(invoiceIncludeFilters); return(queryable.FirstOrDefaultAsync(a => a.ActivityId == activityId && a.UserId == userId)); }
public Task <List <Invoice> > GetInvoicesPaginated(InvoiceFilter invoiceFilter, InvoiceIncludeFilters invoiceIncludeFilters) { var queryable = dbContext.Invoices.AsQueryable(); queryable = queryable.ApplyIncludes(invoiceIncludeFilters); queryable = FindIds(invoiceFilter, queryable); queryable = queryable.Paginate(invoiceFilter); return(queryable.ToListAsync()); }
public static IQueryable <Invoice> ApplyIncludes(this IQueryable <Invoice> queryable, InvoiceIncludeFilters invoiceIncludeFilters) { if (invoiceIncludeFilters.IncludeUser) { queryable = queryable.Include(x => x.User); } if (invoiceIncludeFilters.IncludeActivity) { queryable = queryable.Include(x => x.Activity); } if (invoiceIncludeFilters.IncludeTypePayments) { queryable = queryable.Include(x => x.Payments) .ThenInclude(x => x.TypePayment); } else if (invoiceIncludeFilters.IncludePayments) { queryable = queryable.Include(x => x.Payments); } return(queryable); }