public async Task <Page <ContentGroup> > GetPageAsync(ContentGroupName group, int pageIndex, int pageSize, Expression <Func <ContentGroup, bool> > filter = null) { Check.Positive(pageIndex, nameof(pageIndex)); Check.Positive(pageSize, nameof(pageSize)); var query = _context.ContentGroups.AsNoTracking().Where(x => x.GroupName == group); if (filter != null) { query = query.Where(filter); } var totalCount = await query.CountAsync(); var page = Page <ContentGroup> .Create(pageSize, pageIndex, totalCount); if (totalCount != 0) { page.Records = await query .OrderBy(x => x.Order) .Skip((page.Current - 1) * page.Size) .Take(page.Size) .Include(x => x.Items) .ToListAsync(); foreach (var record in page.Records) { record.Items = record.Items.OrderBy(x => x.SubOrder).ToList(); } } return(page); }
public static ChangeHistory Create(ContentGroupName groupName, ActionType action) { TableName table; switch (groupName) { case ContentGroupName.Discount: table = TableName.Discount; break; case ContentGroupName.Delivery: table = TableName.Delivery; break; case ContentGroupName.AboutUs: table = TableName.AboutUs; break; default: throw new NotImplementedException(nameof(ContentGroupName)); } return(new ChangeHistory { Table = table, Action = action }); }
public Task <ContentGroup> FindByAsync(ContentGroupName group, Expression <Func <ContentGroup, bool> > filter) { Check.NotNull(filter, nameof(filter)); return(_context.ContentGroups.AsNoTracking() .Include(x => x.Items) .Where(x => x.GroupName == group) .FirstOrDefaultAsync(filter)); }
public async Task <List <ContentGroup> > GetListAsync(ContentGroupName group, Expression <Func <ContentGroup, bool> > filter = null) { var query = _context.ContentGroups.AsNoTracking().Where(x => x.GroupName == group); if (filter != null) { query = query.Where(filter); } var items = await query.Include(x => x.Items).OrderBy(x => x.Order).ToListAsync(); foreach (var item in items) { item.Items = item.Items.OrderBy(x => x.SubOrder).ToList(); } return(items); }