Exemple #1
0
        public IHttpActionResult SearchDiary(SearchDiaryRequest searchDiaryRequest)
        {
            DiaryGetter     diaryGetter    = new DiaryGetter();
            List <DiaryDto> matchedDiaries = diaryGetter.SearchDiary(searchDiaryRequest);

            if (matchedDiaries == null)
            {
                matchedDiaries = new List <DiaryDto>();
            }

            return(Ok(matchedDiaries));
        }
Exemple #2
0
        public List <DiaryDto> SearchDiary(SearchDiaryRequest searchDiaryRequest)
        {
            List <DiarySearchResult> matchedDiaries = _diarySearcher.SearchDiaries(searchDiaryRequest);
            List <DiaryDto>          diaryDtos      = matchedDiaries.Select(matchDiary =>
            {
                DiaryDto diaryDto = Mapper.Map <DiaryDto>(matchDiary.Diary);

                diaryDto.Writer = Mapper.Map <WriterDto>(matchDiary.Writer);
                SetDiaryDtoLocations(diaryDto, matchDiary.Countries.ToList(), matchDiary.Cities.ToList());
                SetDiaryStatistics(diaryDto);
                return(diaryDto);
            }).ToList();

            return(diaryDtos);
        }
Exemple #3
0
        public List <DiarySearchResult> SearchDiaries(SearchDiaryRequest searchDiaryRequest)
        {
            List <DiarySearchResult> matchedDiaries;

            using (var dbContext = new TripMeContext())
            {
                IQueryable <DiarySearchResult> searchQuery = BuildSearchQuery(dbContext, searchDiaryRequest.SearchParameters);

                searchQuery    = AddQueryOrdering(searchQuery, searchDiaryRequest);
                matchedDiaries = ExecuteSearch(searchQuery, searchDiaryRequest.ResultLimit);
                matchedDiaries = AddResultOrdering(matchedDiaries, searchDiaryRequest);
            }

            return(matchedDiaries);
        }
Exemple #4
0
 public IQueryable <DiarySearchResult> AddOrder(IQueryable <DiarySearchResult> currentQuery, SearchDiaryRequest searchRequest)
 {
     return(currentQuery.OrderByDescending(diary => diary.Diary.CreateDate));
 }
Exemple #5
0
        public static IPostOrderFilter GetPostOrderFilter(OrderParameter orderParameter, SearchDiaryRequest searchRequest)
        {
            switch (orderParameter)
            {
            case OrderParameter.MOST_VIEWED:
                if (searchRequest.SearchParameters.Count > 0)
                {
                    return(new PostMostViewedOrderFilter());
                }
                return(null);

            default:
                return(null);
            }
        }
Exemple #6
0
        public static IPreOrderFilter GetPreOrderFilter(OrderParameter orderParameter, SearchDiaryRequest searchRequest)
        {
            switch (orderParameter)
            {
            case OrderParameter.MOST_RECENT:
                return(new MostRecentFilter());

            case OrderParameter.MOST_VIEWED:
                if (searchRequest.SearchParameters.Count == 0)
                {
                    return(new PreMostViewedOrderFilter());
                }
                return(null);

            default:
                return(null);
            }
        }
Exemple #7
0
        public IQueryable <DiarySearchResult> AddOrder(IQueryable <DiarySearchResult> currentQuery, SearchDiaryRequest searchRequest)
        {
            List <long> mostViewdDiaries = _diaryStatisticRepository.GetMostViewedDiariesId(searchRequest.ResultLimit);

            return(currentQuery.Where(x => mostViewdDiaries.Contains(x.Diary.Id)));
        }
Exemple #8
0
        private IQueryable <DiarySearchResult> AddQueryOrdering(IQueryable <DiarySearchResult> searchQuery, SearchDiaryRequest searchDiaryRequest)
        {
            IPreOrderFilter orderFilter = OrderFilterFactory.GetPreOrderFilter(searchDiaryRequest.OrderBy, searchDiaryRequest);

            if (orderFilter == null)
            {
                return(searchQuery);
            }

            return(orderFilter.AddOrder(searchQuery, searchDiaryRequest));
        }
Exemple #9
0
        private List <DiarySearchResult> AddResultOrdering(List <DiarySearchResult> matchedDiaries, SearchDiaryRequest searchDiaryRequest)
        {
            IPostOrderFilter orderFilter = OrderFilterFactory.GetPostOrderFilter(searchDiaryRequest.OrderBy, searchDiaryRequest);

            if (orderFilter == null)
            {
                return(matchedDiaries);
            }

            return(orderFilter.AddOrder(matchedDiaries).ToList());
        }