Esempio n. 1
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 8
0
        public async Task <SearchResultPaged> FindFightsAsync(SearchQuery searchQuery)
        {
            SearchResultPaged searchResultPaged = await FindFightsQueryBuilder(searchQuery.SearchParams, searchQuery.PagingInfo, true);

            return(searchResultPaged);
        }