public ImageThumbnailGallery GetGoToGuideImageList() { ImageThumbnailGallery gallery = new ImageThumbnailGallery(); var imgList = database.ImageFiles .Where(imgFile => imgFile.ImageContent == (int)ImageInformation.ImageContents.GoToGuide) .AsQueryable(); gallery.TotalImageCount = imgList.Count(); // filter by... gallery.FilteredImageCount = imgList.Count(); var orderedList = imgList .OrderBy(i => i.GoToGuidePage); gallery.GalleryOfImages = orderedList .ToList() .Select(img => new ImageSummary() { Name = img.Name, FileName = img.ThumbnailImageData("mBase").FileName, ImageID = img.ImageID, CanLightbox = ImageFile.ImageCanLightbox(img.ImageType), HiResFileName = img.OriginalImage, TypicalName = img.ThumbnailImageData("mBase").TypicalName }); return(gallery); }
public ImageThumbnailGallery GetImageThumbnailList(string categories, string imageTypes, int?seriesId, string sortBy, string keywords, int?pubId, string pubPageNum, string contentTypes, bool includePeople, int pageNum, int pageSize, string imageApplications) { ImageThumbnailGallery gallery = new ImageThumbnailGallery(); var imageTypeList = ImageFile.ImageTypes.Where(i => i.CommonImage) .Select(iType => iType.Abbreviation) .ToList(); var imgList = database.ImageFiles .Include(i => i.TypicalImageFiles.Select(tif => tif.Typical)) .Include(i => i.ImageFileSerieses.Select(ifs => ifs.Series)) .Where(i => !i.HasPeople || includePeople) .Where(imgFile => imageTypeList.Any(it => it == imgFile.ImageType)) .AsQueryable(); gallery.TotalImageCount = imgList.Count(); IEnumerable <int> contentTypeList = new List <int>() { (int)ImageInformation.ImageContents.Image }; if ((contentTypes ?? "").Any()) { contentTypeList = contentTypeList.Union((contentTypes ?? "").ToLower().Split(',').Select(c => int.Parse(c))); } imgList = imgList.Where(img => contentTypeList.Contains(img.ImageContent)); // require image types { var imgTypeList = (imageTypes ?? "").ToLower().Split(','); imgList = imgList.Where(img => imgTypeList.Contains(img.ImageType)); } if (seriesId.HasValue) { imgList = imgList.Where(img => img.ImageFileSerieses.Any(s => s.SeriesID == seriesId.Value)); } if ((categories ?? "").Any()) { var catList = categories.Split(','); imgList = imgList.Where(img => catList.Intersect(img.ImageFileSerieses.Select(s => s.Series.Category.Name)).Any()); } if ((imageApplications ?? "").Any()) { var appList = imageApplications.Split(',').ToList(); imgList = imgList.Where(img => appList.Any(a => img.ImageApplicationList.Contains(a))); } if (pubId.HasValue) { imgList = imgList.Where(img => img.PublicationImages.Any(pi => pi.PublicationID == pubId.Value)); if ((pubPageNum ?? "").Any()) { int nPubPageNum = 0; if (int.TryParse(pubPageNum, out nPubPageNum)) { imgList = imgList.Where(img => img.PublicationImages.Any(pi => (pi.PublicationID == pubId.Value) && ((pi.PageNumber == nPubPageNum) || (pi.PageNumber == null)))); } } } if ((keywords ?? "").Any()) { var termList = SearchText.GetSearchList(keywords); Dictionary <int, int> termImageList = new Dictionary <int, int>(); foreach (var term in termList) { var theList = database.ImageFiles .Where(s => s.DBKeywords.Contains(term.searchText)) .Select(i => i.ImageID) .ToList(); theList.ForEach(delegate(int imgId) { termImageList[imgId] = (termImageList.Keys.Contains(imgId) ? termImageList[imgId] : 0) | (int)Math.Pow(2, term.idxWord); }); } int rightAnswer = ((int)Math.Pow(2, (termList.Select(t => t.idxWord).Max() + 1)) - 1); var imageIdList = termImageList.Keys.Where(i => termImageList[i] == rightAnswer); imgList = imgList.Where(i => imageIdList.Contains(i.ImageID)); } gallery.FilteredImageCount = imgList.Count(); var orderedList = imgList .OrderBy(i => i.Name); switch ((sortBy ?? "").ToLower()) { case "mostpopular": orderedList = orderedList .OrderByDescending(i => i.Popularity).ThenByDescending(i => i.CreatedDate); break; case "mostrecent": orderedList = orderedList .OrderByDescending(i => i.CreatedDate); break; } gallery.GalleryOfImages = orderedList .Skip((pageNum - 1) * pageSize) .Take(pageSize) .ToList() .Select(img => new ImageSummary() { Name = img.Name, FileName = img.ThumbnailImageData("m16to9").FileName, ImageID = img.ImageID, CanLightbox = ImageFile.ImageCanLightbox(img.ImageType), HiResFileName = img.OriginalImage, TypicalName = img.ThumbnailImageData("m16to9").TypicalName, FeaturedSeries = img.ImageFileSerieses.Where(i => i.IsFeatured).Select(s => s.Series.Name).FirstOrDefault() }); return(gallery); }