public void Compare_If_Is_Cheaper_Than_Another_Hotel_In_Weekend_Day_For_Regular_Costumer()
        {
            HotelSearchCriteria hotelSearchCriteria = CreateHotelSearchCriteria(CostumerType.Regular, new DateTime(2019, 09, 14), new DateTime(2019, 09, 15));

            bool bridgewoodIsCheaperThanLakewood = bridgewood.IsCheaperThan(lakewood, hotelSearchCriteria);

            Assert.IsTrue(bridgewoodIsCheaperThanLakewood);
        }
        public void Compare_If_Is_Cheaper_Than_Another_Hotel_In_Week_Day_For_Reward_Costumer()
        {
            HotelSearchCriteria hotelSearchCriteria = CreateHotelSearchCriteria(CostumerType.Reward, new DateTime(2019, 09, 09), new DateTime(2019, 09, 13));

            bool lakewoodIsCheaperThanRidgewood = lakewood.IsCheaperThan(ridgewood, hotelSearchCriteria);

            Assert.IsTrue(lakewoodIsCheaperThanRidgewood);
        }
Esempio n. 3
0
        public void Find_The_Cheapest_Hotel_For_Week_Day_To_Regular_Costumer()
        {
            HotelSearchCriteria hotelSearchCriteria = CreateHotelSearchCriteria(CostumerType.Regular, new DateTime(2019, 09, 09), new DateTime(2019, 09, 13));

            string hotel = findTheCheapestHotel.Do(hotelSearchCriteria);

            Assert.AreEqual("Lakewood", hotel);
        }
        public void Compare_If_Is_Cheaper_Than_Another_Hotel_Considering_The_Hotel_Rating_When_There_Is_A_Tie_On_Rate()
        {
            HotelSearchCriteria hotelSearchCriteria = CreateHotelSearchCriteria(CostumerType.Reward, new DateTime(2019, 09, 14), new DateTime(2019, 09, 15));

            bool ridgewoodIsCheaperThanSeawood = ridgewood.IsCheaperThan(seawood, hotelSearchCriteria);

            Assert.IsTrue(ridgewoodIsCheaperThanSeawood);
        }
Esempio n. 5
0
        public void Find_The_Cheapest_Hotel_For_Weekend_Day_To_Reward_Costumer()
        {
            HotelSearchCriteria hotelSearchCriteria = CreateHotelSearchCriteria(CostumerType.Reward, new DateTime(2019, 09, 14), new DateTime(2019, 09, 15));

            string hotel = findTheCheapestHotel.Do(hotelSearchCriteria);

            Assert.AreEqual("Ridgewood", hotel);
        }
        public void Create_Itself_From_Serialized_Of_Reward_Costumer()
        {
            string serializedCriteria = "Reward: 13Sep2019(Fri),14Sep2019(Sat)";

            HotelSearchCriteria hotelSearchCriteria = HotelSearchCriteria.CreateFromSerializedCriteria(serializedCriteria);

            Assert.AreEqual(CostumerType.Reward, hotelSearchCriteria.CostumerType);
            Assert.AreEqual(new DateTime(2019, 09, 13), hotelSearchCriteria.Dates.ElementAt(0));
            Assert.AreEqual(new DateTime(2019, 09, 14), hotelSearchCriteria.Dates.ElementAt(1));
        }
        public async Task TestNoHotelsReturnedWhenNonMatchingCriteria()
        {
            HotelSearchCriteria criteria = new HotelSearchCriteria()
            {
                Rating = "1", Name = "zXRT"
            };

            ActionResult <IEnumerable <Hotel> > response = await _controller.SearchHotels(criteria);

            var result = response.Result as OkObjectResult;
            var data   = result.Value as IEnumerable <Hotel>;

            Assert.IsNotNull(result);
            Assert.AreEqual(result.StatusCode, (int)HttpStatusCode.OK);
            Assert.AreEqual(data.Count(), 0);
        }
