コード例 #1
0
ファイル: Booking.cs プロジェクト: lucidcoding/BusConductor
        public static Booking CustomerMakeWithBookingNumber(CustomerMakeBookingParameterSet parameterSet)
        {
            var booking = CustomerMake(parameterSet);

            booking.BookingNumber = CalculateBookingNumber(parameterSet);
            return(booking);
        }
コード例 #2
0
ファイル: Booking.cs プロジェクト: lucidcoding/BusConductor
        public static Booking CustomerMake(CustomerMakeBookingParameterSet parameterSet)
        {
            var validationMessages = ValidateCustomerMake(parameterSet);

            if (validationMessages.Any())
            {
                throw new ValidationException(validationMessages);
            }
            var booking = Make(parameterSet);

            booking._status  = BookingStatus.Pending;
            booking._voucher = parameterSet.Voucher;
            var totalCostWithoutDiscount = parameterSet.Bus.GetUndiscountedRateFor(parameterSet.PickUp.Value, parameterSet.DropOff.Value);

            if (parameterSet.Voucher != null)
            {
                booking._totalCost = (1 - (parameterSet.Voucher.Discount / 100)) * totalCostWithoutDiscount;
            }
            else
            {
                booking._totalCost = totalCostWithoutDiscount;
            }

            return(booking);
        }
コード例 #3
0
 public void SetUp()
 {
     _parameterSet         = new CustomerMakeBookingParameterSet();
     _parameterSet.PickUp  = new DateTime(2090, 6, 12);
     _parameterSet.DropOff = new DateTime(2090, 6, 19);
     _parameterSet.Bus     = new Bus {
         Id = Guid.NewGuid(), Bookings = new List <Booking>()
     };
     //_parameterSet.GuestRole = new Role {Id = Guid.NewGuid()};
     _parameterSet.Forename             = "Brian";
     _parameterSet.Surname              = "Blue";
     _parameterSet.AddressLine1         = "9 Green Lane";
     _parameterSet.AddressLine2         = "Blackthrope";
     _parameterSet.Town                 = "Orangeborough";
     _parameterSet.County               = "Purpleshire";
     _parameterSet.PostCode             = "M11AA";
     _parameterSet.Email                = "*****@*****.**";
     _parameterSet.TelephoneNumber      = "07777777777";
     _parameterSet.IsMainDriver         = true;
     _parameterSet.DrivingLicenceNumber = "XXX99999";
     _parameterSet.NumberOfAdults       = 2;
     _parameterSet.NumberOfChildren     = 2;
     _parameterSet.VoucherCode          = "ABC123";
     _parameterSet.Voucher              = new Voucher {
         Id = Guid.NewGuid(), Code = _parameterSet.VoucherCode, Discount = 10
     };
     _parameterSet.TermsAndConditionsAccepted = true;
     _parameterSet.RestrictionsAccepted       = true;
     _parameterSet.CurrentUser = new User {
         Id = Guid.NewGuid()
     };
 }
コード例 #4
0
ファイル: Booking.cs プロジェクト: lucidcoding/BusConductor
        public static ValidationMessageCollection ValidateCustomerMake(CustomerMakeBookingParameterSet parameterSet)
        {
            var validationMessages = ValidateMake(parameterSet);

            if (parameterSet.PickUp.HasValue &&
                parameterSet.PickUp.Value.DayOfWeek != DayOfWeek.Monday &&
                parameterSet.PickUp.Value.DayOfWeek != DayOfWeek.Friday)
            {
                validationMessages.AddError("PickUp", "Pick up date must be a Monday or a Friday.");
            }

            if (parameterSet.DropOff.HasValue &&
                parameterSet.DropOff.Value.DayOfWeek != DayOfWeek.Monday &&
                parameterSet.DropOff.Value.DayOfWeek != DayOfWeek.Friday)
            {
                validationMessages.AddError("DropOff", "Drop off date must be a Monday or a Friday.");
            }

            if (!parameterSet.IsMainDriver)
            {
                if (string.IsNullOrEmpty(parameterSet.DriverForename))
                {
                    validationMessages.AddError("DriverForename", "If you are not the main driver, the forename of the main driver is required.");
                }

                if (string.IsNullOrEmpty(parameterSet.DriverSurname))
                {
                    validationMessages.AddError("DriverSurname", "If you are not the main driver, the surname of the main driver is required.");
                }
            }

            if (!string.IsNullOrEmpty(parameterSet.VoucherCode) && parameterSet.Voucher == null)
            {
                validationMessages.AddError("VoucherCode", "Voucher code is not valid.");
            }

            if (parameterSet.Voucher != null &&
                parameterSet.Voucher.ExpiryDate.HasValue &&
                parameterSet.Voucher.ExpiryDate.Value < DateTime.Now)
            {
                validationMessages.AddError("VoucherCode", "Voucher code has expired.");
            }

            if (!parameterSet.TermsAndConditionsAccepted)
            {
                validationMessages.AddError("TermsAndConditionsAccepted", "You must accept the Terms and Conditions.");
            }

            if (!parameterSet.RestrictionsAccepted)
            {
                validationMessages.AddError("RestrictionsAccepted", "Please check this box. If your trip does not meet these restrictions, please contact us directly to make a booking.");
            }

            return(validationMessages);
        }
