public static Booking CustomerMakeWithBookingNumber(CustomerMakeBookingParameterSet parameterSet) { var booking = CustomerMake(parameterSet); booking.BookingNumber = CalculateBookingNumber(parameterSet); return(booking); }
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); }
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() }; }
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); }
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>(); }
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); }