public static PresentationInfo GetPresInfoByPres(Presentation pres)
        {
            using (var context = new ShowContext())
            {
                List <Presentation> presentations = (from p in context.Presentations
                                                     select p).ToList();
                List <Show> shows = (from s in context.Shows
                                     select s).ToList();
                List <Order> orders = (from o in context.Orders
                                       select o).ToList();
                List <Room> rooms = (from r in context.Rooms
                                     select r).ToList();
                var presInfo = (from p in presentations
                                join s in shows on p.Show.ShowId equals s.ShowId
                                join o in orders on p.PresentationId equals o.Presentation.PresentationId
                                join r in rooms on p.Room.RoomId equals r.RoomId
                                where p.PresentationId == pres.PresentationId
                                select new { s.Name, p.PresentationDate, o.ReservedSeats, r.TotalSeats }).ToList();

                PresentationInfo presInfosLine = presInfo.GroupBy(x => x.Name)
                                                 .Select(s => new PresentationInfo
                {
                    ShowName            = s.First().Name,
                    PresentationDate    = s.First().PresentationDate,
                    ReservedSeatCount   = s.Sum(o => o.ReservedSeats),
                    TotalSeatCount      = s.First().TotalSeats,
                    AvailableSeatsCount = s.First().TotalSeats - s.Sum(o => o.ReservedSeats)
                }).FirstOrDefault();
                return(presInfosLine);
            }
        }
        private void DisplayAllPresInfoList()
        {
            List <PresentationInfo> presentationInfoList = new List <PresentationInfo>();

            AllPresentationList = DisplayInformation.GetAllPresentationList();
            foreach (Presentation pres in AllPresentationList)
            {
                PresInfoByShow = DisplayInformation.GetPresInfoByPres(pres);
                presentationInfoList.Add(PresInfoByShow);
            }
            PresentationInfosListView.ItemsSource = presentationInfoList;
        }
        public OrderWindow(MainWindow owner)
        {
            InitializeComponent();
            this.Owner       = owner;
            DataContext      = owner.PresentationInfosListView.SelectedItem;
            SelectedPresInfo = (PresentationInfo)DataContext;
            string selectedShowName = SelectedPresInfo.ShowName;

            ShowNameTextBlock.Text = selectedShowName;
            string selectedPresDate = SelectedPresInfo.PresentationDate.ToString("MM/dd/yyyy");

            PresentationDateTextBlock.Text = selectedPresDate;
            CurrentPresAvailableSeats      = SelectedPresInfo.AvailableSeatsCount;
            AvailableSeatsTextBlock.Text   = CurrentPresAvailableSeats.ToString();
        }
 private void FilterSelectedDisplay()
 {
     if (IsShowAndPeriodSelected())
     {
         DateTime selectedStartDate = StartDatePicker.SelectedDate.Value.Date;
         DateTime selectedEndDate   = EndDatePicker.SelectedDate.Value.Date;
         string   selectedShowName  = ShowListComboBox.Text;
         Show     selectedShow      = DisplayInformation.GetShowByName(selectedShowName);
         List <PresentationInfo> presListWithShowFilter = new List <PresentationInfo>();
         List <Presentation>     allPresList            = DisplayInformation.GetAllPresentationList();
         List <Presentation>     selectedPresList       = allPresList.Where(p => p.Show.ShowId == selectedShow.ShowId).ToList();
         foreach (Presentation pres in selectedPresList)
         {
             PresentationInfo presInfoByShow = DisplayInformation.GetPresInfoByPres(pres);
             presListWithShowFilter.Add(presInfoByShow);
         }
         List <PresentationInfo> presListWithPeriodFilter = presListWithShowFilter.Where(p => p.PresentationDate >= selectedStartDate && p.PresentationDate <= selectedEndDate).ToList();
         PresentationInfosListView.ItemsSource = presListWithPeriodFilter.Distinct();
     }
     else if (IsOnlyShowSelected())
     {
         string selectedShowName = ShowListComboBox.Text;
         Show   selectedShow     = DisplayInformation.GetShowByName(selectedShowName);
         List <PresentationInfo> presentationInfoList = new List <PresentationInfo>();
         List <Presentation>     allPresList          = DisplayInformation.GetAllPresentationList();
         List <Presentation>     selectedPresList     = allPresList.Where(p => p.Show.ShowId == selectedShow.ShowId).ToList();
         foreach (Presentation pres in selectedPresList)
         {
             PresentationInfo presInfoByShow = DisplayInformation.GetPresInfoByPres(pres);
             presentationInfoList.Add(presInfoByShow);
         }
         PresentationInfosListView.ItemsSource = presentationInfoList.Distinct();
     }
     else if (IsOnlyPeriodSelected())
     {
         DateTime selectedStartDate = StartDatePicker.SelectedDate.Value.Date;
         DateTime selectedEndDate   = EndDatePicker.SelectedDate.Value.Date;
         List <PresentationInfo> presentationInfoList = new List <PresentationInfo>();
         AllPresentationList = DisplayInformation.GetPresListByPeriod(selectedStartDate, selectedEndDate);
         foreach (Presentation pres in AllPresentationList)
         {
             PresentationInfo presInfoByShow = DisplayInformation.GetPresInfoByPres(pres);
             presentationInfoList.Add(presInfoByShow);
         }
         PresentationInfosListView.ItemsSource = presentationInfoList.Distinct();
     }
 }
        public MainWindow()
        {
            InitializeComponent();
            AllShowList = DisplayInformation.GetAllDefaultShows();
            List <string> showNameList = AllShowList.Select(s => s.Name).ToList();

            ShowListComboBox.ItemsSource = showNameList;

            List <PresentationInfo> presentationInfoList = new List <PresentationInfo>();

            AllPresentationList = DisplayInformation.GetAllPresentationList();
            foreach (Presentation pres in AllPresentationList)
            {
                PresInfoByShow = DisplayInformation.GetPresInfoByPres(pres);
                presentationInfoList.Add(PresInfoByShow);
            }
            PresentationInfosListView.ItemsSource = presentationInfoList;
        }