public static bool IsMatch(this FlatRatePriceModel rate, ParkingTimeModel parkingTimes) { var entryMatch = rate.EntryTimeRange.MatchesHourRange(parkingTimes.Entry); var exitMatch = rate.ExitTimeRange.MatchesHourRange(parkingTimes.Exit); var exitRuleMatch = rate.PassesExitTimeRule(parkingTimes); return(entryMatch && exitMatch && exitRuleMatch); }
public static bool PassesExitTimeRule(this FlatRatePriceModel rate, ParkingTimeModel parkingTimes) { switch (rate.ExitTimeRule) { case TimeRangeRule.SAMEDAY: return(parkingTimes.Entry.Date == parkingTimes.Exit.Date); case TimeRangeRule.SAMEORNEXTDAY: return(parkingTimes.Entry.Date == parkingTimes.Exit.Date || parkingTimes.Entry.AddDays(1).Date == parkingTimes.Exit.Date); default: return(true); } }