public IActionResult FilesSearch(FilesSearchTypes searchType, string searchQuery)
        {
            if (string.IsNullOrWhiteSpace(searchQuery))
            {
                return(View());
            }

            IEnumerable <UserFileModel> userFileCollection = null;

            switch (searchType)
            {
            case FilesSearchTypes.ByName:
                userFileCollection = GetUserFileCollection(_hostingCore.GetFilesByName, searchQuery);
                break;

            case FilesSearchTypes.ByExtension:
                userFileCollection = GetUserFileCollection(_hostingCore.GetFilesByExtension, searchQuery);
                break;

            case FilesSearchTypes.ByCategory:
                userFileCollection = GetUserFileCollection(_hostingCore.GetFilesByCategory, searchQuery);
                break;
            }

            var filesSearchModel = new FilesSearchModel
            {
                UserFileCollection = userFileCollection,
                SearchQuery        = searchQuery,
                SearchType         = searchType
            };

            return(View(filesSearchModel));
        }
        public async Task <IActionResult> MyFiles(string catalogName, string searchString)
        {
            if (Request.Headers["Referer"].ToString() != null)
            {
                ViewData["Reffer"] = Request.Headers["Referer"].ToString();
            }
            // Use LINQ to get list of genres.
            IQueryable <string> genreQuery = from m in _context.Catalog
                                             orderby m.Name
                                             select m.Name;
            var user = await _context.User.FirstOrDefaultAsync(m => m.Login == User.Identity.Name);

            var files = from m in _context.File
                        where m.UserId == user.Id
                        select m;

            if (!string.IsNullOrEmpty(searchString))
            {
                files = files.Where(s => s.Name.Contains(searchString));
            }

            if (!string.IsNullOrEmpty(catalogName))
            {
                files = files.Where(x => x.Catalog.Name == catalogName);
            }

            var catalogNameVM = new FilesSearchModel
            {
                Catalogs = new SelectList(await genreQuery.Distinct().ToListAsync()),
                Files    = await files.ToListAsync()
            };

            foreach (var item in catalogNameVM.Files)
            {
                item.User    = user;
                item.Catalog = await _context.Catalog.FirstOrDefaultAsync(m => m.Id == item.CatalogId);
            }

            return(View(catalogNameVM));
        }
        public async Task <IActionResult> Index(string catalogName, string searchString)
        {
            // Use LINQ to get list of genres.
            IQueryable <string> genreQuery = from m in _context.Catalog
                                             orderby m.Name
                                             select m.Name;

            var files = from m in _context.File
                        select m;

            if (!string.IsNullOrEmpty(searchString))
            {
                files = files.Where(s => s.Name.Contains(searchString));
            }

            if (!string.IsNullOrEmpty(catalogName))
            {
                files = files.Where(x => x.Catalog.Name == catalogName);
            }


            var catalogNameVM = new FilesSearchModel
            {
                Catalogs = new SelectList(await genreQuery.Distinct().ToListAsync()),
                Files    = await files.ToListAsync()
            };

            foreach (var item in catalogNameVM.Files)
            {
                item.User = await _context.User.FirstOrDefaultAsync(m => m.Id == item.UserId);

                item.Catalog = await _context.Catalog.FirstOrDefaultAsync(m => m.Id == item.CatalogId);
            }

            return(View(catalogNameVM));
        }