コード例 #5
0
        public void SetUp()
        {
            var applicationUser = new User {
                Id = Guid.NewGuid(), Username = "******"
            };
            var voucher = new Voucher {
                Id = Guid.NewGuid(), Code = "ABC123", Discount = 10
            };

            _parameterSet                    = new CustomerMakeBookingParameterSet();
            _parameterSet.PickUp             = new DateTime(2090, 6, 9);
            _parameterSet.DropOff            = new DateTime(2090, 6, 16);
            _parameterSet.Bus                = new Bus();
            _parameterSet.Bus.Id             = Guid.NewGuid();
            _parameterSet.Bus.Bookings       = new List <Booking>();
            _parameterSet.Bus.PricingPeriods = new List <PricingPeriod>();
            var pricingPeriod = new PricingPeriod();

            pricingPeriod.StartMonth         = 1;
            pricingPeriod.StartDay           = 1;
            pricingPeriod.EndMonth           = 12;
            pricingPeriod.EndDay             = 31;
            pricingPeriod.FridayToFridayRate = 600;
            _parameterSet.Bus.PricingPeriods.Add(pricingPeriod);
            _parameterSet.Forename                   = "Barry";
            _parameterSet.Surname                    = "Blue";
            _parameterSet.AddressLine1               = "99 Black Street";
            _parameterSet.AddressLine2               = "Purple District";
            _parameterSet.AddressLine3               = "Gray Area";
            _parameterSet.Town                       = "Greenville";
            _parameterSet.County                     = "Redshire";
            _parameterSet.PostCode                   = "M11AA";
            _parameterSet.Email                      = "*****@*****.**";
            _parameterSet.TelephoneNumber            = "0123456789";
            _parameterSet.IsMainDriver               = true;
            _parameterSet.DrivingLicenceNumber       = "XXX99999";
            _parameterSet.NumberOfAdults             = 2;
            _parameterSet.NumberOfChildren           = 0;
            _parameterSet.CurrentUser                = applicationUser;
            _parameterSet.VoucherCode                = voucher.Code;
            _parameterSet.Voucher                    = voucher;
            _parameterSet.TermsAndConditionsAccepted = true;
            _parameterSet.RestrictionsAccepted       = true;
            _parameterSet.CreatedOn                  = new DateTime(2013, 10, 1);
            _parameterSet.OtherBookingsToday         = new List <Booking>();
        }
