Ejemplo n.º 1
0
        public void InvalidRequestFails()
        {
            var request = new MakeBookingRequest();

            var customer = new Customer()
            {
                Id         = Guid.NewGuid(),
                FamilyName = "Blue"
            };

            var vehicle = new Vehicle()
            {
                Id = Guid.NewGuid()
            };

            vehicle.Bookings = new List <Booking>()
            {
                new Booking()
                {
                    StartDate = new DateTime(2050, 9, 30),
                    EndDate   = new DateTime(2050, 10, 2),
                    Vehicle   = vehicle
                }
            };

            request.Customer  = customer;
            request.StartDate = new DateTime(2050, 10, 1);
            request.EndDate   = new DateTime(2050, 10, 3);
            request.Vehicle   = vehicle;

            var validationMessages = Booking.ValidateMake(request);

            Assert.AreEqual(1, validationMessages.Count);
            Assert.IsTrue(validationMessages.Any(x => x.Text.Equals("Booking conflicts with existing bookings.")));
        }
        public MakeBookingResponse MakeBooking(MakeBookingRequest request)
        {
            PublicServiceDAO publicDAO = new PublicServiceDAO();
            int itemId = publicDAO.MakeBooking(request.user_trr, request.apartment_id, request.date_from, request.date_to,
                                               request.package_arrangment_id, request.discount_code, request.bank_payment);

            if (itemId != -1)
            {
                if (request.package_arrangment_id != 0)
                {
                    TaxiAccess.OrderTaxi(StaticData.ComplexInfo.Address, request.num_of_people, DateTime.FromFileTimeUtc(request.date_from));
                    AquaParkAccess.ReserveAndPayForEvent(1, request.num_of_people, request.user_trr.ToString());

                    if (request.bank_payment)
                    {
                        BankAccess.PlayEBill(1, request.user_trr, request.pin_number, 12.0d);
                    }
                    else
                    {
                        BankAccess.PayWithCard(request.user_trr, request.pin_number, 12.0d);
                    }
                }

                return(new MakeBookingResponse(booking_response.booked, itemId));
            }
            else
            {
                return(new MakeBookingResponse(booking_response.failed, itemId));
            }
        }
Ejemplo n.º 3
0
        public void ValidRequestPasses()
        {
            var request = new MakeBookingRequest();

            var customer = new Customer()
            {
                Id         = Guid.NewGuid(),
                FamilyName = "Blue"
            };

            var vehicle = new Vehicle()
            {
                Id = Guid.NewGuid()
            };

            vehicle.Bookings = new List <Booking>()
            {
                new Booking()
                {
                    StartDate = new DateTime(2050, 9, 1),
                    EndDate   = new DateTime(2050, 9, 3),
                    Vehicle   = vehicle
                }
            };

            request.Customer  = customer;
            request.StartDate = new DateTime(2050, 10, 1);
            request.EndDate   = new DateTime(2050, 10, 3);
            request.Vehicle   = vehicle;

            var validationMessages = Booking.ValidateMake(request);

            Assert.AreEqual(0, validationMessages.Count);
        }
Ejemplo n.º 4
0
        public void CanMakeBooking()
        {
            var request = new MakeBookingRequest();

            var customer = new Customer()
            {
                Id         = Guid.NewGuid(),
                FamilyName = "Blue"
            };

            var vehicle = new Vehicle()
            {
                Id          = Guid.NewGuid(),
                PricePerDay = 100m
            };

            request.Customer  = customer;
            request.StartDate = new DateTime(2050, 10, 1);
            request.EndDate   = new DateTime(2050, 10, 3);
            request.Vehicle   = vehicle;

            var booking = Booking.Make(request);

            Assert.IsNotNull(booking.Id);
            Assert.AreNotEqual(default(Guid), booking.Id.Value);
            Assert.IsNotNull(booking.BookingNumber);
            Assert.AreEqual(request.StartDate, booking.StartDate);
            Assert.AreEqual(request.EndDate, booking.EndDate);
            Assert.AreSame(customer, booking.Customer);
            Assert.AreSame(vehicle, booking.Vehicle);
            Assert.AreEqual(300m, booking.Total);
        }
Ejemplo n.º 5
0
        public static ValidationMessageCollection ValidateMake(MakeBookingRequest request)
        {
            var validationMessages = new ValidationMessageCollection();

            if (!request.StartDate.HasValue || request.StartDate.Value == default(DateTime))
            {
                validationMessages.AddError("StartDate", "Start date is required.");
            }
            else
            {
                if (request.StartDate.Value < DateTime.Now.Date)
                {
                    validationMessages.AddError("StartDate", "Start date must not be in the past.");
                }
            }

            if (!request.EndDate.HasValue || request.EndDate.Value == default(DateTime))
            {
                validationMessages.AddError("EndDate", "End date is required.");
            }
            else
            {
                if (request.EndDate.Value < DateTime.Now)
                {
                    validationMessages.AddError("EndDate", "End date must not be in the past.");
                }
            }

            if (request.StartDate.HasValue && request.EndDate.HasValue)
            {
                if (request.EndDate.Value < request.StartDate.Value)
                {
                    validationMessages.AddError("EndDate", "End date must not be before start date.");
                }
            }

            if (request.Vehicle == null)
            {
                validationMessages.AddError("Vehicle", "Vehicle is required.");
            }
            if (request.Customer == null)
            {
                validationMessages.AddError("Customer", "Customer is required.");
            }

            if (request.Vehicle != null &&
                request.StartDate.HasValue &&
                request.EndDate.HasValue &&
                request.Vehicle.GetConflictingBookings(request.StartDate.Value, request.EndDate.Value).Any())
            {
                validationMessages.AddError("", "Booking conflicts with existing bookings.");
            }

            return(validationMessages);
        }
