private static bool IsAllowed(RoomContractSet roomSet, DateTime checkInDate, AccommodationBookingSettings settings, IDateTimeProvider dateTimeProvider,
                                      HashSet <AprMode> aprModesToDisallow, HashSet <PassedDeadlineOffersMode> deadlineModesToDisallow)
        {
            if (roomSet.IsAdvancePurchaseRate && aprModesToDisallow.Contains(settings.AprMode))
            {
                return(false);
            }

            if (deadlineModesToDisallow.Contains(settings.PassedDeadlineOffersMode))
            {
                var tomorrow = dateTimeProvider.UtcTomorrow();
                if (checkInDate <= tomorrow)
                {
                    return(false);
                }

                var deadlineDate = roomSet.Deadline.Date;
                if (deadlineDate.HasValue && deadlineDate.Value.Date <= tomorrow)
                {
                    return(false);
                }
            }

            return(true);
        }
 public static bool IsEvaluationAllowed(RoomContractSet roomSet, DateTime checkInDate, AccommodationBookingSettings settings,
                                        IDateTimeProvider dateTimeProvider)
 {
     return(IsAllowed(roomSet,
                      checkInDate,
                      settings,
                      dateTimeProvider,
                      new HashSet <AprMode> {
         AprMode.Hide, AprMode.DisplayOnly
     },
                      new HashSet <PassedDeadlineOffersMode> {
         PassedDeadlineOffersMode.Hide, PassedDeadlineOffersMode.DisplayOnly
     }));
 }