public async Task <SearchResultPaged> FindTitleFightsAsync(SearchQuery searchQuery) { Expression <Func <WikiFightWeb, bool> > where = e => e.TitleFight == true; SearchResultPaged searchResultPaged = await FindFightsQueryBuilder(searchQuery.SearchParams, searchQuery.PagingInfo, false, where); return(searchResultPaged); }
public async Task <SearchResultPaged> FindAwardFightsAsync(SearchQuery searchQuery) { //Expression<Func<WikiFightWebSqlLite, bool>> where = e => e.Fotn == 0 || e.Potn == 0; SearchResultPaged searchResultPaged = new SearchResultPaged(); if (searchQuery.SearchParams.AwardType == AwardTypes.POTN) { Expression <Func <WikiFightWebSqlLite, bool> > where = e => e.Potn == 1; searchResultPaged = await FindFightsQueryBuilder(searchQuery.SearchParams, searchQuery.PagingInfo, false, where); return(searchResultPaged); } else if (searchQuery.SearchParams.AwardType == AwardTypes.FOTN) { Expression <Func <WikiFightWebSqlLite, bool> > where = e => e.Fotn == 1; searchResultPaged = await FindFightsQueryBuilder(searchQuery.SearchParams, searchQuery.PagingInfo, false, where); return(searchResultPaged); } Expression <Func <WikiFightWebSqlLite, bool> > whereNoFilter = e => e.Fotn == 1 || e.Potn == 1; searchResultPaged = await FindFightsQueryBuilder(searchQuery.SearchParams, searchQuery.PagingInfo, false, whereNoFilter); return(searchResultPaged); }
private async Task <SearchResultPaged> FindFightsQueryBuilder(SearchParams searchQueryParams, PagingInfo pagingInfo, bool preventScraping, Expression <Func <WikiFightWebSqlLite, bool> > additionalQuery = null, Expression <Func <WikiFightWebSqlLite, int> > orderBy = null) { List <WikiFightWebSqlLite> test = _ufcContextLite.WikiFightWebSqlLite.Take(10).ToList(); var xxx = test; IQueryable <WikiFightWebSqlLite> query = _ufcContextLite.WikiFightWebSqlLite.AsNoTracking(); query = FilterFighterName(searchQueryParams, query); query = FilterFinishType(searchQueryParams, query); query = FilterYear(searchQueryParams, query); query = FilterDuration(searchQueryParams, query); query = FilterWeightDivision(searchQueryParams, query); query = FilterFreeFights(searchQueryParams, query); if (additionalQuery != null) { query = query.Where(additionalQuery); } // clustered index on f.id so order is always by when the date is held of fight query = orderBy != null?query.OrderBy(orderBy) : query.OrderBy(f => f.Id); SearchResultPaged searchResultPaged = await GetSearchResults(query, pagingInfo, preventScraping); return(searchResultPaged); }
public async Task <SearchResultPaged> FindTopRedditFightsAsync(SearchQuery searchQuery) { Expression <Func <WikiFightWeb, bool> > where = e => e.RedditTopFights != 0; Expression <Func <WikiFightWeb, int> > orderBy = e => e.RedditTopFights; SearchResultPaged searchResultPaged = await FindFightsQueryBuilder(searchQuery.SearchParams, searchQuery.PagingInfo, false, where, orderBy); return(searchResultPaged); }
public async Task <SearchResultPaged> FindFightsScrapeAsync(SearchQuery searchQuery, bool swapFighterNamesForScrape) { string fighterName = searchQuery.SearchParams.Fighter1Name; IQueryable <SearchResult> query = (from wikiFightWeb in _fightSearchEntities.WikiFightWeb join wikiFight in _fightSearchEntities.WikiFight on wikiFightWeb.WikiFightId equals wikiFight.Id join fight in _fightSearchEntities.Fight on wikiFight.FightId equals fight.Id orderby wikiFightWeb.Id select new SearchResult { //imgUrl //imageForWebOriginal for spoilers //imageForWebNameMixed for spoilers WId = wikiFightWeb.WikiFightId, Fighter1Name = wikiFightWeb.Fighter1Name, Fighter1NameOriginal = wikiFightWeb.Fighter1Name, Fighter2Name = wikiFightWeb.Fighter2Name, Fighter2NameOriginal = wikiFightWeb.Fighter2Name, FightResultHow = wikiFightWeb.FightResultHow, Round = wikiFightWeb.Round, Time = wikiFightWeb.Time, TotalTime = wikiFightWeb.TotalTime, WEventName = wikiFightWeb.EventName, DateHeld = wikiFightWeb.DateHeld, VideoLink = wikiFightWeb.VideoLink, Rank = wikiFightWeb.RedditTopFights, Fotn = wikiFightWeb.Fotn, Potn = wikiFightWeb.Potn, WeightClass = wikiFightWeb.WeightClass, ImageForWeb = wikiFightWeb.ImageForWeb, ImgUrl = fight.ImagePath, ImageForWebNameMixed = string.Empty, ImageForWebOriginal = string.Empty, }); int count = await query.CountAsync(); PagingInfo pagingInfo = searchQuery.PagingInfo; query = query.Skip((pagingInfo.Page - 1) * pagingInfo.ItemsPerPage).Take(pagingInfo.ItemsPerPage); List <SearchResult> searchResults = await query.ToListAsync(); foreach (SearchResult searchResult in searchResults) { searchResult.ImgUrl = searchResult.ImgUrl.Replace(@"\", "/").Replace("Assets", ""); } SearchResultPaged result = new SearchResultPaged { Count = count, FightSearchResultsPaged = searchResults }; return(result); }
public async Task <SearchResultPaged> FindAwardFightsAsync(SearchQuery searchQuery) { Expression <Func <WikiFightWeb, bool> > where = e => e.Fotn || e.Potn; if (searchQuery.SearchParams.AwardType == AwardTypes.POTN) { where = e => e.Potn; } else if (searchQuery.SearchParams.AwardType == AwardTypes.FOTN) { where = e => e.Fotn; } SearchResultPaged searchResultPaged = await FindFightsQueryBuilder(searchQuery.SearchParams, searchQuery.PagingInfo, false, where); return(searchResultPaged); }
private async Task <SearchResultPaged> GetSearchResults(IQueryable <WikiFightWebSqlLite> query, PagingInfo pagingInfo, bool preventScraping) { int count = await query.CountAsync(); // todo: this stops people getting all results from db, but i need to remove from api query instead pagingInfo.ItemsPerPage = 9; query = query.Skip((pagingInfo.Page - 1) * pagingInfo.ItemsPerPage).Take(pagingInfo.ItemsPerPage); // todo use automapper List <SearchResult> searchResults = await query.Select(e => new SearchResult { WId = e.WikiFightId, Fighter1Name = e.Fighter1Name, Fighter1NameOriginal = e.Fighter1Name, Fighter2Name = e.Fighter2Name, Fighter2NameOriginal = e.Fighter2Name, FightResultHow = e.FightResultHow, Round = e.Round.ToString(), Time = e.Time, TotalTime = TimeSpan.Parse(e.TotalTime), ImageForWeb = e.ImageForWeb, WEventName = e.EventName, //DateHeld = DateTime.ParseExact(e.DateHeld,_provider, DateHeld = DateTime.ParseExact(e.DateHeld, "yyyy-MM-dd", _provider, DateTimeStyles.None), VideoLink = e.VideoLink, ImgUrl = e.ImagePath, ImageForWebNameMixed = string.Empty, ImageForWebOriginal = string.Empty, Rank = e.RedditTopFights, Fotn = e.Fotn == 1, Potn = e.Potn == 1, WeightClass = e.WeightClass }).ToListAsync(); FormatResultsToPreventScraping(preventScraping, searchResults); SearchResultPaged searchResultPaged = new SearchResultPaged { Count = count, FightSearchResultsPaged = searchResults }; return(searchResultPaged); }
public async Task <SearchResultPaged> FindFightsAsync(SearchQuery searchQuery) { SearchResultPaged searchResultPaged = await FindFightsQueryBuilder(searchQuery.SearchParams, searchQuery.PagingInfo, true); return(searchResultPaged); }