/// <summary> /// Perform the query filering for the GetAccounts. /// </summary> private IQueryable <Model.Account> GetAccountsOnQuery(IQueryable <Model.Account> query, AccountArgs?args, ICosmosDbArgs dbArgs) { if (args == null || args.IsInitial) { return(query); } // Where an argument value has been specified then add as a filter - the WhereWhen and WhereWith are enabled by Beef. var q = query.WhereWhen(!(args.OpenStatus == null) && args.OpenStatus != OpenStatus.All, x => x.OpenStatus == args !.OpenStatus !.Code); q = q.WhereWith(args?.ProductCategory, x => x.ProductCategory == args !.ProductCategory !.Code); // With checking IsOwned a simple false check cannot be performed with Cosmos; assume "not IsDefined" is equivalent to false also. if (args !.IsOwned == null) { return(q); } if (args.IsOwned == true) { return(q.Where(x => x.IsOwned == true)); } else { return(q.Where(x => !x.IsOwned.IsDefined() || !x.IsOwned)); } }
private IQueryable <Person> GetByArgsOnQuery(IQueryable <Person> q, PersonArgs?args, ICosmosDbArgs dbArgs) { q = q.WhereWildcard(x => x.FirstName, args?.FirstName); q = q.WhereWildcard(x => x.LastName, args?.LastName); q = q.WhereWith(args?.Genders, x => args !.Genders !.ToCodeList().Contains(x.GenderSid)); return(q.OrderBy(x => x.LastName)); }
private IQueryable <Model.Robot> GetByArgsOnQuery(IQueryable <Model.Robot> q, RobotArgs args, ICosmosDbArgs dbArgs) { q = q.WhereWildcard(x => x.ModelNo, args?.ModelNo); q = q.WhereWildcard(x => x.SerialNo, args?.SerialNo); q = q.WhereWith(args?.PowerSources, x => args.PowerSources.ToCodeList().Contains(x.PowerSource)); return(q.OrderBy(x => x.SerialNo)); }