public IActionResult Search([FromQuery] ImageSearch search) { return(new JsonResult(_imageService.Search(search))); }
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()); }