public IEnumerable <HotelOutlet> GetRoomsWithResourceParameeters(BookingResourceParametersDB bookingResourceParametersDB) { var hotels = _context.HotelOutlets .Include(h => h.Address) .Include(h => h.Rooms); if (bookingResourceParametersDB.CheckIn != null && bookingResourceParametersDB.CheckOut != null) { var hotelsFromDateFilter = new List <HotelOutlet>(); foreach (var h in hotels) { var roomsToRemoveFromDateFilter = new List <Room>(); foreach (var r in h.Rooms) { var bookingRefs = GetBookedRoomReference(r.RoomId); foreach (var bRef in bookingRefs) { bool overlap = bRef.DateFrom < bookingResourceParametersDB.CheckOut && bookingResourceParametersDB.CheckIn < bRef.DateTo; if (overlap) { roomsToRemoveFromDateFilter.Add(r); } } } if (roomsToRemoveFromDateFilter.Count() > 0) { foreach (var rToRemove in roomsToRemoveFromDateFilter) { h.Rooms.Remove(rToRemove); } } } } if (!String.IsNullOrEmpty(bookingResourceParametersDB.Rating)) { List <string> ratingString = bookingResourceParametersDB.Rating.Split('|').ToList(); if (ratingString.Count > 0) { var hotelsFilteredByRatings = hotels.Where(item => (ratingString.Contains(item.Rating.ToString()))) .Include(h => h.Address) .Include(h => h.Rooms); hotels = hotelsFilteredByRatings; } } return(hotels.ToList()); }
public IEnumerable <Room> GetAvailableRoomsWithHotelAndReference(BookingResourceParametersDB bookingResourceParametersDB) { var rooms = _context.Rooms.Where(r => r.IsOccupied == false) .Include(rf => rf.BookedRoomReferences) .Include(h => h.HotelOutlet) .ToList(); if (bookingResourceParametersDB.CheckIn != null && bookingResourceParametersDB.CheckOut != null) { var roomsToRemoveFromDateFilter = new List <Room>(); //filter by date foreach (var r in rooms) { foreach (var br in r.BookedRoomReferences) { bool overlap = br.DateFrom < bookingResourceParametersDB.CheckOut && bookingResourceParametersDB.CheckIn < br.DateTo; if (overlap) { roomsToRemoveFromDateFilter.Add(r); } } } if (roomsToRemoveFromDateFilter.Count() > 0) { foreach (var rToRemove in roomsToRemoveFromDateFilter) { rooms.RemoveAll(item => item.RoomId == rToRemove.RoomId); } } } if (bookingResourceParametersDB.Rating.Count() > 0) { } //if (bookingResourceParametersDB.Rating != null) //{ // //filter by rating // var roomsToRemoveFromRatingFilter = new List<Room>(); // foreach(var r in rooms) // { // var rating = _context.HotelOutlets.Where(h => h.HotelOutletId == r.HotelOutletRefId) // .FirstOrDefault().Rating; // if(rating != bookingResourceParametersDB.Rating) // { // roomsToRemoveFromRatingFilter.Add(r); // } // } // if(roomsToRemoveFromRatingFilter.Count() > 0) // { // foreach (var rToRemove in roomsToRemoveFromRatingFilter) // { // rooms.RemoveAll(item => item.RoomId == rToRemove.RoomId); // } // } //} return(rooms); }