示例#1
0
        private IQueryable <Model.DynamicAvatarItem> ApplyFilters(AvatarFilter filter)
        {
            var items = DbSet.AsNoTracking()
                        .Where(_ => _.DynamicAvatarLayer.SiteId == filter.SiteId);

            if (filter.Unlockable.HasValue)
            {
                items = items.Where(_ => _.Unlockable == filter.Unlockable.Value);
            }

            if (filter.LayerId.HasValue)
            {
                items = items.Where(_ => _.DynamicAvatarLayerId == filter.LayerId.Value);
            }

            if (filter.ItemIds?.Count > 0)
            {
                items = items.Where(_ => !filter.ItemIds.Contains(_.Id));
            }

            if (!string.IsNullOrEmpty(filter.Search))
            {
                items = items.Where(_ => _.Name.Contains(filter.Search));
            }

            return(items);
        }
示例#2
0
        public async Task <IActionResult> Bundles(bool unlockable = true, int page = 1)
        {
            var filter = new AvatarFilter(page)
            {
                Unlockable = unlockable
            };

            var bundleList = await _avatarService.GetPaginatedBundleListAsync(filter);

            var paginateModel = new PaginateViewModel()
            {
                ItemCount    = bundleList.Count,
                CurrentPage  = page,
                ItemsPerPage = filter.Take.Value
            };

            if (paginateModel.MaxPage > 0 && paginateModel.CurrentPage > paginateModel.MaxPage)
            {
                return(RedirectToRoute(
                           new
                {
                    page = paginateModel.LastPage ?? 1
                }));
            }

            var viewModel = new BundlesListViewModel()
            {
                Bundles       = bundleList.Data,
                PaginateModel = paginateModel,
                Unlockable    = unlockable
            };

            PageTitle = "Avatar Bundles";
            return(View(viewModel));
        }
示例#3
0
 public async Task <ICollection <DynamicAvatarItem> > PageAsync(AvatarFilter filter)
 {
     return(await ApplyFilters(filter)
            .ApplyPagination(filter)
            .ProjectTo <DynamicAvatarItem>()
            .ToListAsync());
 }
 public async Task <ICollection <AvatarBundle> > PageAsync(AvatarFilter filter)
 {
     return(await ApplyFilters(filter)
            .ApplyPagination(filter)
            .ProjectTo <AvatarBundle>()
            .ToListAsync());
 }
 public async Task <ICollection <AvatarItem> > PageAsync(AvatarFilter filter)
 {
     return(await ApplyFilters(filter)
            .OrderBy(_ => _.SortOrder)
            .ApplyPagination(filter)
            .ProjectTo <AvatarItem>(_mapper.ConfigurationProvider)
            .ToListAsync());
 }
示例#6
0
 GetPaginatedBundleListAsync(AvatarFilter filter)
 {
     VerifyManagementPermission();
     filter.SiteId = GetCurrentSiteId();
     return(new DataWithCount <ICollection <AvatarBundle> >
     {
         Data = await _avatarBundleRepository.PageAsync(filter),
         Count = await _avatarBundleRepository.CountAsync(filter)
     });
 }
示例#7
0
 public async Task <DataWithCount <ICollection <AvatarItem> > > PageItemsAsync(
     AvatarFilter filter)
 {
     VerifyManagementPermission();
     filter.SiteId = GetCurrentSiteId();
     return(new DataWithCount <ICollection <AvatarItem> >
     {
         Data = await _avatarItemRepository.PageAsync(filter),
         Count = await _avatarItemRepository.CountAsync(filter)
     });
 }
        private IQueryable <Model.AvatarBundle> ApplyFilters(AvatarFilter filter)
        {
            var bundles = DbSet
                          .AsNoTracking()
                          .Where(_ => _.SiteId == filter.SiteId && !_.IsDeleted);

            if (filter.Unlockable)
            {
                bundles = bundles.Where(_ => _.CanBeUnlocked);
            }

            return(bundles);
        }
        private IQueryable <Model.AvatarItem> ApplyFilters(AvatarFilter filter)
        {
            var items = DbSet.AsNoTracking()
                        .Where(_ => _.AvatarLayer.SiteId == filter.SiteId);

            if (filter.Available)
            {
                items = items.Where(_ => !_.Unlockable);
            }
            else if (filter.CanBeUnlocked || filter.Unavailable || filter.Unlockable)
            {
                items = items.Where(_ => _.Unlockable);

                if (filter.Unavailable || filter.Unlockable)
                {
                    var unlockableItems = _context.AvatarBundleItems
                                          .Where(_ => !_.AvatarBundle.IsDeleted && _.AvatarBundle.CanBeUnlocked)
                                          .Select(_ => _.AvatarItemId)
                                          .Distinct();

                    if (filter.Unavailable)
                    {
                        items = items.Where(_ => !unlockableItems.Contains(_.Id));
                    }
                    else
                    {
                        items = items.Where(_ => unlockableItems.Contains(_.Id));
                    }
                }
            }

            if (filter.LayerId.HasValue)
            {
                items = items.Where(_ => _.AvatarLayerId == filter.LayerId.Value);
            }

            if (filter.ItemIds?.Count > 0)
            {
                items = items.Where(_ => !filter.ItemIds.Contains(_.Id));
            }

            if (!string.IsNullOrEmpty(filter.Search))
            {
                items = items.Where(_ =>
                                    _.Name.Contains(filter.Search, System.StringComparison.OrdinalIgnoreCase));
            }

            return(items);
        }
