public async Task <Payrun> GetPayRunAsync(Guid payRunId, PayRunFields fields = PayRunFields.None, bool trackChanges = false)
        {
            var query = BuildPayRunQuery(
                _dbContext.Payruns.Where(p => p.Id == payRunId), fields)
                        .TrackChanges(trackChanges);

            return(await query.SingleOrDefaultAsync());
        }
        private static IQueryable <Payrun> BuildPayRunQuery(IQueryable <Payrun> query, PayRunFields fields)
        {
            if (fields.HasFlag(PayRunFields.Creator))
            {
                query = query.Include(p => p.Creator);
            }
            if (fields.HasFlag(PayRunFields.Updater))
            {
                query = query.Include(p => p.Updater);
            }
            if (fields.HasFlag(PayRunFields.PayrunInvoices))
            {
                query = query.Include(p => p.PayrunInvoices);
            }

            return(query);
        }