Esempio n. 8
0
        public async Task <ActionResult <IEnumerable <Hotel> > > SearchHotels([FromBody] HotelSearchCriteria criteria)
        {
            var data = await _hotelsRepository.getHotels();

            if (HotelSearchCriteria.HasCriteria(criteria))
            {
                Func <HotelDto, bool> nameCriteria = e => string.IsNullOrWhiteSpace(criteria.Name) ||
                                                     (!string.IsNullOrWhiteSpace(e.name) && e.name.ToLower().Contains(criteria.Name.ToLower()));
                Func <HotelDto, bool> ratingCriteria = e => !criteria.RatingFilter.HasValue || (criteria.RatingFilter.Value == e.rating);
                data = data.Where(r => nameCriteria(r) && ratingCriteria(r));
            }

            var hotels = data.Select(r => this._mapper.Map <Hotel>(r)).ToList();

            return(Ok(hotels));
        }
        public async Task TestGetFilterMatchingRatingHotels()
        {
            HotelSearchCriteria criteria = new HotelSearchCriteria()
            {
                Rating = "1"
            };

            ActionResult <IEnumerable <Hotel> > response = await _controller.SearchHotels(criteria);

            var result = response.Result as OkObjectResult;
            var data   = result.Value as IEnumerable <Hotel>;

            Assert.IsNotNull(result);
            Assert.AreEqual(result.StatusCode, (int)HttpStatusCode.OK);
            var matching = Hotels.Where(r => r.rating == float.Parse(criteria.Rating)).ToList();

            Assert.AreEqual(data.Count(), matching.Count());
        }
        public async Task TestGetFilterMatchingNamedHotels()
        {
            HotelSearchCriteria criteria = new HotelSearchCriteria()
            {
                Name = "N"
            };

            ActionResult <IEnumerable <Hotel> > response = await _controller.SearchHotels(criteria);

            var result = response.Result as OkObjectResult;
            var data   = result.Value as IEnumerable <Hotel>;

            Assert.IsNotNull(result);
            Assert.AreEqual(result.StatusCode, (int)HttpStatusCode.OK);
            var matching = Hotels.Where(r => r.name.ToLower().Contains(criteria.Name.ToLower())).ToList();

            Assert.AreEqual(data.Count(), matching.Count());
        }
        public async Task <List <Hotel> > GetHotels(HotelSearchCriteria hotelSearchCriteria)
        {
            var request = new HttpRequestMessage(HttpMethod.Get, $"http://localhost:62564/api/hotel/search" +
                                                 $"?Destination={hotelSearchCriteria.Destination}&Children={hotelSearchCriteria.Children}" +
                                                 $"&Adults={hotelSearchCriteria.Adults}");

            request.Headers.Add("Accept", "application/vnd.github.v3+json");
            request.Headers.Add("User-Agent", "PackageSearch");

            HttpResponseMessage response = await _httpClient.SendAsync(request);

            if (response.IsSuccessStatusCode)
            {
                return(JsonConvert.DeserializeObject <List <Hotel> >(await response.Content.ReadAsStringAsync()));
            }
            else
            {
                throw new Exception("no hotels found for " + hotelSearchCriteria.ToString());
            }
            //_httpClient.
        }
Esempio n. 12
0
        public async Task <IEnumerable <HotelDto> > getHotelsByCriteria(HotelSearchCriteria criteria)
        {
            if (HotelSearchCriteria.HasCriteria(criteria))
            {
                IEnumerable <HotelDto> data = await LoadHotels();

                if (!string.IsNullOrWhiteSpace(criteria.Name))
                {
                    data = data.Where(r => !string.IsNullOrWhiteSpace(r.name) && r.name.ToLower().Contains(criteria.Name.ToLower()));
                }

                if (criteria.RatingFilter.HasValue)
                {
                    data = data.Where(r => r.rating == criteria.RatingFilter);
                }

                return(await Task.FromResult(data));
            }
            else
            {
                return(await LoadHotels());
            }
        }
Esempio n. 13
0
        public async Task <List <Package> > GetPackages(PackageSearchCriteria packageSearch)
        {
            HotelSearchCriteria hsc = new HotelSearchCriteria()
            {
                Adults = packageSearch.Adults, Children = packageSearch.Children, Destination = packageSearch.Destination
            };
            FlightSearchCriteria fsc = new FlightSearchCriteria()
            {
                Origin = packageSearch.Origin, Destination = packageSearch.Destination, Adults = packageSearch.Adults, Children = packageSearch.Children, DepartureDate = packageSearch.DepartureDate.Value.Date, ArrivalDate = packageSearch.ArrivalDate.Value.Date
            };

            var hotels = await _httpClientService.GetHotels(hsc);

            var flights = await _httpClientService.GetFlights(fsc);

            var packages = hotels
                           .SelectMany(hotel => flights, (hotel, flight) => new Package {
                Flight = flight, Hotel = hotel
            })
                           .ToList();

            return(packages);
        }
        public string Do(string serializedCriteria)
        {
            IHotelSearchCriteria hotelSearchCriteria = HotelSearchCriteria.CreateFromSerializedCriteria(serializedCriteria);

            return(FindTheCheapestHotel.Do(hotelSearchCriteria));
        }
 public string FindTheCheapestHotel(string criteria)
 {
     return(HotelService.FindTheCheapestHotel(HotelSearchCriteria.CreateFromSerializedCriteria(criteria)));
 }