Example #1
0
        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);
            }
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        private static RoomBooking MapToRoomBooking(RoomBookingInfo roomBookingToCreate)
        {
            var roomBooking = new RoomBooking(
                roomBookingToCreate.Id ?? Guid.Empty,
                roomBookingToCreate.RoomType,
                roomBookingToCreate.FromDate,
                roomBookingToCreate.Duration);

            return(roomBooking);
        }
Example #6
0
        public async Task <ActionResult <RoomBookingInfo> > GetBooking(int roomBookingId)
        {
            RoomBookingInfo booking = await _roomBookingService.GetAsync(roomBookingId);

            if (booking.BookingNote != "Error")
            {
                return(Ok(booking));
            }
            else
            {
                return(NotFound());
            }
        }
Example #7
0
        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);
        }
Example #8
0
        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"));
            }
        }
Example #9
0
        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);
        }
Example #10
0
        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);
            }
        }
Example #11
0
 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);
 }
Example #12
0
 public static Guid CreateBooking(Browser browser, RoomBookingInfo bookingToCreate)
 {
     return(CreateBookingWithResponse(browser, bookingToCreate).Body.DeserializeJson <IdWrapper>().Id);
 }
Example #13
0
 public static BrowserResponse CreateBookingWithResponse(Browser browser, RoomBookingInfo bookingToCreate)
 {
     return(browser.Post(_baseUrl, x => x.JsonBody(bookingToCreate)));
 }