public static IParkingStrategy Create(ParkingStrategyType strategyType, int startHours, int startMinutes, int endHours, int endMinutes, double charge, ChargingUnit chargingUnit, IParkingIntervalCalculator parkingIntervalCalculator) { switch (strategyType) { case ParkingStrategyType.LongStay: return(new LongStayParkingStrategy(startHours, startMinutes, endHours, endMinutes, charge, chargingUnit, parkingIntervalCalculator)); case ParkingStrategyType.ShortStay: return(new ShortStayParkingStrategy(startHours, startMinutes, endHours, endMinutes, charge, chargingUnit, parkingIntervalCalculator)); default: return(null); } }
public double CalculateParkingCharge(ParkingStrategyType parkingVisitType, DateTime startTime, DateTime endTime) { var strategy = ParkingStrategies.Where(s => s.Key == parkingVisitType).FirstOrDefault(); return(strategy.Value.CalculateCharge(startTime, endTime)); }