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);
        }
Exemple #2
0
        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);
        }