Ejemplo n.º 6
0
        public MakeBookingRequest Map(MakeViewModel viewModel)
        {
            var request = new MakeBookingRequest();

            request.StartDate = viewModel.StartDate;
            request.EndDate   = viewModel.EndDate;
            request.Vehicle   = viewModel.VehicleId.HasValue ? _vehicleRepository.GetById(viewModel.VehicleId.Value) : null;
            var username = _userProvider.GetUsername();

            request.Customer = _customerRepository.GetByUsername(username);
            return(request);
        }
        public void CanAddBooking()
        {
            Guid bookingId;

            var makeBookingRequest = new MakeBookingRequest()
            {
                StartDate = new DateTime(2015, 01, 12),
                EndDate   = new DateTime(2015, 01, 16)
            };

            using (_contextProvider)
            {
                var applicationUser = _userRepository.GetById(UserIds.Application);
                makeBookingRequest.Vehicle = _vehicleRepository.GetById(VehicleIds.SF59QRT);

                makeBookingRequest.Customer = Customer.Register(new RegisterCustomerRequest()
                {
                    UserId       = Guid.NewGuid(),
                    EmailAddress = "*****@*****.**",
                    //CustomerRole =
                    FamilyName      = "Green",
                    GivenName       = "Gary",
                    Address1        = "3 Green Road",
                    Address2        = "Greenton",
                    Address3        = "Greenshire",
                    PostCode        = "GN1 1AA",
                    ApplicationUser = applicationUser
                });

                var booking = Booking.Make(makeBookingRequest);
                _bookingRepository.Save(booking);
                bookingId = booking.Id.Value;
                _contextProvider.SaveChanges();
            }

            using (_contextProvider)
            {
                var allBookings   = _bookingRepository.GetAll();
                var storedBooking = _bookingRepository.GetById(bookingId);
                Assert.AreEqual(1, allBookings.Count);
                Assert.IsNotNull(storedBooking.Id);
                Assert.IsNotNull(storedBooking.BookingNumber);
                Assert.AreEqual(makeBookingRequest.EndDate, storedBooking.EndDate);
                Assert.AreEqual(makeBookingRequest.EndDate, storedBooking.EndDate);
                Assert.AreEqual(makeBookingRequest.Customer.User.Id.Value, storedBooking.CreatedBy.Id.Value);
                Assert.AreEqual("Green", storedBooking.Customer.FamilyName);
                Assert.AreEqual("Gary", storedBooking.Customer.GivenName);
                Assert.AreEqual("Ford", storedBooking.Vehicle.Make);
                Assert.AreEqual("Transit", storedBooking.Vehicle.Model);
            }
        }
Ejemplo n.º 8
0
        public static Booking Make(MakeBookingRequest request)
        {
            var booking = new Booking();

            booking.Id            = Guid.NewGuid();
            booking.BookingNumber = request.Customer.FamilyName.ToUpper() + DateTime.Now.ToString("yyMMddHHmmss");
            booking.StartDate     = request.StartDate.Value;
            booking.EndDate       = request.EndDate.Value;
            booking.Customer      = request.Customer;
            booking.CreatedBy     = request.Customer.User;
            booking.Vehicle       = request.Vehicle;
            var totalDays = (request.EndDate.Value - request.StartDate.Value).Days + 1;

            booking.Total = totalDays * request.Vehicle.PricePerDay;
            return(booking);
        }
        public ActionResult Post([FromBody] MakeBookingRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            makeBookingRequest.Booking = new Booking
            {
                Name  = request.Name,
                Start = request.Start,
                End   = request.End,
                Space = request.Space
            };

            makeBookingRequest.Execute();

            return((makeBookingResponseHandler as MakeBookingPresenter).Result);
        }
Ejemplo n.º 10
0
 public MakeBookingResponse MakeBooking(MakeBookingRequest request)
 {
     return(new MakeBookingResponse(booking_response.booked));
 }
Ejemplo n.º 11
0
        public ValidationMessageCollection ValidateMake(MakeBookingRequest request)
        {
            var otherBookings = _bookingRepository.GetByEmployeeId(request.EmployeeId);

            return(Booking.ValidateMake(otherBookings, request.Start, request.End));
        }