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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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);
        }