/// <summary> /// Metoda zwracająca listę wcześniejszych rezerwacji. /// </summary> /// <returns>Informacje o wcześniejszych rezerwacjach</returns> internal BookingResponse[] GetBookings() { if (loggedUser != null) { RezerwacjaRepository rezerwacjaRepository = new RezerwacjaRepository(); MiejsceRezerwacjaRepository miejsceRezerwacjaRepository = new MiejsceRezerwacjaRepository(); MiejsceRepository miejsceRepository = new MiejsceRepository(); FilmRepository filmRepository = new FilmRepository(); SeansRepository seansRepository = new SeansRepository(); List <RezerwacjaEntity> rezerwacje = rezerwacjaRepository.FindAllByUzytkownikId(loggedUser.Id); List <BookingResponse> bookings = new List <BookingResponse>(); foreach (RezerwacjaEntity rezerwacja in rezerwacje) { BookingResponse booking = new BookingResponse(); SeansEntity seans = seansRepository.FindById(rezerwacja.IdSeansu).OrElseThrow("Nie istnieje seans o podanym ID"); booking.DateTime = seans.Kiedy; FilmEntity film = filmRepository.FindById(seans.IdFilmu).OrElseThrow("Nie można odnaleźć w bazie danych filmu o podanym ID"); booking.FilmName = film.Nazwa; List <BookedSeatResponse> bookedSeats = new List <BookedSeatResponse>(); List <MiejsceRezerwacjaEntity> miejscaRezerwacje = miejsceRezerwacjaRepository.FindAllByRezerwacjaId(rezerwacja.Id); foreach (MiejsceRezerwacjaEntity miejsceRezerwacja in miejscaRezerwacje) { BookedSeatResponse bookedSeat = new BookedSeatResponse(); MiejsceEntity miejsce = miejsceRepository.FindById(miejsceRezerwacja.IdMiejsca).OrElseThrow("Nie istnieje miejsce o podanym ID"); bookedSeat.PosX = miejsce.Numer; bookedSeat.PosY = miejsce.Rzad; bookedSeats.Add(bookedSeat); } booking.Seats = bookedSeats.ToArray(); bookings.Add(booking); } return(bookings.ToArray()); } else { throw new Exception("Nie uzyskano autoryzacji do wykonania zadania"); } }
/// <summary> /// Metoda wyciągająca z bazy danych dane miejsca o podanym ID. /// </summary> /// <param name="idMiejsca">ID miejsca</param> /// <returns>Obiekt zawierający dane miejsca oraz informację o sukcesie operacji</returns> internal Optional <MiejsceEntity> FindById(int idMiejsca) { MiejsceEntity miejsce = null; MySqlConnection connection = DBConnection.Instance.Connection; using (MySqlCommand command = new MySqlCommand($"SELECT * FROM miejsca WHERE id = {idMiejsca};", connection)) { connection.Open(); MySqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { miejsce = new MiejsceEntity(reader); } connection.Close(); } return(new Optional <MiejsceEntity>(miejsce)); }