public async Task <IActionResult> SearchClassifiedAdForUser(SearchQueryParametarsDto searchQueryParametars, int?userId = null) { if (userId != null) { if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { return(Unauthorized()); } } var classifiedAds = await _repo.SearchClassifiedAds(searchQueryParametars, userId); var classifiedAdsToReturn = _mapper.Map <IEnumerable <ClassifiedAdsDto> >(classifiedAds); return(Ok(classifiedAdsToReturn)); }
public async Task <IActionResult> SearchClassifiedAdForUser(SearchQueryParametarsDto searchQueryParametars, string?userId = null) { if (userId != null) { var user = await _userManager.Users.SingleOrDefaultAsync(x => x.Id == userId); if (user == null) { return(Unauthorized()); } } var classifiedAds = await _repo.SearchClassifiedAds(searchQueryParametars, userId); if (userId != null) { var classifiedAdsToReturnForUser = classifiedAds.Select(ca => new { Id = ca.Id, Title = ca.Title, Description = ca.Description, City = ca.City, Age = ca.DateAdded.CalculateAge(), PhotoUrl = ca.Photos.FirstOrDefault(p => p.IsMain).Url, AppUserId = ca.AppUserId, IsLiked = ca.LikersUsers.Where(lu => lu.LikerUserId == userId).FirstOrDefault() != null ? true : false }); /*var classifiedAdsToReturn = _mapper.Map<IEnumerable<ClassifiedAdsDto>>(classifiedAds);*/ return(Ok(classifiedAdsToReturnForUser)); } var classifiedAdsToReturn = _mapper.Map <IEnumerable <ClassifiedAdsDto> >(classifiedAds); return(Ok(classifiedAdsToReturn)); }
public async Task <IEnumerable <ClassifiedAds> > SearchClassifiedAds(SearchQueryParametarsDto searchQueryParametars, int?userId) { char[] delimiterChars = { ' ', ',', '.', ':', '\t' }; List <string> queryWords = searchQueryParametars.Query.Split(delimiterChars).ToList(); var ca = await (from cal in _context.ClassifiedAds where cal.City == searchQueryParametars.City && cal.Category == searchQueryParametars.Category && (queryWords.Any(str => cal.Title.Contains(str, StringComparison.OrdinalIgnoreCase)) || queryWords.Any(str => cal.Description.Contains(str, StringComparison.OrdinalIgnoreCase))) select cal ).ToListAsync(); if (userId != null) { var caToReturn = ca.Where(cads => cads.UserId != userId); return(caToReturn); } return(ca); }
public async Task <IEnumerable <ClassifiedAds> > SearchClassifiedAds(SearchQueryParametarsDto searchQueryParametars, string?userId) { char[] delimiterChars = { ' ', ',', '.', ':', '\t' }; List <string> queryWords = searchQueryParametars.Query.Split(delimiterChars).ToList(); List <ClassifiedAds> classifiedAdsFromSearch = new List <ClassifiedAds>(); if (searchQueryParametars.City.Equals("Сите градови") && searchQueryParametars.Category.Equals("Сите категории")) { classifiedAdsFromSearch = (from ca in _context.ClassifiedAds.AsEnumerable() where ca.DateAdded.CalculateValidTo() // && ca.City == searchQueryParametars.City // && ca.Category == searchQueryParametars.Category && (queryWords.Any(str => ca.Title.Contains(str, StringComparison.OrdinalIgnoreCase)) || queryWords.Any(str => ca.Description.Contains(str, StringComparison.OrdinalIgnoreCase))) select ca ).ToList(); } else if (searchQueryParametars.City.Equals("Сите градови") && !searchQueryParametars.Category.Equals("Сите категории")) { classifiedAdsFromSearch = (from ca in _context.ClassifiedAds.AsEnumerable() where ca.DateAdded.CalculateValidTo() // && ca.City == searchQueryParametars.City && ca.Category == searchQueryParametars.Category && (queryWords.Any(str => ca.Title.Contains(str, StringComparison.OrdinalIgnoreCase)) || queryWords.Any(str => ca.Description.Contains(str, StringComparison.OrdinalIgnoreCase))) select ca ).ToList(); } else if (!searchQueryParametars.City.Equals("Сите градови") && searchQueryParametars.Category.Equals("Сите категории")) { classifiedAdsFromSearch = (from ca in _context.ClassifiedAds.AsEnumerable() where ca.DateAdded.CalculateValidTo() && ca.City == searchQueryParametars.City // && ca.Category == searchQueryParametars.Category && (queryWords.Any(str => ca.Title.Contains(str, StringComparison.OrdinalIgnoreCase)) || queryWords.Any(str => ca.Description.Contains(str, StringComparison.OrdinalIgnoreCase))) select ca ).ToList(); } else if (!searchQueryParametars.City.Equals("Сите градови") && !searchQueryParametars.Category.Equals("Сите категории")) { classifiedAdsFromSearch = (from ca in _context.ClassifiedAds.AsEnumerable() where ca.DateAdded.CalculateValidTo() && ca.City == searchQueryParametars.City && ca.Category == searchQueryParametars.Category && (queryWords.Any(str => ca.Title.Contains(str, StringComparison.OrdinalIgnoreCase)) || queryWords.Any(str => ca.Description.Contains(str, StringComparison.OrdinalIgnoreCase))) select ca ).ToList(); } if (userId != null) { var classifiedAdsToReturn = classifiedAdsFromSearch.Where(cads => cads.AppUserId != userId); return(classifiedAdsToReturn); } classifiedAdsFromSearch = classifiedAdsFromSearch.Where(ca => ca.Status == "Approved").OrderByDescending(ca => ca.DateAdded).ToList(); return(classifiedAdsFromSearch); }