private void sala_SelectionChanged(object sender, SelectionChangedEventArgs e) { seatScheme.Children.Clear(); reservedSeats.Clear(); resNow.Visibility = Visibility.Hidden; if (sala.SelectedIndex != -1) { DataTable freeSeats = new DataTable(); DataTable takenSeats = new DataTable(); Manage.dbConTab( "SELECT ID_SIEDZENIE, NR_SIEDZENIE " + "FROM WSI_CINEMA_SIEDZENIE " + "WHERE NR_SALA = " + sala.SelectedValue + " " + "AND ID_SIEDZENIE NOT IN(" + "SELECT rez.ID_SIEDZENIE " + "FROM WSI_CINEMA_REZERWACJA rez " + "JOIN WSI_CINEMA_SEANS se ON(rez.ID_SEANS = se.ID_SEANS) " + "JOIN WSI_CINEMA_REPERTUAR rep ON(se.ID_REPERTUAR = rep.ID_REPERTUAR) " + "JOIN WSI_CINEMA_SIEDZENIE si ON(si.ID_SIEDZENIE = rez.ID_SIEDZENIE) " + "WHERE se.ID_FILM = " + idFilm + " AND DATE_FORMAT(rep.TERMIN,'%d.%m.%y') = '" + termin.SelectedValue + "' AND se.CZAS_ROZPOCZECIA = '" + czas.SelectedValue + "' AND rep.NR_SALA = " + sala.SelectedValue + ")" ).Fill(freeSeats); Manage.dbConTab("SELECT rez.ID_SIEDZENIE, si.NR_SIEDZENIE " + "FROM WSI_CINEMA_REZERWACJA rez " + "JOIN WSI_CINEMA_SEANS se ON(rez.ID_SEANS = se.ID_SEANS) " + "JOIN WSI_CINEMA_REPERTUAR rep ON(se.ID_REPERTUAR = rep.ID_REPERTUAR) " + "JOIN WSI_CINEMA_SIEDZENIE si ON(si.ID_SIEDZENIE = rez.ID_SIEDZENIE) " + "WHERE se.ID_FILM = " + idFilm + " AND DATE_FORMAT(rep.TERMIN,'%d.%m.%y') = '" + termin.SelectedValue + "' AND se.CZAS_ROZPOCZECIA = '" + czas.SelectedValue + "' AND rep.NR_SALA = " + sala.SelectedValue).Fill(takenSeats); int freeCreated = 0; int takenCreated = 0; WrapPanel line = null; const int LINE_LENGTH = 10; while (freeCreated < freeSeats.Rows.Count && takenCreated < takenSeats.Rows.Count) { if ((freeCreated + takenCreated) % LINE_LENGTH == 0) { seatScheme.Children.Add(line = new WrapPanel()); line.HorizontalAlignment = HorizontalAlignment.Center; } int FREE_SEATS_ID = Convert.ToInt32(freeSeats.Rows[freeCreated][1]); int TAKEN_SEATS_ID = Convert.ToInt32(takenSeats.Rows[takenCreated][1]); if (FREE_SEATS_ID < TAKEN_SEATS_ID) { int id = Convert.ToInt32(freeSeats.Rows[freeCreated][0]); int seatNumber = Convert.ToInt32(freeSeats.Rows[freeCreated][1]); line.Children.Add(new freeSeat(id, seatNumber, addReserv)); freeCreated++; } else { line.Children.Add(new takenSeat()); takenCreated++; } } while (freeCreated != freeSeats.Rows.Count) { if ((freeCreated + takenCreated) % LINE_LENGTH == 0) { seatScheme.Children.Add(line = new WrapPanel()); line.HorizontalAlignment = HorizontalAlignment.Center; } line.Children.Add(new freeSeat(Convert.ToInt32(freeSeats.Rows[freeCreated][0]), Convert.ToInt32(freeSeats.Rows[freeCreated++][1]), addReserv)); } while (takenCreated != takenSeats.Rows.Count) { if ((freeCreated + takenCreated) % LINE_LENGTH == 0) { seatScheme.Children.Add(line = new WrapPanel()); line.HorizontalAlignment = HorizontalAlignment.Center; } line.Children.Add(new takenSeat()); takenCreated++; } } }