private void confirmButton_Click(object sender, EventArgs e) { List <int> chosenIds = new List <int>(); foreach (Label label in seatsPanel1.Labels) { if (label.BackColor == Color.Yellow) { Int32.TryParse(label.Name, out int id); chosenIds.Add(id); } } if (chosenIds.Count == 0) { MessageBox.Show("Nie wybrano żadnego miejsca", "Błąd", MessageBoxButtons.OK); } else { BookSeatsRequest request = new BookSeatsRequest { ShowingId = ShowingId }; request.SeatsIds = chosenIds.ToArray(); RequestBookShowing.Invoke(request); foreach (Label label in seatsPanel1.Labels) { seatsPanel1.Controls.Remove(label); } Visible = false; } }
/// <summary> /// Metoda obsługująca event rezerwowania miejsc na dany seans. /// </summary> /// <param name="request">Dane dotyczące seansu i wybranych miejsc</param> private void HandleBookShowing(BookSeatsRequest request) { try { model.BookSeats(request); } catch (Exception ex) { view.ShowMessage(false, TranslateToPolish(ex.Message)); } }
/// <summary> /// Metoda tworząca rezerwację dla zalogowanego użytkownika. /// </summary> /// <param name="request">Dane dotyczące wybranego seansu i miejsc</param> internal void BookSeats(BookSeatsRequest request) { if (loggedUser != null) { RezerwacjaRepository rezerwacjaRepository = new RezerwacjaRepository(); MiejsceRezerwacjaRepository miejsceRezerwacjaRepository = new MiejsceRezerwacjaRepository(); rezerwacjaRepository.Save(new RezerwacjaEntity(request.ShowingId, loggedUser.Id)); RezerwacjaEntity rezerwacja = rezerwacjaRepository.GetLast().OrElseThrow("Nie można odnaleźć żadnej rezerwacji w bazie danych"); foreach (int seatId in request.SeatsIds) { miejsceRezerwacjaRepository.Save(new MiejsceRezerwacjaEntity(rezerwacja.Id, seatId)); } BasicResponse?.Invoke(true, "Zapisano rezerwację"); } else { throw new Exception("Nie uzyskano autoryzacji do wykonania zadania"); } }