public Models.Business.Show GetAvailableSeatForShow(Int64 id) { var show = _queryFactory.GetShowById(id); var seatsInRoom = _queryFactory.GetSeatsByRoomId(id); var bookings = _queryFactory.GetBookingsByShowId(show.Id); var bookedSeats = bookings.Select(b => b.SeatId); var availableSeats = seatsInRoom.Where(s => !bookedSeats.Contains(s.Id)); var result = new Models.Business.Show(); result.MovieName = show.Movie.Name; result.RoomName = show.Room.Name; result.Seats = availableSeats.Select(s => new Models.Business.Seat() { RowNumber = s.RowNumber, SeatNumber = s.SeatNumber }).ToList(); return(result); }