Пример #1
0
        public double ApplyRule(cabRide cabRide, string loggedInUserName)
        {
            double dummyHolder;

            var newYorkStateSurcharge = double.TryParse(_settingService.GetSettingValueBySettingKey("newYorkStateSurcharge"), out dummyHolder) ? dummyHolder : .50;

            return(newYorkStateSurcharge);
        }
Пример #2
0
        public double ApplyRule(cabRide cabRide, string loggedInUserName)
        {
            double dummyHolder;

            var peakHourSurcharge = double.TryParse(_settingService.GetSettingValueBySettingKey("peakHourSurcharge"), out dummyHolder) ? dummyHolder : 1;

            return(peakHourSurcharge);
        }
Пример #3
0
        public bool IsMatch(cabRide cabRide, string loggedInUserName)
        {
            if (cabRide.minutesAboveSixMph.HasValue)
            {
                return(true);
            }

            return(false);
        }
Пример #4
0
        public double ApplyRule(cabRide cabRide, string loggedInUserName)
        {
            double dummyHolder;

            var fareUnit = double.TryParse(_settingService.GetSettingValueBySettingKey("fareUnit"), out dummyHolder) ? dummyHolder : 0.35;

            var result = cabRide.minutesAboveSixMph * fareUnit;

            return(result.Value);
        }
Пример #5
0
        public bool IsMatch(cabRide cabRide, string loggedInUserName)
        {
            if (cabRide.dateTime.TimeOfDay.Hours > 20 &&
                cabRide.dateTime.TimeOfDay.Hours < 6)
            {
                return(true);
            }

            return(false);
        }
Пример #6
0
        public bool IsMatch(cabRide cabRide, string loggedInUserName)
        {
            var state = _settingService.GetSettingValueBySettingKey("state") ?? "NY";

            if (state == "NY" || state == "New York")
            {
                return(true);
            }

            return(false);
        }
Пример #7
0
        public IHttpActionResult GetFare(cabRide cabRide)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var result = _cabRideService.GetFare(cabRide, User?.Identity?.Name);

            return(Ok(result));
        }
Пример #8
0
        public bool IsMatch(cabRide cabRide, string loggedInUserName)
        {
            if (cabRide.dateTime.DayOfWeek != DayOfWeek.Saturday &&
                cabRide.dateTime.DayOfWeek != DayOfWeek.Sunday &&
                cabRide.dateTime.TimeOfDay.Hours > 16 &&
                cabRide.dateTime.TimeOfDay.Hours < 20)
            {
                return(true);
            }

            return(false);
        }
Пример #9
0
        public double ApplyRules(cabRide cabRide, string loggedInUserName)
        {
            // Use strategy pattern to implement fare calculations rules.
            var result = _meteredStrategyRules.Sum(r => r.IsMatch(cabRide, loggedInUserName) ? r.ApplyRule(cabRide, loggedInUserName) : 0);

            // Get the fare upon entry and add it to te calculated sum.
            double dummyHolder;

            var fareUponEntry = double.TryParse(_settingService.GetSettingValueBySettingKey("fareUponEntry"), out dummyHolder) ? dummyHolder : 3;

            result = result + fareUponEntry;

            return(result);
        }
Пример #10
0
        public void ReturnTheCorrectFareIfInNewYorkAndOnlyEnteredCab()
        {
            // Arrange.
            var container = IoC.Initialize();

            var meteredRateStrategyService = container.GetInstance <IMeteredRateStrategyService>();

            var cabRide = new cabRide();

            // Act.
            var result = meteredRateStrategyService.ApplyRules(cabRide, "User1");

            // Assert.
            Assert.IsTrue(result == 3.5);
        }
Пример #11
0
        public void ReturnTheCorrectFareForGuggScenario()
        {
            // Arrange.
            var container = IoC.Initialize();

            var meteredRateStrategyService = container.GetInstance <IMeteredRateStrategyService>();

            var cabRide = new cabRide()
            {
                dateTime           = DateTime.Parse("10-8-2010 5:30pm"),
                milesBelowSixMph   = 2,
                minutesAboveSixMph = 5
            };

            // Act.
            var result = meteredRateStrategyService.ApplyRules(cabRide, "User1");

            // Assert.
            Assert.IsTrue(result == 9.75);
        }