public async Task <IEnumerable <Purchase> > GetPurchases(PurchaseQuery queryObj)
        {
            /*  return await _context.purchases
             * .Include(a => a.dbAcct)
             * .Include(p => p.purchaseItems)
             * .ThenInclude(pr => pr.Products)
             * .ToListAsync(); */

            var query = _context.purchases
                        .Include(p => p.purchaseItems)
                        .ThenInclude(pr => pr.Products)
                        .Include(a => a.dbAcct).AsQueryable();



            //Expression<Func<Purchase,object>> exp ;
            //Dictionary<string, Expression <Func<Purchase,object>>> columnMap =  new Dictionary<string, Expression<Func<Purchase,object>>>();

            var columnMap = new Dictionary <string, Expression <Func <Purchase, object> > >()
            {
                ["acct"] = pr => pr.dbAcct.acctName
            };

            // columnMap.Add("acct", pr => pr.dbAcct.acctName); old

            /*  if (queryObj.acctId.HasValue)
             *    query =  query.Where(pr => pr.accId == queryObj.acctId);
             *
             *   if (queryObj.SortBy == "account")
             *       query = (queryObj.IsSortAscending) ? query.OrderBy(p => p.dbAcct.acctKey)
             *        : query.OrderByDescending(p => p.dbAcct.acctKey); */

            if (queryObj.IsSortAscending)
            {
                query = query.OrderBy(columnMap[queryObj.SortBy]);
            }
            else
            {
                query = query.OrderByDescending(columnMap[queryObj.SortBy]);
            }

            /*  //query =  query.Where(pr => pr.accId == 39); */

            return(await query.ToListAsync());
        }
Exemple #2
0
 public override Expression <Func <Purchase, bool> > ToQuery()
 => PurchaseQuery.GetQuery(this);