コード例 #6
0
        public BookingServiceFactory()
        {
            Log = new Mock <ILog>();
            BookingRepository = new Mock <IBookingRepository>();
            Bus = new Bus {
                Id = Guid.NewGuid(), Bookings = new List <Booking>(), PricingPeriods = new Collection <PricingPeriod>()
            };
            ApplicationUser = new User {
                Id = Guid.NewGuid()
            };
            AdminUser = new User {
                Id = Guid.NewGuid()
            };
            Role = new Role {
                Id = Guid.NewGuid()
            };
            Voucher = new Voucher {
                Id = Guid.NewGuid(), Code = "ABC123"
            };

            Bus.PricingPeriods.Add(new PricingPeriod
            {
                Bus                = Bus,
                StartMonth         = 1,
                StartDay           = 1,
                EndMonth           = 12,
                EndDay             = 31,
                FridayToFridayRate = 1,
                FridayToMondayRate = 1,
                MondayToFridayRate = 1
            });

            CustomerMakeParameterSetMapper                             = new Mock <ICustomerMakeParameterSetMapper>();
            CustomerMakeBookingParameterSet                            = new CustomerMakeBookingParameterSet();
            CustomerMakeBookingParameterSet.PickUp                     = new DateTime(2090, 1, 2);
            CustomerMakeBookingParameterSet.DropOff                    = new DateTime(2090, 1, 6);
            CustomerMakeBookingParameterSet.Bus                        = Bus;
            CustomerMakeBookingParameterSet.Forename                   = "Barry";
            CustomerMakeBookingParameterSet.Surname                    = "Blue";
            CustomerMakeBookingParameterSet.AddressLine1               = "1 Orange Lane";
            CustomerMakeBookingParameterSet.AddressLine2               = "Address Line 2";
            CustomerMakeBookingParameterSet.AddressLine3               = "Address Line 3";
            CustomerMakeBookingParameterSet.Town                       = "Greenville";
            CustomerMakeBookingParameterSet.County                     = "Brownshire";
            CustomerMakeBookingParameterSet.PostCode                   = "M1 1AA";
            CustomerMakeBookingParameterSet.Email                      = "*****@*****.**";
            CustomerMakeBookingParameterSet.TelephoneNumber            = "0123456789";
            CustomerMakeBookingParameterSet.IsMainDriver               = true;
            CustomerMakeBookingParameterSet.DrivingLicenceNumber       = "ABC1234";
            CustomerMakeBookingParameterSet.NumberOfAdults             = 2;
            CustomerMakeBookingParameterSet.NumberOfChildren           = 2;
            CustomerMakeBookingParameterSet.VoucherCode                = Voucher.Code;
            CustomerMakeBookingParameterSet.Voucher                    = Voucher;
            CustomerMakeBookingParameterSet.RestrictionsAccepted       = true;
            CustomerMakeBookingParameterSet.TermsAndConditionsAccepted = true;
            CustomerMakeBookingParameterSet.CurrentUser                = ApplicationUser;
            CustomerMakeBookingParameterSet.CreatedOn                  = new DateTime(2013, 10, 1);

            CustomerMakeBookingParameterSet.OtherBookingsToday = new List <Booking>()
            {
                new Booking {
                    BookingNumber = "201310010001_Black"
                },
                new Booking {
                    BookingNumber = "201310010002_Green"
                },
            };

            CustomerMakeParameterSetMapper
            .Setup(x => x.Map(It.IsAny <CustomerMakeBookingRequest>()))
            .Returns(CustomerMakeBookingParameterSet);

            CustomerMakeParameterSetMapper
            .Setup(x => x.MapWithOtherBookingsToday(It.IsAny <CustomerMakeBookingRequest>()))
            .Returns(CustomerMakeBookingParameterSet);

            AdminMakeParameterSetMapper                       = new Mock <IAdminMakeParameterSetMapper>();
            AdminMakeBookingParameterSet                      = new AdminMakeBookingParameterSet();
            AdminMakeBookingParameterSet.PickUp               = new DateTime(2090, 1, 6);
            AdminMakeBookingParameterSet.DropOff              = new DateTime(2090, 1, 9);
            AdminMakeBookingParameterSet.Bus                  = Bus;
            AdminMakeBookingParameterSet.Forename             = "Gary";
            AdminMakeBookingParameterSet.Surname              = "Green";
            AdminMakeBookingParameterSet.AddressLine1         = "1 Black Lane";
            AdminMakeBookingParameterSet.AddressLine2         = "Address Line 2";
            AdminMakeBookingParameterSet.AddressLine3         = "Address Line 3";
            AdminMakeBookingParameterSet.Town                 = "Blueville";
            AdminMakeBookingParameterSet.County               = "Purpleshire";
            AdminMakeBookingParameterSet.PostCode             = "M1 1AA";
            AdminMakeBookingParameterSet.Email                = "*****@*****.**";
            AdminMakeBookingParameterSet.TelephoneNumber      = "0987654321";
            AdminMakeBookingParameterSet.IsMainDriver         = true;
            AdminMakeBookingParameterSet.DrivingLicenceNumber = "DEF5678";
            AdminMakeBookingParameterSet.NumberOfAdults       = 1;
            AdminMakeBookingParameterSet.NumberOfChildren     = 3;
            AdminMakeBookingParameterSet.CurrentUser          = AdminUser;
            AdminMakeBookingParameterSet.CreatedOn            = new DateTime(2013, 10, 2);
            AdminMakeBookingParameterSet.WarningsAcknowledged = true;
            AdminMakeBookingParameterSet.Status               = BookingStatus.Confirmed;
            AdminMakeBookingParameterSet.TotalCost            = 888m;

            AdminMakeBookingParameterSet.OtherBookingsToday = new List <Booking>()
            {
                new Booking {
                    BookingNumber = "201310010001_Black"
                },
                new Booking {
                    BookingNumber = "201310010002_Green"
                },
            };

            AdminMakeParameterSetMapper
            .Setup(x => x.Map(It.IsAny <AdminMakeBookingRequest>()))
            .Returns(AdminMakeBookingParameterSet);

            AdminMakeParameterSetMapper
            .Setup(x => x.MapWithOtherBookingsToday(It.IsAny <AdminMakeBookingRequest>()))
            .Returns(AdminMakeBookingParameterSet);
        }