Exemplo n.º 1
0
        public static Customer Register(RegisterCustomerParameterSet parameterSet)
        {
            var customer = new Customer();

            customer._id              = Guid.NewGuid();
            customer._forename        = parameterSet.Forename;
            customer._surname         = parameterSet.Surname;
            customer._addressLine1    = parameterSet.AddressLine1;
            customer._addressLine2    = parameterSet.AddressLine2;
            customer._addressLine3    = parameterSet.AddressLine3;
            customer._town            = parameterSet.Town;
            customer._county          = parameterSet.County;
            customer._postCode        = parameterSet.PostCode;
            customer._email           = parameterSet.Email;
            customer._telephoneNumber = parameterSet.TelephoneNumber;
            customer._createdOn       = DateTime.Now;
            customer._createdBy       = parameterSet.CurrentUser;
            customer._deleted         = false;
            return(customer);
        }
Exemplo n.º 2
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);
        }
Exemplo n.º 3
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);
        }
Exemplo n.º 4
0
        public static ValidationMessageCollection ValidateRegister(RegisterCustomerParameterSet parameterSet)
        {
            var validationMessages = new ValidationMessageCollection();

            if (string.IsNullOrEmpty(parameterSet.Forename))
            {
                validationMessages.AddError("Forename", "Forename is required.");
            }
            else
            {
                if (parameterSet.Forename.Length > 50)
                {
                    validationMessages.AddError("Forename", "Forename must be 50 characters or less.");
                }
            }

            if (string.IsNullOrEmpty(parameterSet.Forename))
            {
                validationMessages.AddError("Surname", "Surname is required.");
            }
            else
            {
                if (parameterSet.Surname.Length > 50)
                {
                    validationMessages.AddError("Surname", "Surname must be 50 characters or less.");
                }
            }

            if (string.IsNullOrEmpty(parameterSet.AddressLine1))
            {
                validationMessages.AddError("AddressLine1", "Address line 1 is required.");
            }
            else
            {
                if (parameterSet.AddressLine1.Length > 50)
                {
                    validationMessages.AddError("AddressLine1", "Address line 1 must be 50 characters or less.");
                }
            }

            if (parameterSet.AddressLine2 != null && parameterSet.AddressLine2.Length > 50)
            {
                validationMessages.AddError("AddressLine2", "Address line 2 must be 50 characters or less.");
            }
            if (parameterSet.AddressLine3 != null && parameterSet.AddressLine3.Length > 50)
            {
                validationMessages.AddError("AddressLine3", "Address line 3 must be 50 characters or less.");
            }

            if (string.IsNullOrEmpty(parameterSet.Town))
            {
                validationMessages.AddError("Town", "Town is required.");
            }
            else
            {
                if (parameterSet.Town.Length > 50)
                {
                    validationMessages.AddError("Town", "Town must be 50 characters or less.");
                }
            }

            if (parameterSet.County != null && parameterSet.County.Length > 50)
            {
                validationMessages.AddError("County", "County must be 50 characters or less.");
            }

            var rxPostCode =
                new Regex(
                    @"^(([gG][iI][rR] {0,}0[aA]{2})|((([a-pr-uwyzA-PR-UWYZ][a-hk-yA-HK-Y]?[0-9][0-9]?)|(([a-pr-uwyzA-PR-UWYZ][0-9][a-hjkstuwA-HJKSTUW])|([a-pr-uwyzA-PR-UWYZ][a-hk-yA-HK-Y][0-9][abehmnprv-yABEHMNPRV-Y]))) {0,}[0-9][abd-hjlnp-uw-zABD-HJLNP-UW-Z]{2}))$");

            if (string.IsNullOrEmpty(parameterSet.PostCode))
            {
                validationMessages.AddError("PostCode", "Post code is required.");
            }
            else
            {
                if (!rxPostCode.IsMatch(parameterSet.PostCode))
                {
                    validationMessages.AddError("PostCode", "Post code is not valid.");
                }
            }

            if (string.IsNullOrEmpty(parameterSet.Email))
            {
                validationMessages.AddError("Email", "Email is required.");
            }
            else if (parameterSet.Email.Length > 50)
            {
                validationMessages.AddError("Email", "Email must be 50 characters or less.");
            }
            else
            {
                var rxNonStrictEmail = new Regex(@"[A-Za-z0-9\.-_\+]+@[A-Za-z0-9\.-_\+]+");
                if (!rxNonStrictEmail.IsMatch(parameterSet.Email))
                {
                    validationMessages.AddError("Email", "Email is not valid.");
                }
            }

            if (string.IsNullOrEmpty(parameterSet.TelephoneNumber))
            {
                validationMessages.AddError("TelephoneNumber", "Telephone number is required.");
            }
            else
            {
                if (parameterSet.TelephoneNumber.Length > 50)
                {
                    validationMessages.AddError("TelephoneNumber", "Telephone number must be 50 characters or less.");
                }
            }

            return(validationMessages);
        }