private double GetParkingPrice(ParkingRate rate) { double price = 0.0; switch (rate) { case ParkingRate.StandardRate: price = ParkingRate.StandardRate.GetAttribute <ParkingRateInfoAttribute>().Price; break; case ParkingRate.EarlyBirdRate: price = ParkingRate.EarlyBirdRate.GetAttribute <ParkingRateInfoAttribute>().Price; break; case ParkingRate.NightRate: price = ParkingRate.NightRate.GetAttribute <ParkingRateInfoAttribute>().Price; break; case ParkingRate.WeekendRate: price = ParkingRate.WeekendRate.GetAttribute <ParkingRateInfoAttribute>().Price; break; default: break; } return(price); }
public void AddParkingRate(ParkingRateDto parkingRateDto) { //throw new NotImplementedException(); ParkingRate parkingRate = new ParkingRate() { Hours = parkingRateDto.Hours, IsUsed = 1, Order = parkingRateDto.Order, Rate = parkingRateDto.Rate }; _context.ParkingRates.Add(parkingRate); _context.SaveChanges(); }
public void GivenEntryAndExitTimeShouldReturnRate15WhenDurationIsBetween2And3Hours() { //Arrange var timeSlot = new TimeSlot { EntryTime = new DateTime(2018, 1, 5, 9, 1, 0), ExitTime = new DateTime(2018, 1, 5, 12, 00, 0) }; var expectedParkingRate = new ParkingRate { Amount = 15, Name = StandardRate }; //Act var actualRate = _standardCalculator.Calculate(timeSlot); //Assert Assert.AreEqual(expectedParkingRate.Amount, actualRate.ParkingRate.Amount); }
public void GivenEntryIsOnFridayBeforeMidnightAndExitOnSaturdayMorningParkingRateAmountShouldBeZero() { //Arrange var timeSlot = new TimeSlot { EntryTime = new DateTime(1981, 12, 4, 23, 59, 0), ExitTime = new DateTime(1981, 12, 5, 5, 59, 0) }; var expectedParkingRate = new ParkingRate { Amount = 0.0m, Name = WeekendRate }; //Act var actualRate = _weekendRateCalculator.Calculate(timeSlot); //Assert Assert.AreEqual(expectedParkingRate.Amount, actualRate.ParkingRate.Amount); Assert.AreEqual(expectedParkingRate.Name, actualRate.ParkingRate.Name); }
public void GivenEntryIsOnWeekendTheParkingRateAmountShouldBe10() { //Arrange var timeSlot = new TimeSlot { EntryTime = new DateTime(1981, 12, 5, 0, 1, 0), ExitTime = new DateTime(1981, 12, 6, 23, 59, 0) }; var expectedParkingRate = new ParkingRate { Amount = 10, Name = WeekendRate }; //Act var actualRate = _weekendRateCalculator.Calculate(timeSlot); //Assert Assert.AreEqual(expectedParkingRate.Amount, actualRate.ParkingRate.Amount); Assert.AreEqual(expectedParkingRate.Name, actualRate.ParkingRate.Name); }
public void WhenEntryIsOutSideNightRateOnAWeekdayTheAmountShouldBeZero() { //Arrange var timeSlot = new TimeSlot { EntryTime = new DateTime(1981, 12, 4, 9, 0, 0), ExitTime = new DateTime(1981, 12, 4, 18, 30, 0) }; var expectedParkingRate = new ParkingRate { Amount = 0.0m, Name = NightRate }; //Act var actualRate = _nightRateCalculator.Calculate(timeSlot); //Assert Assert.AreEqual(expectedParkingRate.Amount, actualRate.ParkingRate.Amount); Assert.AreEqual(expectedParkingRate.Name, actualRate.ParkingRate.Name); }
public void WhenEntryIsBetween6PmAndMidnightAndExitIsBefore6AmFollowingDayParkingRateAmountShouldBe650() { //Arrange var timeSlot = new TimeSlot { EntryTime = new DateTime(1981, 12, 3, 18, 0, 0), ExitTime = new DateTime(1981, 12, 4, 5, 59, 0) }; var expectedParkingRate = new ParkingRate { Amount = 6.50m, Name = NightRate }; //Act var actualRate = _nightRateCalculator.Calculate(timeSlot); //Assert Assert.AreEqual(expectedParkingRate.Amount, actualRate.ParkingRate.Amount); Assert.AreEqual(expectedParkingRate.Name, actualRate.ParkingRate.Name); }
public void WhenEntryIsOnWeekendParkingRateAmountShouldBeZero() { //Arrange var timeSlot = new TimeSlot { EntryTime = new DateTime(1981, 12, 5, 6, 0, 0), ExitTime = new DateTime(1981, 12, 5, 15, 30, 0) }; var expectedParkingRate = new ParkingRate { Amount = 0, Name = "Early Bird Rate" }; //Act var actualRate = _earlyBirdCalculator.Calculate(timeSlot); //Assert Assert.AreEqual(expectedParkingRate.Amount, actualRate.ParkingRate.Amount); Assert.AreEqual(expectedParkingRate.Name, actualRate.ParkingRate.Name); }
public void WhenEntryIsBetween6PmAnd12AmAndExitNextDayBefore6AmParkingRateAmountShouldBe13() { //Arrange const string earlyBirdRate = "Early Bird Rate"; var timeSlot = new TimeSlot { EntryTime = new DateTime(2018, 1, 5, 6, 0, 0), ExitTime = new DateTime(2018, 1, 5, 15, 30, 0) }; var expectedParkingRate = new ParkingRate { Amount = 13, Name = earlyBirdRate }; //Act var actualRate = _earlyBirdCalculator.Calculate(timeSlot); //Assert Assert.AreEqual(expectedParkingRate.Amount, actualRate.ParkingRate.Amount); Assert.AreEqual(expectedParkingRate.Name, actualRate.ParkingRate.Name); }
public void WhenEntryIsBetween6PmAnd12AmAndExitNextDayBefore6Am() { //Arrange var timeSlot = new TimeSlot { EntryTime = new DateTime(2018, 1, 5, 6, 0, 0), ExitTime = new DateTime(2018, 1, 5, 15, 30, 0) }; _mockRepository.Setup(x => x.Matches(It.IsAny <ICriteria <RefData> >())).Returns(_refDatas.Where(x => x.RefDataType.Name == EarlyBirdRate).AsQueryable()); var expectedParkingRate = new ParkingRate { Amount = 13, Name = EarlyBirdRate }; //Act var actualRate = _calculator.Calculate(timeSlot); //Assert Assert.AreEqual(expectedParkingRate.Amount, actualRate.ParkingRate.Amount); Assert.AreEqual(expectedParkingRate.Name, actualRate.ParkingRate.Name); }
public void GivenEntryAndExitTimeShouldReturnRate20WhenDurationIsMoreThan3Hours() { //Arrange var timeSlot = new TimeSlot { EntryTime = new DateTime(2018, 1, 5, 9, 1, 0), ExitTime = new DateTime(2018, 1, 5, 15, 0, 0) }; _mockRepository.Setup(x => x.Matches(It.IsAny <ICriteria <RefData> >())).Returns(_refDatas.Where(x => x.RefDataType.Name == StandardRate).AsQueryable()); var expectedParkingRate = new ParkingRate { Amount = 20, Name = StandardRate }; //Act var actualRate = _calculator.Calculate(timeSlot); //Assert Assert.AreEqual(expectedParkingRate.Amount, actualRate.ParkingRate.Amount); Assert.AreEqual(expectedParkingRate.Name, actualRate.ParkingRate.Name); }
public void WhenEntryIsBetween6AmAnd9AmAndExitIsBetween330PmAnd11Pm() { //Arrange var timeSlot = new TimeSlot { EntryTime = new DateTime(2018, 1, 5, 6, 0, 0), ExitTime = new DateTime(2018, 1, 5, 15, 30, 0) }; _mockRefDataBuilder.Setup(x => x.Build(EarlyBirdRate)) .Returns(_refDatas.Where(x => x.RefDataType.Name == EarlyBirdRate)); var expectedParkingRate = new ParkingRate { Amount = 13, Name = EarlyBirdRate }; //Act var actualRate = _calculator.Calculate(timeSlot); //Assert Assert.AreEqual(expectedParkingRate.Amount, actualRate.ParkingRate.Amount); Assert.AreEqual(expectedParkingRate.Name, actualRate.ParkingRate.Name); }
public void GivenEntryIsOnWeekendTheParkingRateAmountShouldBe10() { //Arrange var timeSlot = new TimeSlot { EntryTime = new DateTime(1981, 12, 5, 0, 1, 0), ExitTime = new DateTime(1981, 12, 6, 23, 59, 0) }; _mockRefDataBuilder.Setup(x => x.Build(WeekendRate)) .Returns(_refDatas.Where(x => x.RefDataType.Name == WeekendRate)); var expectedParkingRate = new ParkingRate { Amount = 10, Name = WeekendRate }; //Act var actualRate = _calculator.Calculate(timeSlot); //Assert Assert.AreEqual(expectedParkingRate.Amount, actualRate.ParkingRate.Amount); Assert.AreEqual(expectedParkingRate.Name, actualRate.ParkingRate.Name); }
public void GivenEntryIsBetween6PmAndMidnightAndExitIsBefore6AmFollowingDayParkingRateAmountShouldBe650() { //Arrange var timeSlot = new TimeSlot { EntryTime = new DateTime(1981, 12, 3, 18, 0, 0), ExitTime = new DateTime(1981, 12, 4, 5, 59, 0) }; _mockRefDataBuilder.Setup(x => x.Build(NightRate)) .Returns(_refDatas.Where(x => x.RefDataType.Name == NightRate)); var expectedParkingRate = new ParkingRate { Amount = 6.50m, Name = NightRate }; //Act var actualRate = _calculator.Calculate(timeSlot); //Assert Assert.AreEqual(expectedParkingRate.Amount, actualRate.ParkingRate.Amount); Assert.AreEqual(expectedParkingRate.Name, actualRate.ParkingRate.Name); }