Ejemplo n.º 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);
        }
Ejemplo n.º 2
0
        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);
        }