示例#10
0
        public async Task <IActionResult> Layer(int id, string search, bool?unlockable = null,
                                                int page = 1)
        {
            var filter = new AvatarFilter(page, 12)
            {
                LayerId    = id,
                Search     = search,
                Unlockable = unlockable
            };

            var itemList = await _avatarService.PageItemsAsync(filter);

            PaginateViewModel paginateModel = new PaginateViewModel()
            {
                ItemCount    = itemList.Count,
                CurrentPage  = page,
                ItemsPerPage = filter.Take.Value
            };

            if (paginateModel.MaxPage > 0 && paginateModel.CurrentPage > paginateModel.MaxPage)
            {
                return(RedirectToRoute(
                           new
                {
                    page = paginateModel.LastPage ?? 1
                }));
            }

            foreach (var item in itemList.Data)
            {
                item.Thumbnail = _pathResolver.ResolveContentPath(item.Thumbnail);
            }

            if (itemList.Data.Any())
            {
                PageTitle = $"Avatar Items: {itemList.Data.First().AvatarLayerName}";
            }

            var viewModel = new ItemsListViewModel()
            {
                Items         = itemList.Data,
                PaginateModel = paginateModel,
                Id            = id,
                Search        = search,
                Unlockable    = unlockable
            };

            return(View(viewModel));
        }
示例#11
0
        public async Task <IActionResult> GetItemsList(string itemIds,
                                                       int?layerId,
                                                       string search,
                                                       bool unlockable,
                                                       int page = 1)
        {
            var filter = new AvatarFilter(page, 10)
            {
                Search     = search,
                LayerId    = layerId,
                Unlockable = unlockable
            };

            if (!string.IsNullOrWhiteSpace(itemIds))
            {
                filter.ItemIds = itemIds.Split(',')
                                 .Where(_ => !string.IsNullOrWhiteSpace(_))
                                 .Select(int.Parse)
                                 .ToList();
            }

            var items = await _avatarService.PageItemsAsync(filter);

            var paginateModel = new PaginateViewModel
            {
                ItemCount    = items.Count,
                CurrentPage  = page,
                ItemsPerPage = filter.Take.Value
            };

            foreach (var item in items.Data)
            {
                if (!string.IsNullOrWhiteSpace(item.Thumbnail))
                {
                    item.Thumbnail = _pathResolver.ResolveContentPath(item.Thumbnail);
                }
            }

            var viewModel = new ItemsListViewModel
            {
                Items         = items.Data,
                PaginateModel = paginateModel
            };

            return(PartialView("_ItemsPartial", viewModel));
        }
 public async Task <int> CountAsync(AvatarFilter filter)
 {
     return(await ApplyFilters(filter)
            .CountAsync());
 }
示例#13
0
        public async Task <IActionResult> Layer(int id,
                                                string search,
                                                bool available   = false,
                                                bool unavailable = false,
                                                bool unlockable  = false,
                                                int page         = 1)
        {
            var computedAvailable   = available;
            var computedUnavailable = unavailable;
            var computedUnlockable  = unlockable;

            var filter = new AvatarFilter(page, 12)
            {
                LayerId = id,
                Search  = search
            };

            if (computedAvailable)
            {
                filter.Available    = true;
                computedUnavailable = false;
                computedUnlockable  = false;
            }
            else if (computedUnavailable)
            {
                filter.Unavailable = true;
                computedUnlockable = false;
            }
            else if (computedUnlockable)
            {
                filter.Unlockable = true;
            }

            var itemList = await _avatarService.PageItemsAsync(filter);

            var paginateModel = new PaginateViewModel
            {
                ItemCount    = itemList.Count,
                CurrentPage  = page,
                ItemsPerPage = filter.Take.Value
            };

            if (paginateModel.PastMaxPage)
            {
                return(RedirectToRoute(
                           new
                {
                    page = paginateModel.LastPage ?? 1
                }));
            }

            foreach (var item in itemList.Data)
            {
                item.Thumbnail = _pathResolver.ResolveContentPath(item.Thumbnail);
            }

            if (itemList.Data.Count > 0)
            {
                PageTitle = $"Avatar Items: {itemList.Data.First().AvatarLayerName}";
            }

            var viewModel = new ItemsListViewModel
            {
                Items         = itemList.Data,
                PaginateModel = paginateModel,
                Id            = id,
                Search        = search,
                Available     = computedAvailable,
                Unavailable   = computedUnavailable,
                Unlockable    = computedUnlockable
            };

            return(View(viewModel));
        }