コード例 #1
0
        public async Task <IActionResult> Index(string userName, CollectionSort sortOrder = CollectionSort.IdAsc)
        {
            //View(await db.Collections.ToListAsync());
            User user = null;

            if (userName != null)
            {
                user = await _userManager.FindByNameAsync(userName);
            }
            string role = null;

            if (User.Identity.Name != null)
            {
                User user_2 = await _userManager.FindByNameAsync(User.Identity.Name);

                role = user_2.Role;
            }
            if (user != null)
            {
                IQueryable <Collection> collections = db.Collections.Include(x => x);
                ViewData["IdSort"]   = sortOrder == CollectionSort.IdAsc ? CollectionSort.IdDesc : CollectionSort.IdAsc;
                ViewData["NameSort"] = sortOrder == CollectionSort.NameAsc ? CollectionSort.NameDesc : CollectionSort.NameAsc;
                ViewData["ItemSort"] = sortOrder == CollectionSort.ItemCountAsc ? CollectionSort.ItemCountDesc : CollectionSort.ItemCountAsc;
                ViewData["TextSort"] = sortOrder == CollectionSort.TextAsc ? CollectionSort.TextDesc : CollectionSort.TextAsc;
                collections          = sortOrder switch
                {
                    CollectionSort.IdDesc => collections.OrderByDescending(s => s.Id),
                    CollectionSort.NameAsc => collections.OrderBy(s => s.CollectionName),
                    CollectionSort.NameDesc => collections.OrderByDescending(s => s.CollectionName),
                    CollectionSort.ItemCountAsc => collections.OrderBy(s => s.ItemCount),
                    CollectionSort.ItemCountDesc => collections.OrderByDescending(s => s.ItemCount),
                    CollectionSort.TextAsc => collections.OrderBy(s => s.Text),
                    CollectionSort.TextDesc => collections.OrderByDescending(s => s.Text),
                    _ => collections.OrderBy(s => s.Id),
                };
                CollectionsControllerViewModel model = new CollectionsControllerViewModel
                {
                    UserName    = user.UserName,
                    Role_2      = role,
                    Collections = await collections.AsNoTracking().ToListAsync(),
                };
                return(View(model));
            }
            return(NotFound());
        }
コード例 #2
0
        private async Task GetCollectionAsync(CollectionSort collectionSort)
        {
            UIApplication.SharedApplication.NetworkActivityIndicatorVisible = true;

            try
            {
                var result = await client.GetProductsPageAsync(1, collection.CollectionId, collectionSort);

                this.products = result.Products;
                TableView.ReloadData();
            }
            catch (NSErrorException ex)
            {
                Console.WriteLine("Error fetching products: {0}", ex.Error);
            }

            UIApplication.SharedApplication.NetworkActivityIndicatorVisible = false;
        }
コード例 #3
0
        private void GetCollection(CollectionSort collectionSort)
        {
            if (collectionTask != null)
            {
                collectionTask.Cancel();
            }

            UIApplication.SharedApplication.NetworkActivityIndicatorVisible = true;
            collectionTask = client.GetProductsPage(1, collection.CollectionId, collectionSort, (products, page, reachedEnd, error) => {
                UIApplication.SharedApplication.NetworkActivityIndicatorVisible = false;

                if (error == null && products != null)
                {
                    this.products = products;
                    TableView.ReloadData();
                }
                else
                {
                    Console.WriteLine("Error fetching products: {0}", error);
                }
            });
        }
コード例 #4
0
        public async Task SortAsync(string name,
                                    CollectionSort sort,
                                    CancellationToken cancellationToken = default)
        {
            name = FixCollectionName(name);

            Collection collection;

            do
            {
                collection = await _database.GetCollectionAsync(_context.User.Id, name, cancellationToken);

                if (collection == null)
                {
                    await _context.ReplyAsync("collectionNotFound", new { name });

                    return;
                }

                collection.Sort = sort;
            }while (!await _database.SaveAsync(cancellationToken));

            await _context.ReplyAsync("collectionSorted", new { collection, attribute = sort });
        }
コード例 #5
0
        public Task <ProductsPageResult> GetProductsPageAsync(nuint page, NSNumber collectionId, CollectionSort sortOrder, CancellationToken cancellationToken = default(CancellationToken))
        {
            var tcs     = new TaskCompletionSource <ProductsPageResult>();
            var urlTask = GetProductsPage(page, collectionId, sortOrder, (data, pageArg, reachedEndArg, error) => HandleCallback(tcs, cancellationToken, new ProductsPageResult {
                Products = data, Page = pageArg, ReachedEnd = reachedEndArg
            }, error));

            cancellationToken.Register(urlTask.Cancel);
            return(tcs.Task);
        }
コード例 #6
0
        public static IQueryable <Doujin> OrderBy(this IQueryable <Doujin> queryable,
                                                  CollectionSort sort,
                                                  bool descend)
        {
            switch (sort)
            {
            case CollectionSort.UploadTime:
                queryable = queryable.OrderBy(d => d.UploadTime);
                break;

            case CollectionSort.ProcessTime:
                queryable = queryable.OrderBy(d => d.ProcessTime);
                break;

            case CollectionSort.Identifier:
                queryable = queryable.OrderBy(d => d.Source).ThenBy(d => d.SourceId);
                break;

            case CollectionSort.Name:
                queryable = queryable.OrderBy(d => d.PrettyName).ThenBy(d => d.OriginalName);
                break;

            case CollectionSort.Artist:

                queryable = queryable
                            .OrderBy(d => d.Tags.Select(t => t.Tag).First(t => t.Type == TagType.Artist));

                break;

            case CollectionSort.Group:

                queryable = queryable
                            .OrderBy(d => d.Tags.Select(t => t.Tag).First(t => t.Type == TagType.Group));

                break;

            case CollectionSort.Scanlator:

                queryable = queryable
                            .OrderBy(d => d.Tags.Select(t => t.Tag).First(t => t.Type == TagType.Scanlator));

                break;

            case CollectionSort.Language:

                queryable = queryable
                            .OrderBy(d => d.Tags.Select(t => t.Tag).First(t => t.Type == TagType.Language));

                break;

            case CollectionSort.Parody:

                queryable = queryable
                            .OrderBy(d => d.Tags.Select(t => t.Tag).First(t => t.Type == TagType.Parody));

                break;
            }

            if (descend)
            {
                queryable = queryable.Reverse();
            }

            return(queryable);
        }