Exemplo n.º 1
0
 public IActionResult Search([FromQuery] ImageSearch search)
 {
     return(new JsonResult(_imageService.Search(search)));
 }
Exemplo n.º 2
0
        public List <Image> Search(ImageSearch search)
        {
            IEnumerable <Image> images;

            if (search.characterId.HasValue)
            {
                List <Image> imageList = new List <Image>();
                foreach (ImageCharacter im in db.ImageCharacters.Where(p => p.CharacterId == search.characterId).ToList())
                {
                    imageList.Add(db.Images
                                  .Include(p => p.Title)
                                  .Include(p => p.Filetype)
                                  .Include(p => p.ImageCharacters)
                                  .ThenInclude(p => p.Character)
                                  .FirstOrDefault(p => p.Id == im.ImageId));
                }
                images = imageList;
            }
            else
            {
                images = db.Images
                         .Include(p => p.Title)
                         .Include(p => p.Filetype)
                         .Include(p => p.ImageCharacters)
                         .ThenInclude(p => p.Character)
                         .ToList();
            }
            if (search.titleId.HasValue)
            {
                images = images.Where(p => { if (p.Title != null)
                                             {
                                                 return(p.Title.Id == search.titleId);
                                             }
                                             else
                                             {
                                                 return(false);
                                             } });
            }
            if (search.filetype.HasValue)
            {
                images = images.Where(p => { if (p.Filetype != null)
                                             {
                                                 return(p.Filetype.Id == search.filetype);
                                             }
                                             else
                                             {
                                                 return(false);
                                             } });
            }
            if (search.width.HasValue)
            {
                images = images.Where(p => p.Width == search.width);
            }
            else
            {
                if (search.minWidth.HasValue)
                {
                    images = images.Where(p => p.Width >= search.minWidth);
                }
                if (search.maxWidth.HasValue)
                {
                    images = images.Where(p => p.Width >= search.maxWidth);
                }
            }
            if (search.height.HasValue)
            {
                images = images.Where(p => p.Height == search.height);
            }
            else
            {
                if (search.minHeight.HasValue)
                {
                    images = images.Where(p => p.Height >= search.minHeight);
                }
                if (search.maxHeight.HasValue)
                {
                    images = images.Where(p => p.Width >= search.maxHeight);
                }
            }

            return(images.ToList());
        }