public InternalSlimRateDetails(int roomId, int accommodationId, MoneyAmount totalAmount, double discount, BoardBasisTypes boardBasis, List <InternalSlimCancellationPolicies> cancellationPolicies, RoomTypes roomType, RoomOccupationRequest occupationRequest)
 {
     RoomId               = roomId;
     AccommodationId      = accommodationId;
     TotalAmount          = totalAmount;
     Discount             = discount;
     BoardBasis           = boardBasis;
     CancellationPolicies = cancellationPolicies;
     RoomType             = roomType;
     OccupationRequest    = occupationRequest;
 }
示例#2
0
 public RateDetails(RoomOccupationRequest occupationRequest, Room room, RoomTypes roomType, PaymentDetails paymentDetails, List <CancellationPolicyDetails> cancellationPolicies, string mealPlan,
                    BoardBasisTypes boardBasis, List <TaxDetails> taxes, string description)
 {
     Room                 = room;
     RoomType             = roomType;
     PaymentDetails       = paymentDetails;
     MealPlan             = mealPlan;
     BoardBasis           = boardBasis;
     CancellationPolicies = cancellationPolicies;
     Taxes                = taxes ?? new List <TaxDetails>();
     Description          = description;
     OccupationRequest    = occupationRequest;
 }
        private bool IsRoomCompatibleWithOccupancyConfiguration(RoomOccupationRequest occupationRequestItem,
                                                                OccupancyConfiguration occupancyConfiguration, OccupancyDefinition occupancyDefinition)
        {
            var infantsNumber   = 0;
            var childrenNumber  = 0;
            var teenagersNumber = 0;
            var adultsNumber    = occupationRequestItem.AdultsNumber;

            foreach (var childrenAge in occupationRequestItem.ChildrenAges)
            {
                if (occupancyDefinition.Infant != null &&
                    occupancyDefinition.Infant.LowerBound <= childrenAge &&
                    childrenAge <= occupancyDefinition.Infant.UpperBound)
                {
                    infantsNumber++;
                    continue;
                }

                if (occupancyDefinition.Child != null &&
                    occupancyDefinition.Child.LowerBound <= childrenAge &&
                    childrenAge <= occupancyDefinition.Child.UpperBound)
                {
                    childrenNumber++;
                    continue;
                }

                if (occupancyDefinition.Teenager != null &&
                    occupancyDefinition.Teenager.LowerBound <= childrenAge &&
                    childrenAge <= occupancyDefinition.Teenager.UpperBound)
                {
                    teenagersNumber++;
                    continue;
                }

                if (occupancyDefinition.Adult.LowerBound <= childrenAge)
                {
                    adultsNumber++;
                }
            }

            return(infantsNumber <= occupancyConfiguration.Infants &&
                   childrenNumber <= occupancyConfiguration.Children &&
                   teenagersNumber <= occupancyConfiguration.Teenagers &&
                   adultsNumber <= occupancyConfiguration.Adults);
        }
 public List <RateDetails> GetAvailableRates(RoomOccupationRequest occupationRequest, List <Room> rooms, DateTime checkInDate, DateTime checkOutDate, string languageCode)
 => rooms.Select(room =>
 private bool IsRoomCompatibleWithOccupancyRequestItem(Room room, RoomOccupationRequest occupationRequestItem)
 => room.OccupancyConfigurations.Any(occupancyConfiguration
                                     => IsRoomCompatibleWithOccupancyConfiguration(occupationRequestItem, occupancyConfiguration, room.Accommodation.OccupancyDefinition));