Пример #1
0
        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);
        }
Пример #2
0
        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);
        }