Beispiel #1
0
 public PersonalisationState(BookingSummary booking)
 {
     // Add Error checking to ensure booking.UserType, UserRole or others are not null
     this.UserType = booking.UserType;
     this.UserRole = booking.UserRole;
     this.BookingPeriod = booking.BookingPeriod;
 }
Beispiel #2
0
 public PersonalisationState(BookingSummary booking)
 {
     // Add Error checking to ensure booking.UserType, UserRole or others are not null
     this.UserType = new UserType() { userType = booking.UserType };
     this.UserRole = new UserRole() { roleName = booking.UserRole };
     this.BookingPeriod = new BookingPeriod() {periodName = booking.BookingPeriod};
 }
Beispiel #3
0
 internal Booking(BookingPeriod bookingPeriod, Book book)
 {
     Book          = book;
     BookingPeriod = bookingPeriod;
     BookId        = book.Id;
     Price         = GetFullPrice();
 }
Beispiel #4
0
        public void PrecedingPeriod()
        {
            var period1 = new BookingPeriod(new DateTime(1992, 2, 3), new DateTime(2006, 2, 2));
            var period2 = new BookingPeriod(new DateTime(1992, 1, 1), new DateTime(1992, 2, 2));

            Assert.IsFalse(period1.OverlapsWith(period2));
            Assert.IsTrue(period1.DoesNotoverlapWith(period2));
        }
Beispiel #5
0
        private void GetColumnAndSpanOfSelectedPeriod(out int startColumn, out int columnSpan)
        {
            BookingPeriod viewPeriod = new BookingPeriod(StartDate, StartDate.AddDays(DatesToDisplay - 1));
            DateTime      firstDate  = DateMax(StartDate, SelectedRange.StartDate);
            DateTime      lastDate   = DateMin(viewPeriod.EndDate, SelectedRange.EndDate);

            startColumn = HeaderColumns + (firstDate - StartDate).Days;
            columnSpan  = (lastDate - firstDate).Days + 1;
        }
Beispiel #6
0
 public Booking(ParkingSpace parkingSpace, Vehicle vehicle, BookingPeriod bookingPeriod)
 {
     ParkingSpace = parkingSpace ??
                    throw new ArgumentNullException(nameof(parkingSpace));
     Vehicle = vehicle ??
               throw new ArgumentNullException(nameof(vehicle));
     BookingPeriod = bookingPeriod ??
                     throw new ArgumentNullException(nameof(bookingPeriod));
 }
Beispiel #7
0
        public void CreateDailyPeriodWithCorrectAmount()
        {
            var start = new DateTime(2019, 3, 1, 12, 0, 0);
            var end   = new DateTime(2019, 3, 5, 16, 0, 0);
            var rate  = new BookingRate(new Money(5), new Money(10));

            var sut = BookingPeriod.CreateDailyBooking(start, end, rate);

            Assert.Equal(new Money(40), sut.Charge);
        }
Beispiel #8
0
        public static Booking Create(BookingPeriod bookingPeriod, Book book)
        {
            if (!book.IsAvailable(bookingPeriod))
            {
                throw new ExceptionHandler("Livro não disponível.");
            }

            var booking = new Booking(bookingPeriod, book);

            return(booking);
        }
Beispiel #9
0
        public Booking Handle(CreateBookingRequest message)
        {
            var room = _roomRepository.GetRoomById(message.RoomId);

            var bookingPeriod = new BookingPeriod(message.StartTime, message.EndTime);
            var booking       = Booking.Create(bookingPeriod, room);

            _bookingRepository.CreateBooking(booking);
            DomainEvents.PublishEvent(new BookingCreatedEvent(booking));

            return(booking);
        }
Beispiel #10
0
 public PersonalisationState(BookingSummary booking)
 {
     if (booking == null)
     {
         return;
     }
     UserRole      = UserRole.Parse(booking.UserRole);
     UserType      = new UserType(booking.UserType);
     BookingPeriod = new BookingPeriod {
         BookingPeriodType = booking.BookingPeriod
     };
 }
        public void ShouldBeAvailibleIfTheyDontOverLap(BookingPeriod toCreate, BookingPeriod existing)
        {
            //arrange
            var bookings = new List <Booking>()
            {
                new Booking(existing, null)
            };
            var room = CreateRoom(bookings);
            //act
            var result = room.IsAvailable(toCreate);

            //assert
            result.ShouldBeTrue();
        }
            public async Task <Unit> Handle(MakeReservationCommand request, CancellationToken cancellationToken)
            {
                var hotel = await this._hotelRepository.Find(request.HotelId, cancellationToken);

                var room = await this._hotelRepository.GetRoom(request.HotelId, cancellationToken);

                var bookingPeriod = new BookingPeriod(request.CheckIn, request.CheckOut);
                var person        = new Person(request.FirstName, request.LastName, request.Phone, request.Email);

                hotel.TryBook(bookingPeriod, person, room, request.GuestCount);
                await this._hotelRepository.Save(hotel, cancellationToken);

                return(Unit.Value);
            }
Beispiel #13
0
        public void ReturnFalseIfPeriodsDontOverlap()
        {
            var money   = new Money();
            var period1 = new BookingPeriod(new DateTime(2019, 3, 1), new DateTime(2019, 3, 7), money);
            var period2 = new BookingPeriod(new DateTime(2019, 3, 8), new DateTime(2019, 3, 9), money);

            var period3 = new BookingPeriod(new DateTime(2019, 3, 6), new DateTime(2019, 3, 14), money);
            var period4 = new BookingPeriod(new DateTime(2019, 3, 1), new DateTime(2019, 3, 5), money);

            Assert.False(period1.Overlaps(period2));
            Assert.False(period2.Overlaps(period1));

            Assert.False(period3.Overlaps(period4));
            Assert.False(period4.Overlaps(period3));
        }
Beispiel #14
0
        public void ReturnTrueIfPeriodsOverlap()
        {
            var period1 = new BookingPeriod(new DateTime(2019, 3, 1), new DateTime(2019, 3, 7), money);
            var period2 = new BookingPeriod(new DateTime(2019, 3, 6), new DateTime(2019, 3, 8), money);

            var period3 = new BookingPeriod(new DateTime(2019, 3, 6), new DateTime(2019, 3, 14), money);
            var period4 = new BookingPeriod(new DateTime(2019, 3, 1), new DateTime(2019, 3, 7), money);

            var period5 = new BookingPeriod(new DateTime(2019, 3, 1), new DateTime(2019, 3, 7), money);
            var period6 = new BookingPeriod(new DateTime(2019, 3, 3), new DateTime(2019, 3, 4), money);

            Assert.True(period1.Overlaps(period2));
            Assert.True(period2.Overlaps(period1));

            Assert.True(period3.Overlaps(period4));
            Assert.True(period4.Overlaps(period3));

            Assert.True(period5.Overlaps(period6));
            Assert.True(period6.Overlaps(period5));
        }
Beispiel #15
0
        private void ResetDateSelectionElement()
        {
            BookingPeriod viewPeriod = new BookingPeriod(StartDate, StartDate.AddDays(DatesToDisplay - 1));

            if (!SelectedRange.IsValid() || SelectedRange.DoesNotoverlapWith(viewPeriod))
            {
                RemoveDateRangeElement();
                return;
            }
            CreateDateRangeElement();
            int startColumn;
            int columnSpan;

            GetColumnAndSpanOfSelectedPeriod(out startColumn, out columnSpan);
            Grid.SetRow(DateRangeElement, dayNumberRow);
            Grid.SetColumn(DateRangeElement, startColumn);
            Grid.SetColumnSpan(DateRangeElement, columnSpan);
            int rightMargin = SelectedRange.EndDate <= viewPeriod.EndDate ? MarginForDateSelectionElement : 0;
            int leftMargin  = SelectedRange.StartDate >= viewPeriod.StartDate ? MarginForDateSelectionElement : 0;

            DateRangeElement.Margin = new Thickness(leftMargin, DateRangeElement.Margin.Top, rightMargin, DateRangeElement.Margin.Bottom);
        }
Beispiel #16
0
        private void ResetRoomDateSelectionElements()
        {
            ClearRoomDateSelectionElements();
            BookingPeriod viewPeriod = new BookingPeriod(StartDate, StartDate.AddDays(DatesToDisplay - 1));

            if (SelectedRange.IsValid() && SelectedRange.OverlapsWith(viewPeriod))
            {
                int startColumn, columnSpan;
                GetColumnAndSpanOfSelectedPeriod(out startColumn, out columnSpan);
                int rightMargin = SelectedRange.EndDate <= viewPeriod.EndDate ? MarginForRoomDateSelectionElement : 0;
                int leftMargin  = SelectedRange.StartDate >= viewPeriod.StartDate ? MarginForRoomDateSelectionElement : 0;
                foreach (Room room in SelectedRooms)
                {
                    int    row = Rooms.IndexOf(room);
                    Canvas SelectionElement = new Canvas();
                    SelectionElement.Background = Brushes.Orange;
                    SelectionElement.Margin     = new Thickness(leftMargin, 20, rightMargin, 10);
                    Grid.SetColumnSpan(SelectionElement, columnSpan);
                    AddToRoomDateGrid(startColumn, row, SelectionElement);
                    SelectionElements.Add(SelectionElement);
                }
            }
        }
Beispiel #17
0
 public bool IsAvailable(BookingPeriod requestedBookingPeriod)
 {
     return(!Bookings.Any(b => b.BookingPeriod.OverlappedBy(requestedBookingPeriod)));
 }