Пример #1
0
            private static Func <HotelServiceInformation, bool> CityPredicate(INeedHotelServicesRequest message)
            {
                if (String.IsNullOrEmpty(message.Location))
                {
                    return(x => true);
                }

                return(x => x.City == message.Location);
            }
        public void Handle(INeedHotelServicesRequest message, AID sender)
        {
            List <HotelServiceInformation> hotelServiceInformations = Services.GetFor(message).ToList();

            SendMessage(
                sender,
                new FoundHotelServicesResponse
            {
                CorrelationId = message.CorrelationId,
                Hotels        = hotelServiceInformations
            });
        }
Пример #3
0
        public static IEnumerable <HotelServiceInformation> GetFor(
            this IList <HotelServiceInformation> services,
            INeedHotelServicesRequest message)
        {
            IEnumerable <HotelServiceInformation> query = services;

            IEnumerable <Func <HotelServiceInformation, bool> > predicates = SearchPredicates.GetFor(message);

            foreach (Func <HotelServiceInformation, bool> predicate in predicates)
            {
                query = query.Where(predicate);
            }

            return(query);
        }
Пример #4
0
            public static IEnumerable <Func <HotelServiceInformation, bool> > GetFor(INeedHotelServicesRequest message)
            {
                yield return(NumberOfStarsPredicate(message));

                yield return(CountryPredicate(message));

                yield return(CityPredicate(message));

                yield return(IntervalOfTimePredicate(message));

                yield return(NumberOfRoomsPredicate(message));

                yield return(NumberOfPlpPerRoomPredicate(message));

                yield return(HotelPricePredicate(message));
            }
Пример #5
0
 private static Func <HotelServiceInformation, bool> HotelPricePredicate(INeedHotelServicesRequest message)
 {
     if (message.HotelPrice.IsNull())
     {
         return(x => true);
     }
     else if (message.HotelPrice.Min == null && message.HotelPrice.Max != null)
     {
         return(x => message.HotelPrice.Max >= x.Price);
     }
     else if (message.HotelPrice.Min != null && message.HotelPrice.Max == null)
     {
         return(x => message.HotelPrice.Min <= x.Price);
     }
     return(x => x.Price <= message.HotelPrice.Max && x.Price >= message.HotelPrice.Min);
 }
Пример #6
0
 private static Func <HotelServiceInformation, bool> IntervalOfTimePredicate(INeedHotelServicesRequest message)
 {
     if (message.IntervalOfDays.IsNull())
     {
         return(x => true);
     }
     else if (message.IntervalOfDays.Min == null && message.IntervalOfDays.Max != null)
     {
         return(x => message.IntervalOfDays.Max >= x.DateStart && message.IntervalOfDays.Max <= x.DateEnd);
     }
     else if (message.IntervalOfDays.Min != null && message.IntervalOfDays.Max == null)
     {
         return(x => message.IntervalOfDays.Min >= x.DateStart && message.IntervalOfDays.Min <= x.DateEnd);
     }
     return(x => message.IntervalOfDays.Min >= x.DateStart && message.IntervalOfDays.Max <= x.DateEnd);
 }
Пример #7
0
 private static Func <HotelServiceInformation, bool> NumberOfStarsPredicate(INeedHotelServicesRequest message)
 {
     if (message.NumberOfStars.IsNull())
     {
         return(x => true);
     }
     else if (message.NumberOfStars.Min == null && message.NumberOfStars.Max != null)
     {
         return(x => message.NumberOfStars.Max >= x.NumberOfStars);
     }
     else if (message.NumberOfStars.Min != null && message.NumberOfStars.Max == null)
     {
         return(x => message.NumberOfStars.Min <= x.NumberOfStars);
     }
     return(x => x.NumberOfStars <= message.NumberOfStars.Max && x.NumberOfStars >= message.NumberOfStars.Min);
 }
Пример #8
0
            private static Func <HotelServiceInformation, bool> NumberOfPlpPerRoomPredicate(INeedHotelServicesRequest message)
            {
                if (message.NumberOfPeoplePerRoom == null)
                {
                    return(x => true);
                }

                return(x => x.NumberOfPeoplePerRoom == message.NumberOfPeoplePerRoom);
            }
Пример #9
0
            private static Func <HotelServiceInformation, bool> NumberOfRoomsPredicate(INeedHotelServicesRequest message)
            {
                if (message.NumberOfRooms == null)
                {
                    return(x => true);
                }

                return(x => x.NumberOfRooms >= message.NumberOfRooms);
            }