protected static Booking Make(MakeBookingParameterSet parameterSet) { var booking = new Booking(); booking.Id = Guid.NewGuid(); booking._pickUp = parameterSet.PickUp.Value; //Won't be null because will have been caught by exception above. booking._dropOff = parameterSet.DropOff.Value; //Won't be null because will have been caught by exception above. booking._bus = parameterSet.Bus; booking._numberOfAdults = parameterSet.NumberOfAdults; booking._numberOfChildren = parameterSet.NumberOfChildren; booking._isMainDriver = parameterSet.IsMainDriver; booking._drivingLicenceNumber = parameterSet.DrivingLicenceNumber; booking._driverForename = parameterSet.DriverForename; booking._driverSurname = parameterSet.DriverSurname; booking._createdBy = parameterSet.CurrentUser; var registerCustomerParameterSet = RegisterCustomerParameterSet.MapFrom(parameterSet); booking._customer = Customer.Register(registerCustomerParameterSet); booking._createdOn = parameterSet.CreatedOn; booking._deleted = false; parameterSet.Bus.Bookings.Add(booking); return(booking); }
protected static ValidationMessageCollection ValidateMake(MakeBookingParameterSet parameterSet) { var validationMessages = new ValidationMessageCollection(); if (!parameterSet.PickUp.HasValue || parameterSet.PickUp.Value == default(DateTime)) { validationMessages.AddError("PickUp", "Pick up date is required."); } else { if (parameterSet.PickUp.Value < DateTime.Now.Date) { validationMessages.AddError("PickUp", "Pick up date must not be in the past."); } } if (!parameterSet.DropOff.HasValue || parameterSet.DropOff == default(DateTime)) { validationMessages.AddError("DropOff", "Drop off date is required."); } else { if (parameterSet.DropOff.Value < DateTime.Now) { validationMessages.AddError("DropOff", "Drop off date must not be in the past."); } } if (parameterSet.PickUp.HasValue && parameterSet.DropOff.HasValue) { if (parameterSet.DropOff.Value < parameterSet.PickUp.Value) { validationMessages.AddError("DropOff", "Drop off date must not be before pickup date."); } } if (parameterSet.Bus == null) { validationMessages.AddError("Bus", "Bus is required."); } if (parameterSet.NumberOfAdults <= 0) { validationMessages.AddError("NumberOfAdults", "Booking must be for 1 or more adults."); } if (string.IsNullOrEmpty(parameterSet.DrivingLicenceNumber)) { validationMessages.AddError("DrivingLicenceNumber", "Driving licence number is required."); } if (parameterSet.Bus != null && parameterSet.PickUp.HasValue && parameterSet.DropOff.HasValue && parameterSet.Bus.GetConflictingBookings(parameterSet.PickUp.Value, parameterSet.DropOff.Value).Any()) { validationMessages.AddError("", "Booking conflicts with existing bookings."); } var registerCustomerParameterSet = RegisterCustomerParameterSet.MapFrom(parameterSet); validationMessages.AddRange(Customer.ValidateRegister(registerCustomerParameterSet)); return(validationMessages); }