public async Task <IActionResult> SearchByFilter([FromQuery] FilterInputDTO filterInputDTO)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }
            var reasult = await searchService.SearchByFilter(filterInputDTO);

            return(Ok(reasult));
        }
Beispiel #2
0
        public async Task <List <FilterOutputDetailDTO> > SearchByFilter(FilterInputDTO filterInputDTO)
        {
            var result  = new List <FilterOutputDetailDTO>();
            var city    = new List <FilterOutputDetailDTO>();
            var country = new List <FilterOutputDetailDTO>();

            if (filterInputDTO.CityId != null)
            {
                city = TuristPlaceRepository.GetQuery()
                       .Include(x => x.City)
                       .Include(x => x.Comments)
                       .Include(x => x.Rates)
                       .Where(y => y.City.Id == filterInputDTO.CityId)
                       .Select(p => mapper.Map <FilterOutputDetailDTO>(p))
                       .ToList();
            }
            if (filterInputDTO.CountryId != null)
            {
                country = TuristPlaceRepository.GetQuery()
                          .Include(x => x.Country)
                          .Include(x => x.Comments)
                          .Include(x => x.Rates)
                          .Where(y => y.Country.Id == filterInputDTO.CountryId)
                          .Select(p => mapper.Map <FilterOutputDetailDTO>(p))
                          .ToList();
            }
            if (country.Count != 0)
            {
                if (city.Count != 0)
                {
                    foreach (var item in country)
                    {
                        foreach (var item2  in city)
                        {
                            if (item.id == item2.id)
                            {
                                result.Add(item);
                            }
                        }
                    }
                }
                else
                {
                    result = country;
                }
            }
            else
            if (city.Count != 0)
            {
                result = city;
            }

            return(result);
        }