public async Task <IList <PayrunInvoice> > GetPackageInvoicesAsync(Guid packageId, PayrunStatus[] payRunStatuses, InvoiceStatus[] invoiceStatuses, PayRunInvoiceFields fields = PayRunInvoiceFields.None, bool trackChanges = false) { var query = _dbContext.PayrunInvoices.Where(p => p.Invoice.PackageId == packageId && payRunStatuses.Contains(p.Payrun.Status) && invoiceStatuses.Contains(p.InvoiceStatus)) .TrackChanges(trackChanges); return(await BuildPayRunInvoiceQuery(query, fields) .OrderByDescending(pi => pi.DateCreated) .ToListAsync()); }
private static IQueryable <PayrunInvoice> BuildPayRunInvoiceQuery(IQueryable <PayrunInvoice> query, PayRunInvoiceFields fields) { if (fields.HasFlag(PayRunInvoiceFields.Creator)) { query = query.Include(p => p.Creator); } if (fields.HasFlag(PayRunInvoiceFields.Updater)) { query = query.Include(p => p.Updater); } if (fields.HasFlag(PayRunInvoiceFields.Payrun)) { query = query.Include(p => p.Payrun); } if (fields.HasFlag(PayRunInvoiceFields.Invoice)) { query = query.Include(p => p.Invoice); } if (fields.HasFlag(PayRunInvoiceFields.InvoiceItems)) { query = query.Include(p => p.Invoice).ThenInclude(i => i.Items); } if (fields.HasFlag(PayRunInvoiceFields.Package)) { query = query.Include(p => p.Invoice).ThenInclude(i => i.Package); } if (fields.HasFlag(PayRunInvoiceFields.Supplier)) { query = query.Include(p => p.Invoice).ThenInclude(i => i.Supplier); } if (fields.HasFlag(PayRunInvoiceFields.ServiceUser)) { query = query.Include(p => p.Invoice).ThenInclude(i => i.ServiceUser); } return(query); }
public async Task <PagedList <PayrunInvoice> > GetPayRunInvoicesAsync(Guid payRunId, RequestParameters parameters, InvoiceStatus[] statuses, PayRunInvoiceFields fields = PayRunInvoiceFields.None, bool trackChanges = false) { var query = _dbContext.PayrunInvoices.Where(p => p.PayrunId == payRunId && statuses.Contains(p.InvoiceStatus)) .TrackChanges(trackChanges); var payRunInvoices = await BuildPayRunInvoiceQuery(query, fields) .Skip((parameters.PageNumber - 1) * parameters.PageSize) .Take(parameters.PageSize) .ToListAsync(); var invoiceCount = await query.CountAsync(); return(PagedList <PayrunInvoice> .ToPagedList(payRunInvoices, invoiceCount, parameters.PageNumber, parameters.PageSize)); }
public async Task <PayrunInvoice> GetPayRunInvoiceAsync(Guid payRunInvoiceId, PayRunInvoiceFields fields = PayRunInvoiceFields.None, bool trackChanges = false) { var query = _dbContext.PayrunInvoices.Where(p => p.Id.Equals(payRunInvoiceId)) .TrackChanges(trackChanges); return(await BuildPayRunInvoiceQuery(query, fields).SingleOrDefaultAsync()); }