public async Task <RoomBookingInfo> GetAsync(int BookingId) { var result = await _repository.RoomBookings.FindAsync(BookingId); if (result != null) { var getRoomName = _repository.Room.FirstOrDefault(z => z.Id == result.RoomId); var getPersonDetail = _repository.People.FirstOrDefault(x => x.Id == result.PersonId); RoomBookingInfo roomBookingFound = new RoomBookingInfo { Id = result.Id, PersonName = getPersonDetail.Name, PersonDOB = getPersonDetail.DateOfBirth, RoomName = getRoomName.Name, BookingDateTimeStart = result.BookingDateTimeStart, lengthBookingMin = result.lengthBookingMin, BookingNote = result.BookingNote }; return(roomBookingFound); } else { RoomBookingInfo roomBookingNotFound = new RoomBookingInfo { Id = BookingId, // BookingDate = "Error" }; return(roomBookingNotFound); } }
//TODO: GetBookingById public IEnumerable <RoomBookingInfo> GetBookedDaysByRoom() { using (HotelBookingEntities db = new HotelBookingEntities()) { var rooms = db.Rooms.ToArray(); var roomIds = rooms.Select(r => r.Id); var bookings = db.Bookings.Where(b => roomIds.Contains(b.RoomId)).ToArray(); //get booking days for all rooms var roomBookingInfos = rooms.Select(r => { //get all booking durations as (start, end) tuples for the room var startEndTuples = bookings .Where(b => b.RoomId == r.Id) .Select(b => (b.StartDate, b.EndDate)); //get list of all booked days for the room var bookedDays = Helpers.GetNumbersBetween(startEndTuples); //build the booking info var roomBookingInfo = new RoomBookingInfo { Id = r.Id, Name = r.Name, BookedDays = bookedDays }; return(roomBookingInfo); }); return(roomBookingInfos); } }
protected override void Given() { _firstBookingToCreate = new RoomBookingInfo(null, RoomType.Single, new DateTime(2015, 06, 27), 3); _firstBookingId = BookingDriver.CreateBooking(Browser, _firstBookingToCreate); _secondBookingToCreate = new RoomBookingInfo(null, RoomType.SuperDeluxeSuite, new DateTime(2015, 05, 16), 2); _secondBookingId = BookingDriver.CreateBooking(Browser, _secondBookingToCreate); }
protected override void When() { _bookingToCreate = new RoomBookingInfo(null, RoomType.Suite, new DateTime(2014, 06, 05), 5); _browserResponse = BookingDriver.CreateBookingWithResponse(Browser, _bookingToCreate); _returnedBookingId = _browserResponse.Body.DeserializeJson <IdWrapper>(); _createdBooking = BookingDriver.GetBookingById(Browser, _returnedBookingId.Id); }
private static RoomBooking MapToRoomBooking(RoomBookingInfo roomBookingToCreate) { var roomBooking = new RoomBooking( roomBookingToCreate.Id ?? Guid.Empty, roomBookingToCreate.RoomType, roomBookingToCreate.FromDate, roomBookingToCreate.Duration); return(roomBooking); }
public async Task <ActionResult <RoomBookingInfo> > GetBooking(int roomBookingId) { RoomBookingInfo booking = await _roomBookingService.GetAsync(roomBookingId); if (booking.BookingNote != "Error") { return(Ok(booking)); } else { return(NotFound()); } }
private static RoomBookingInfo MapToRoomBookingInfo(RoomBooking roomBooking) { var roomBookingInfo = new RoomBookingInfo { Id = roomBooking.Id, Status = roomBooking.Status, RoomType = roomBooking.RoomType, FromDate = roomBooking.FromDate, Duration = roomBooking.Duration, Price = roomBooking.Price }; return(roomBookingInfo); }
public async Task <IActionResult> CreateRoomBooking(RoomBookingInfo roomBooking) { if (roomBooking.lengthBookingMin <= 60) { var result = await _roomBookingService.Create(roomBooking); if (result.BookingNote.Contains("exist") == true || result.BookingNote.Contains("Error") == true) { return(StatusCode(409, result.BookingNote)); } else { return(Ok(result)); } } else { return(StatusCode(409, "Booking room time is maximum at 1 hour")); } }
public void ShouldAddBooking() { // arrange RoomBookingInfo RequestAddBooking = new RoomBookingInfo { Id = 2, PersonName = "DummyName", PersonDOB = Convert.ToString(DateTime.Now.AddYears(-20)), RoomName = "DummyRoom1", BookingDateTimeStart = DateTime.Now, lengthBookingMin = 50, BookingDateTimeEnd = DateTime.Now.AddMinutes(50), BookingNote = "test" }; //act var result = controller.CreateRoomBooking(RequestAddBooking); // assert Assert.IsNotNull(result); }
public async Task <RoomBookingInfo> Create(RoomBookingInfo roomBooking) { var CheckBookingIdExist = await _repository.RoomBookings.FindAsync(roomBooking.Id); // Get the Person detail in Person Table with Id Person getPersonDetail = new Person(); getPersonDetail = _repository.People.FirstOrDefault(z => z.Name == roomBooking.PersonName && z.DateOfBirth == roomBooking.PersonDOB); // Get the room detail in Room Table with Id Room getRoomDetail = new Room(); getRoomDetail = _repository.Room.FirstOrDefault(y => y.Name == roomBooking.RoomName); // Pass error message RoomBookingInfo ErrorRoom = new RoomBookingInfo { Id = roomBooking.Id, }; if (CheckBookingIdExist == null) { if (getPersonDetail == null) { ErrorRoom.BookingNote = "Error in creating record. Person record does not exist"; return(ErrorRoom); } if (getRoomDetail == null) { ErrorRoom.BookingNote = "Error in creating record. Room Name does not exist"; return(ErrorRoom); } else { roomBooking.BookingDateTimeEnd = roomBooking.BookingDateTimeStart.AddMinutes(roomBooking.lengthBookingMin); _repository.RoomBookings.Add(new RoomBooking { Id = roomBooking.Id, PersonId = getPersonDetail.Id, RoomId = getRoomDetail.Id, BookingDateTimeStart = roomBooking.BookingDateTimeStart, BookingDateTimeEnd = roomBooking.BookingDateTimeEnd, lengthBookingMin = roomBooking.lengthBookingMin, BookingNote = roomBooking.BookingNote }); var numberOfItemsCreated = await _repository.SaveChangesAsync(); if (numberOfItemsCreated == 1) { return(roomBooking); } else { ErrorRoom.BookingNote = "Error in creating record"; return(ErrorRoom); } } } else { ErrorRoom.BookingNote = "Booking id already exist"; return(ErrorRoom); } }
public static void ShouldContainBooking(this IEnumerable <RoomBookingInfo> actualBookings, Guid bookingId, RoomBookingInfo expectedBooking) { actualBookings.Should().Contain(rbi => rbi.Id == bookingId && rbi.RoomType == expectedBooking.RoomType && rbi.FromDate == expectedBooking.FromDate && rbi.Duration == expectedBooking.Duration); }
public static Guid CreateBooking(Browser browser, RoomBookingInfo bookingToCreate) { return(CreateBookingWithResponse(browser, bookingToCreate).Body.DeserializeJson <IdWrapper>().Id); }
public static BrowserResponse CreateBookingWithResponse(Browser browser, RoomBookingInfo bookingToCreate) { return(browser.Post(_baseUrl, x => x.JsonBody(bookingToCreate))); }