示例#1
0
        /// <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");
            }
        }
示例#2
0
        /// <summary>
        /// Metoda zwracająca listę miejsc na dany seans.
        /// </summary>
        /// <param name="showingId">ID wybranego seansu</param>
        /// <returns>Informacje o miejscach na sali</returns>
        internal SeatToChooseResponse[] GetSeats(int showingId)
        {
            MiejsceRepository           miejsceRepository           = new MiejsceRepository();
            MiejsceRezerwacjaRepository miejsceRezerwacjaRepository = new MiejsceRezerwacjaRepository();
            RezerwacjaRepository        rezerwacjaRepository        = new RezerwacjaRepository();

            List <MiejsceEntity>    zajeteMiejsca = new List <MiejsceEntity>();
            List <RezerwacjaEntity> rezerwacje    = rezerwacjaRepository.FindAllBySeansId(showingId);

            foreach (RezerwacjaEntity rezerwacja in rezerwacje)
            {
                List <MiejsceRezerwacjaEntity> miejscaRezerwacje = miejsceRezerwacjaRepository.FindAllByRezerwacjaId(rezerwacja.Id);
                foreach (MiejsceRezerwacjaEntity miejsceRezerwacja in miejscaRezerwacje)
                {
                    zajeteMiejsca.Add(miejsceRepository.FindById(miejsceRezerwacja.IdMiejsca).OrElseThrow("Nie istnieje miejsce o podanym ID"));
                }
            }

            List <MiejsceEntity>        wszystkieMiejsca = miejsceRepository.FindAll();
            List <SeatToChooseResponse> seats            = new List <SeatToChooseResponse>();

            foreach (MiejsceEntity miejsce in wszystkieMiejsca)
            {
                SeatToChooseResponse seat = new SeatToChooseResponse()
                {
                    Id        = miejsce.Id,
                    PosX      = miejsce.Numer,
                    PosY      = miejsce.Rzad,
                    Available = true
                };

                foreach (MiejsceEntity zajeteMiejsce in zajeteMiejsca)
                {
                    if (miejsce.Id == zajeteMiejsce.Id)
                    {
                        seat.Available = false;
                        break;
                    }
                }

                seats.Add(seat);
            }

            return(seats.ToArray());
        }
示例#3
0
        /// <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");
            }
        }