Example #1
0
        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));
        }
Example #2
0
        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));
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }