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; }
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}; }
internal Booking(BookingPeriod bookingPeriod, Book book) { Book = book; BookingPeriod = bookingPeriod; BookId = book.Id; Price = GetFullPrice(); }
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)); }
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; }
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)); }
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); }
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); }
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); }
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); }
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)); }
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)); }
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); }
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); } } }
public bool IsAvailable(BookingPeriod requestedBookingPeriod) { return(!Bookings.Any(b => b.BookingPeriod.OverlappedBy(requestedBookingPeriod))); }