public IEnumerable <RoomDTO> GetRoomTypes(GetRoomTypesResource resource) { var roomsNotAvailable = _context.Registrations.Where(r => (r.CheckInDate > resource.Start && r.CheckInDate < resource.End) || (r.CheckOutDate > resource.Start && r.CheckOutDate < resource.End)) .Select(r => r.RoomId).ToList(); var remainingRooms = GetRooms().Where(r => roomsNotAvailable.All(nar => nar != r.Id)).ToList(); var dictionary = new Dictionary <string, RoomDTO>(); remainingRooms.ForEach(r => dictionary.TryAdd($"{r.RoomType}.{r.Capacity}", r)); return(dictionary.Values.OrderBy(r => r.Capacity).ToList()); }
public ActionResult <IEnumerable <RoomDTO> > Post([FromBody] GetRoomTypesResource resource) { var rooms = _repository.GetRoomTypes(resource); return(Ok(rooms)); }