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()); }
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)); }
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()); }