コード例 #1
0
        public List <Models.Business.Show> GetAvailableShow(DateTime startTime)
        {
            var shows          = _queryFactory.GetAvailableShow(startTime);
            var showIds        = shows.Select(s => s.Id).ToList();
            var bookings       = _queryFactory.GetBookingsByShowList(showIds);
            var roomIds        = shows.Select(s => s.RoomId).ToList();
            var seats          = _queryFactory.GetAllSeatsByRoomIdList(roomIds);
            var bookedSeats    = bookings.Select(b => b.SeatId);
            var availableSeats = seats.Where(s => !bookedSeats.Contains(s.Id)).ToList();

            var result = new List <Models.Business.Show>();

            foreach (var show in shows)
            {
                var showResult = new Models.Business.Show();
                showResult.MovieName = show.Movie.Name;
                showResult.RoomName  = show.Room.Name;
                showResult.Seats     = availableSeats.Select(s => new Models.Business.Seat()
                {
                    RowNumber = s.RowNumber, SeatNumber = s.SeatNumber
                }).ToList();
                result.Add(showResult);
            }

            return(result);
        }