Exemplo n.º 1
0
        public async Task GetAllRooms_ShouldReturnCorrectCount()
        {
            // Arrange
            MapperInitializer.InitializeMapper();
            var context = HotelDbContextInMemoryFactory.InitializeContext();
            var seeder  = new RoomsServiceTestsSeeder();
            await seeder.SeedRoomAsync(context);

            var roomsRepository     = new EfDeletableEntityRepository <Room>(context);
            var roomTypesRepository = new EfDeletableEntityRepository <RoomType>(context);
            var roomsService        = this.GetRoomsService(roomsRepository, roomTypesRepository, context);

            // Act
            var actualResult   = roomsService.GetAllRooms <AvailableRoomViewModel>().ToList();
            var expectedResult = new AvailableRoomViewModel[]
            {
                new AvailableRoomViewModel
                {
                    Id          = roomsRepository.All().First().Id,
                    RoomNumber  = "Test-1",
                    Description = "TestDescription",
                },
            };

            Assert.Equal(expectedResult.Length, actualResult.Count());
        }
Exemplo n.º 2
0
        public async Task GetAllRooms_ShouldReturnCorrectResult()
        {
            var errorMessagePrefix = "RoomsService GetAllRooms() method does not work properly.";

            // Arrange
            MapperInitializer.InitializeMapper();
            var context = HotelDbContextInMemoryFactory.InitializeContext();
            var seeder  = new RoomsServiceTestsSeeder();
            await seeder.SeedRoomAsync(context);

            var roomsRepository     = new EfDeletableEntityRepository <Room>(context);
            var roomTypesRepository = new EfDeletableEntityRepository <RoomType>(context);
            var roomsService        = this.GetRoomsService(roomsRepository, roomTypesRepository, context);

            // Act
            var actualResult   = roomsService.GetAllRooms <AvailableRoomViewModel>().ToList();
            var expectedResult = new AvailableRoomViewModel[]
            {
                new AvailableRoomViewModel
                {
                    Id          = roomsRepository.All().First().Id,
                    RoomNumber  = "Test-1",
                    Description = "TestDescription",
                },
            };

            Assert.True(expectedResult[0].Id == actualResult[0].Id, errorMessagePrefix + " " + "Id is not returned properly.");
            Assert.True(expectedResult[0].RoomNumber == actualResult[0].RoomNumber, errorMessagePrefix + " " + "RoomNumer is not returned properly.");
            Assert.True(expectedResult[0].Description == actualResult[0].Description, errorMessagePrefix + " " + "Description are not returned properly.");
        }
        public async Task <IActionResult> AvailableRooms(string checkIn, string checkOut, int adults, int kids, int page = GlobalConstants.DefaultPageNumber, int perPage = GlobalConstants.PageSize)
        {
            DateTime startDate = DateTime.Parse(checkIn).AddHours(14);
            DateTime endDate   = DateTime.Parse(checkOut).AddHours(12);

            var reservedRoomsId = this.reservationsService
                                  .GetAllReservedRoomsId(startDate, endDate)
                                  .ToList();

            var allAvailableRooms = this.roomsService
                                    .GetAllRooms()
                                    .Where(x => !reservedRoomsId.Any(x2 => x2 == x.Id))
                                    .ToList();

            var allAvailableRoomModels = new List <AvailableRoomViewModel>();

            foreach (var room in allAvailableRooms)
            {
                var roomType = await this.roomTypesService.GetRoomTypeByIdAsync(room.RoomTypeId);

                var modelRoom = new AvailableRoomViewModel
                {
                    Id                         = room.Id,
                    RoomNumber                 = room.RoomNumber,
                    RoomRoomTypeId             = roomType.Id,
                    RoomRoomTypePrice          = roomType.Price,
                    RoomRoomTypeCapacityAdults = roomType.CapacityAdults,
                    RoomRoomTypeCapacityKids   = roomType.CapacityKids,
                    RoomRoomTypeImage          = roomType.Image,
                    RoomRoomTypeName           = roomType.Name,
                    Description                = room.Description,
                };

                allAvailableRoomModels.Add(modelRoom);
            }

            var rooms = allAvailableRoomModels
                        .OrderBy(x => x.RoomRoomTypeCapacityAdults)
                        .Skip(perPage * (page - 1))
                        .Take(perPage)
                        .ToList();

            var pagesCount = (int)Math.Ceiling(allAvailableRooms.Count() / (decimal)perPage);

            var model = new AllAvailableRoomsViewModel
            {
                Rooms       = rooms.ToList(),
                CurrentPage = page,
                PagesCount  = pagesCount,
                Adults      = adults,
                Kids        = kids,
                CheckIn     = startDate.ToString(),
                CheckOut    = endDate.ToString(),
            };

            return(this.View(model));
        }
Exemplo n.º 4
0
        private async Task <List <AvailableRoomViewModel> > GetRoomsAsync(string checkIn, string checkOut)
        {
            DateTime startDate = DateTime.Parse(checkIn).AddHours(14);
            DateTime endDate   = DateTime.Parse(checkOut).AddHours(12);

            var reservedRoomsId = this.reservationsService
                                  .GetAllReservedRoomsId(startDate, endDate)
                                  .ToList();

            var allAvailableRooms = this.roomsService
                                    .GetAllRooms()
                                    .Where(x => !reservedRoomsId.Any(x2 => x2 == x.Id))
                                    .ToList();

            var allAvailableRoomModels = new List <AvailableRoomViewModel>();

            foreach (var room in allAvailableRooms)
            {
                var roomType = await this.roomTypesService.GetRoomTypeByIdAsync(room.RoomTypeId);

                var modelRoom = new AvailableRoomViewModel
                {
                    Id                         = room.Id,
                    RoomNumber                 = room.RoomNumber,
                    RoomRoomTypeId             = roomType.Id,
                    RoomRoomTypePrice          = roomType.Price,
                    RoomRoomTypeCapacityAdults = roomType.CapacityAdults,
                    RoomRoomTypeCapacityKids   = roomType.CapacityKids,
                    RoomRoomTypeImage          = roomType.Image,
                    RoomRoomTypeName           = roomType.Name,
                    Description                = room.Description,
                };

                allAvailableRoomModels.Add(modelRoom);
            }

            return(allAvailableRoomModels.ToList());
        }