Exemple #1
0
        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());
        }