public async Task <List <HotelResponse> > Handle(SearchHotelsQuery request, CancellationToken cancellationToken) { var hotels = await _hotelRepository.SearchHotels(request); return(hotels == null ? null : _mapper.Map(hotels)); }
public async Task <IActionResult> SearchHotels(HotelRequest request) { var query = new SearchHotelsQuery(request.HotelSearch); var result = await _mediatr.Send(query, new CancellationToken()); return(result != null ? (IActionResult)Ok(result) : NotFound(new { Message = $"No hotels were found." })); }
public async Task <List <Hotel> > SearchHotels(SearchHotelsQuery hotelsQuery) { var client = _elasticSearchClient.CreateElasticClient(_elasticsearchConfig.Value.Url); var hotelsResponse = await client.SearchAsync <Hotel>(hot => hot .Index(_elasticsearchConfig.Value.HotelIndex) .Size(100) .Query(q => q .QueryString(qs => qs.Query($"{hotelsQuery.AirlineSearch.ToLower()}*").AnalyzeWildcard(true))) ); return(hotelsResponse.Documents?.Select(hot => new Hotel { Id = hot.Id, Name = hot.Name, Code = hot.Code, Country = hot.Country }).ToList()); }