示例#1
0
        public void ValidateAutoRentalTotalCosts(IAutoRentalReservation reservation)
        {
            var pricePerDay = reservation.PricePerDay;

            if (pricePerDay < 0)
            {
                throw new AutoRentalCostException();
            }
        }
示例#2
0
        public void ValidateAutoRentalUninsuredDriver(IAutoRentalReservation reservation)
        {
            var autoInsurance = reservation.AutoInsurance;

            if (autoInsurance == null)
            {
                throw new AutoRentalUninsuredDriverException();
            }
        }
示例#3
0
        public void ValidateAutoRentalInsuranceExpiry(IAutoRentalReservation reservation)
        {
            var insurance = reservation.AutoInsurance;

            if (insurance.Expiration < DateTime.Now)
            {
                throw new AutoRentalExpiredInsuranceException();
            }
        }
示例#4
0
        public void ValidateAutoRentalDestination(IAutoRentalReservation reservation)
        {
            var destination = reservation.Destination;

            if (string.IsNullOrWhiteSpace(destination))
            {
                throw new InvalidDestinatinationException();
            }
        }
示例#5
0
 public void ValidateAutoRentalUnlicensedDriver(IAutoRentalReservation reservation)
 {
     foreach (var driver in reservation.Drivers)
     {
         if (driver.DriversLicense == null)
         {
             throw new AutoRentalUnlicensedDriverException();
         }
     }
 }
示例#6
0
        public void ValidateAutoRentalOriginAndDestination(IAutoRentalReservation reservation)
        {
            var destination = reservation.Destination;
            var origin      = reservation.Origin;

            if ((!string.IsNullOrWhiteSpace(destination) || !string.IsNullOrWhiteSpace(origin)) && (string.Compare(origin, destination, StringComparison.OrdinalIgnoreCase) == 0))
            {
                throw new InvalidAutoRentalOriginAndDestinationException();
            }
        }
示例#7
0
        public void ValidateAutoRentalDriversLicenseExpiry(IAutoRentalReservation reservation)
        {
            var drivers = reservation.Drivers;

            foreach (var driver in drivers)
            {
                if (driver.DriversLicense.Expiration < DateTime.Now)
                {
                    throw new AutoRentalExpiredLicenseException();
                }
            }
        }
示例#8
0
        public void ValidateAutoRentalReservation(IAutoRentalReservation reservation)
        {
            var departureDate = reservation.DepartureDate;
            var returnDate    = reservation.ReturnDate;

            if (returnDate.HasValue)
            {
                if (departureDate > returnDate.Value)
                {
                    throw new DateRangeException();
                }
            }
        }
示例#9
0
        public decimal CalculateTotalReservationFees(IAutoRentalReservation reservation)
        {
            decimal?totalFees = 0;

            _validation.ValidateAutoRentalReservation(reservation);
            _validation.ValidateAutoRentalTotalCosts(reservation);
            _validation.ValidateAutoRentalOriginAndDestination(reservation);
            _validation.ValidateAutoRentalDestination(reservation);

            _validation.ValidateAutoRentalFees(reservation);
            _validation.ValidateAutoRentalUnlicensedDriver(reservation);

            _validation.ValidateAutoRentalUninsuredDriver(reservation);
            _validation.ValidateAutoRentalDriversLicenseExpiry(reservation);
            _validation.ValidateAutoRentalInsuranceExpiry(reservation);

            totalFees = reservation.PricePerDay * (reservation.DropOffDate - reservation.PickUpDate).Days > 0 ? (reservation.DropOffDate - reservation.PickUpDate).Days : 1;
            return((decimal)totalFees);
        }
示例#10
0
 public void Cleanup()
 {
     al   = null;
     lres = null;
 }
示例#11
0
 public void Initialize()
 {
     //  TODO: Add test initialization code
     al   = new AdventureAutoRental();
     lres = new AutoRentalReservation();
 }