public async Task <List <AdvertDto> > ListMyLatestAdvertisementsAsync(SearchAdvertDto dto) { var query = DbContext.Adverts.Include(a => a.Advertiser).Where(a => a.AdvertiserId == KutyAppContext.CurrentUser.Id); if (!string.IsNullOrWhiteSpace(dto.KeyWord)) { var words = dto.KeyWord.Split(' '); query = query.Where(a => words.Any(w => a.Title.Contains(w, StringComparison.CurrentCultureIgnoreCase) || a.Description.Contains(w, StringComparison.CurrentCultureIgnoreCase))); } var adverts = await query.Include(a => a.Advertiser).OrderByDescending(a => a.CreateDate).ToListAsync(); if (!string.IsNullOrWhiteSpace(dto.KeyWord)) { adverts = adverts.OrderByDescending(a => dto.KeyWord.Split(' ').Count(w => a.Title.Contains(w, StringComparison.CurrentCultureIgnoreCase) || a.Description.Contains(w, StringComparison.CurrentCultureIgnoreCase))) .ThenByDescending(a => a.CreateDate) .ToList(); } var mappedAdverts = Mapper.Map <List <AdvertDto> >(adverts); return(mappedAdverts); }
public async Task <ActionResult <List <AdvertDto> > > ListMyLatestAdvertisements(SearchAdvertDto dto) => Result(await AdvertManager.ListMyLatestAdvertisementsAsync(dto));