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)); }
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); }
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); }
public IQueryable <DiarySearchResult> AddOrder(IQueryable <DiarySearchResult> currentQuery, SearchDiaryRequest searchRequest) { return(currentQuery.OrderByDescending(diary => diary.Diary.CreateDate)); }
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); } }
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); } }
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))); }
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)); }
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()); }