예제 #1
0
        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);
        }
예제 #2
0
        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);
        }