public async Task <int> Count(Discount_CustomerGroupingFilter filter) { IQueryable <Discount_CustomerGroupingDAO> Discount_CustomerGroupingDAOs = DataContext.Discount_CustomerGrouping; Discount_CustomerGroupingDAOs = DynamicFilter(Discount_CustomerGroupingDAOs, filter); return(await Discount_CustomerGroupingDAOs.CountAsync()); }
public async Task <List <Discount_CustomerGrouping> > List(Discount_CustomerGroupingFilter filter) { if (filter == null) { return(new List <Discount_CustomerGrouping>()); } IQueryable <Discount_CustomerGroupingDAO> Discount_CustomerGroupingDAOs = DataContext.Discount_CustomerGrouping; Discount_CustomerGroupingDAOs = DynamicFilter(Discount_CustomerGroupingDAOs, filter); Discount_CustomerGroupingDAOs = DynamicOrder(Discount_CustomerGroupingDAOs, filter); var Discount_CustomerGroupings = await DynamicSelect(Discount_CustomerGroupingDAOs, filter); return(Discount_CustomerGroupings); }
private async Task <List <Discount_CustomerGrouping> > DynamicSelect(IQueryable <Discount_CustomerGroupingDAO> query, Discount_CustomerGroupingFilter filter) { List <Discount_CustomerGrouping> Discount_CustomerGroupings = await query.Select(q => new Discount_CustomerGrouping() { DiscountId = filter.Selects.Contains(Discount_CustomerGroupingSelect.Discount) ? q.DiscountId : default(long), CustomerGroupingId = filter.Selects.Contains(Discount_CustomerGroupingSelect.CustomerGrouping) ? q.CustomerGroupingId : default(long), CustomerGrouping = filter.Selects.Contains(Discount_CustomerGroupingSelect.CustomerGrouping) && q.CustomerGrouping != null ? new CustomerGrouping { Id = q.CustomerGrouping.Id, Name = q.CustomerGrouping.Name, } : null, Discount = filter.Selects.Contains(Discount_CustomerGroupingSelect.Discount) && q.Discount != null ? new Discount { Id = q.Discount.Id, Name = q.Discount.Name, Start = q.Discount.Start, End = q.Discount.End, Type = q.Discount.Type, } : null, }).ToListAsync(); return(Discount_CustomerGroupings); }
private IQueryable <Discount_CustomerGroupingDAO> DynamicOrder(IQueryable <Discount_CustomerGroupingDAO> query, Discount_CustomerGroupingFilter filter) { switch (filter.OrderType) { case OrderType.ASC: switch (filter.OrderBy) { case Discount_CustomerGroupingOrder.Discount: query = query.OrderBy(q => q.Discount.Id); break; case Discount_CustomerGroupingOrder.CustomerGrouping: query = query.OrderBy(q => q.CustomerGrouping.Id); break; } break; case OrderType.DESC: switch (filter.OrderBy) { case Discount_CustomerGroupingOrder.Discount: query = query.OrderByDescending(q => q.Discount.Id); break; case Discount_CustomerGroupingOrder.CustomerGrouping: query = query.OrderByDescending(q => q.CustomerGrouping.Id); break; } break; } query = query.Skip(filter.Skip).Take(filter.Take); return(query); }
private IQueryable <Discount_CustomerGroupingDAO> DynamicFilter(IQueryable <Discount_CustomerGroupingDAO> query, Discount_CustomerGroupingFilter filter) { if (filter == null) { return(query.Where(q => false)); } if (filter.DiscountId != null) { query = query.Where(q => q.DiscountId, filter.DiscountId); } if (filter.CustomerGroupingId != null) { query = query.Where(q => q.CustomerGroupingId, filter.CustomerGroupingId); } return(query); }