public static Expression <Func <VideoYoutube, bool> > CreateQueryCondition(VideoYouSearch search) { Expression <Func <VideoYoutube, bool> > expression = default; Expression <Func <VideoYoutube, bool> > expressionTitle = x => x.YoutubeSearchResultSnippet.Title == search.Title; Expression <Func <VideoYoutube, bool> > expressionChanel = x => x.YoutubeSearchResultSnippet.ChannelTitle == search.ChannelTitle; Expression <Func <VideoYoutube, bool> > expressionPublishedAfter = x => DateTime.Parse(x.YoutubeSearchResultSnippet.PublishedAt) >= search.publishedAfter; Expression <Func <VideoYoutube, bool> > expressionQ = CreateParameterQ(search.Q); if (!string.IsNullOrEmpty(search.Title)) { expression = expressionTitle; } if (!string.IsNullOrEmpty(search.ChannelTitle)) { expression = expression == null ? expressionChanel : UpdateParameter(expressionChanel, expression.Parameters[0]); } if (search.publishedAfter != default) { expression = expression == null ? expressionPublishedAfter : UpdateParameter(expressionPublishedAfter, expression.Parameters[0]); } if (!string.IsNullOrEmpty(search.Q)) { expression = expression == null ? expressionQ : UpdateParameter(expressionQ, expression.Parameters[0]); } return(expression); }
public IResult GetQuery([FromQuery] VideoYouSearch search) { try { var videos = Enumerable.Empty <VideoYoutube>(); videos = _apiYouTubeService.Query(search); return(!videos.Any() ? ViewModelResult("Não há videos cadastrados") : ViewModelResult(videos)); } catch (Exception ex) { _logger.Error(ex, "Falha ao selecionar videos."); return(ErrorResult("Falha ao selecionar videos")); } }
public IEnumerable <VideoYoutube> Query(VideoYouSearch search) { try { var videos = _database.VideosYoutube .Include(x => x.ResourceVideoYoutube) .Include(x => x.YoutubeSearchResultSnippet).ThenInclude(x => x.YoutubeThumbnailDetails).ThenInclude(k => k.YoutubeThumbnailDefault) .Include(x => x.YoutubeSearchResultSnippet).ThenInclude(x => x.YoutubeThumbnailDetails).ThenInclude(k => k.YoutubeThumbnailHigh) .Include(x => x.YoutubeSearchResultSnippet).ThenInclude(x => x.YoutubeThumbnailDetails).ThenInclude(k => k.YoutubeThumbnailMaxres) .Include(x => x.YoutubeSearchResultSnippet).ThenInclude(x => x.YoutubeThumbnailDetails).ThenInclude(k => k.YoutubeThumbnailMedium) .Include(x => x.YoutubeSearchResultSnippet).ThenInclude(x => x.YoutubeThumbnailDetails).ThenInclude(k => k.YoutubeThumbnailStandard) .AsNoTracking() .Where(VideoYoutubeQuery.CreateQueryCondition(search)) .AsEnumerable(); return(videos); } catch (Exception ex) { _logger.Error(ex, "Falha ao selecionar videos."); throw; } }