public decimal CalculateFare(FareCalculatorDataModel model)
 {
     return(
         EntryFee()
         + NewYorkTax()
         + PeakTimeSurcharge(model.Date, model.Time)
         + NightTimeSurcharge(model.Time)
         + PriceFromMinutesAboveSixMph(model.MinutesAboveSixMph)
         + PriceFromDistanceUnitsBelowSixMph(model.DistanceUnitsBelowSixMph)
         );
 }
Example #2
0
        //[Route("CalculateFare")]
        public JsonResult CalculateFare(FareCalculatorViewModel model)
        {
            var calculator = new FareCalculatorService();
            //Call service method with Model

            var dataModel = new FareCalculatorDataModel
            {
                Date = model.Date,
                Time = model.Time,
                DistanceUnitsBelowSixMph = model.DistanceUnitsBelowSixMph,
                MinutesAboveSixMph       = model.MinutesAboveSixMph,
            };

            return(Json(new { totalFare = calculator.CalculateFare(dataModel) }, JsonRequestBehavior.AllowGet));
        }
        public void CalculateFareTest()
        {
            //Arrange
            FareCalculatorService   calculator = new FareCalculatorService();
            FareCalculatorDataModel model      = new FareCalculatorDataModel
            {
                Date = new DateTime(2018, 9, 20, 16, 0, 0), // Thursday
                Time = new DateTime(2018, 9, 20, 16, 0, 0), // Peak Time
                DistanceUnitsBelowSixMph = 10,
                MinutesAboveSixMph       = 5,
            };

            //Act
            var fare = calculator.CalculateFare(model);

            //Assert
            Assert.AreEqual((decimal)fare, (decimal)9.75);
        }