public ActionQueryResult WritePassengerToDatabase(Passenger passenger, out int outputId)
        {
            outputId = -1;

            DatabaseTable passengerTargetTable = new DatabaseTable("passengers");

            passengerTargetTable.AddAttribute("Id");
            passengerTargetTable.AddAttribute("Title");
            passengerTargetTable.AddAttribute("FirstName");
            passengerTargetTable.AddAttribute("LastName");
            passengerTargetTable.AddAttribute("PassportNumber");

            ObjectRelationalMapper <Passenger> passengerMapper = new ObjectRelationalMapper <Passenger>(Config.DB_CONNECTION_STRING, null, passengerTargetTable);

            List <SqlParameter> passengerSqlParams = new List <SqlParameter>();

            passengerSqlParams.Add(new SqlParameter("@Title", passenger.TitleString));
            passengerSqlParams.Add(new SqlParameter("@FirstName", passenger.FirstName));
            passengerSqlParams.Add(new SqlParameter("@LastName", passenger.LastName));

            if (passenger.PassportId != null)
            {
                passengerSqlParams.Add(new SqlParameter("@PassportNumber", passenger.PassportId));
            }

            ActionQueryResult passengerInsertResult = passengerMapper.Insert(passengerSqlParams.ToArray(), "Id", out outputId);

            return(passengerInsertResult);
        }
        public ActionQueryResult WriteRawBookingToDatabase(int passengerId, int flightId, bool isWaiting, out int outputId)
        {
            DatabaseTable bookingTargetTable = new DatabaseTable("bookings");

            bookingTargetTable.AddAttribute("Id");
            bookingTargetTable.AddAttribute("PassengerId");
            bookingTargetTable.AddAttribute("FlightId");
            bookingTargetTable.AddAttribute("IsWaiting");

            ObjectRelationalMapper <Booking> bookingMapper = new ObjectRelationalMapper <Booking>(Config.DB_CONNECTION_STRING, null, bookingTargetTable);

            SqlParameter[] sqlParams = new SqlParameter[] {
                new SqlParameter("@PassengerId", passengerId),
                new SqlParameter("@FlightId", flightId),
                new SqlParameter("@IsWaiting", isWaiting)
            };

            ActionQueryResult bookingQueryResult = bookingMapper.Insert(sqlParams, "Id", out outputId);

            return(bookingQueryResult);
        }
        public ActionQueryResult WriteSeatToDatabase(SeatNumber seat, int passengerId, int flightId)
        {
            DatabaseTable seatsTable = new DatabaseTable("seats");

            seatsTable.AddAttribute("PosX");
            seatsTable.AddAttribute("PosY");
            seatsTable.AddAttribute("Id");
            seatsTable.AddAttribute("FlightId");
            seatsTable.AddAttribute("PassengerId");

            ObjectRelationalMapper <Passenger> seatMapper = new ObjectRelationalMapper <Passenger>(Config.DB_CONNECTION_STRING, null, seatsTable);

            ActionQueryResult seatQueryResult = seatMapper.Insert(new SqlParameter[] {
                new SqlParameter("@PosX", seat.X),
                new SqlParameter("@PosY", seat.Y),
                new SqlParameter("@FlightId", flightId),
                new SqlParameter("@PassengerId", passengerId)
            });

            return(seatQueryResult);
        }
        public ActionQueryResult WriteBaggageToDatabase(Baggage baggage, int passengerId)
        {
            DatabaseTable baggageTargetTable = new DatabaseTable("baggage");

            baggageTargetTable.AddAttribute("Id");
            baggageTargetTable.AddAttribute("FlightId");
            baggageTargetTable.AddAttribute("PassengerId");
            baggageTargetTable.AddAttribute("Weight");
            baggageTargetTable.AddAttribute("Fee");

            ObjectRelationalMapper <Baggage> baggageMapper = new ObjectRelationalMapper <Baggage>(Config.DB_CONNECTION_STRING, null, baggageTargetTable);

            SqlParameter[] sqlParams = new SqlParameter[] {
                new SqlParameter("@FlightId", baggage.FlightId), // TODO: FlightId fehlt! Muss vor Übergabe zugewiesen werden!
                new SqlParameter("@PassengerId", passengerId),
                new SqlParameter("@Weight", baggage.Weight),
                new SqlParameter("@Fee", baggage.Fee)
            };

            ActionQueryResult baggageQueryResult = baggageMapper.Insert(sqlParams);

            return(baggageQueryResult);
        }
Beispiel #5
0
        private bool InsertBooking(out int newBookingId)
        {
            newBookingId = -1;

            txtFirstName.Text  = txtFirstName.Text?.Trim();
            txtLastName.Text   = txtLastName.Text?.Trim();
            txtPassportId.Text = txtPassportId.Text?.Trim();

            if (!HasValidInput)
            {
                if (SelectedFlight != null && SelectedFlight.IsInternational && txtPassportId.Text.Length < PASSPORT_ID_MIN_LENGTH)
                {
                    MessageBox.Show("Die Reisepassnummer muss bei Auslandsreisen mindestens " + PASSPORT_ID_MIN_LENGTH + " Zeichen lang sein.", "Ungültige Reisepassnummer", MessageBoxButton.OK, MessageBoxImage.Warning);
                    return(false);
                }

                MessageBox.Show("Bitte zunächst alle erforderlichen Daten eingeben.", "Fehlende Eingaben", MessageBoxButton.OK, MessageBoxImage.Warning);

                return(false);
            }

            if (!Booking.IsWaiting && Booking.Passenger.Baggage.Count() < 1)
            {
                MessageBoxResult messageBoxResult = MessageBox.Show("Sind Sie sicher, dass Sie für diese Buchung keine Gepäckstücke hinterlegen möchten?", "Kein Gepäck angegeben", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);

                if (messageBoxResult != MessageBoxResult.Yes)
                {
                    return(false);
                }
            }

            if (!Enum.TryParse(cmbTitle.SelectedItem?.ToString(), out Title passengerTitle))
            {
                MessageBox.Show("Kann Fluggast nicht in die Datenbank schreiben. Fehler beim Parsen der Anrede.");
                return(false);
            }

            ActionQueryResult passengerQueryResult = dbAccess.WritePassengerToDatabase(new Passenger(passengerTitle, txtFirstName.Text, txtLastName.Text, SelectedFlight.IsInternational ? txtPassportId.Text : null), out int passengerId);

            if (passengerQueryResult.HasError)
            {
                MessageBox.Show("Fehler beim Anlegen des Fluggastes.\r\n\r\nDetails:r\n" + passengerQueryResult.ErrorDetails, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
                return(false);
            }

            if (!Booking.IsWaiting)
            {
                SeatNumber?seatNumber = cmbSeat.SelectedItem as SeatNumber?;

                if (!seatNumber.HasValue)
                {
                    MessageBox.Show("Sitznummer konnte nicht in die Datenbank geschrieben werden. Es wurde keine Sitznummer ausgewählt.");
                    return(false);
                }

                SeatNumber seat = seatNumber.Value;

                ActionQueryResult seatQueryResult = dbAccess.WriteSeatToDatabase(seat, passengerId, SelectedFlight.Id);

                if (seatQueryResult.HasError)
                {
                    MessageBox.Show("Fehler beim Schreiben des Sitzokatzes in die Datenbank.\r\n\r\nDetails:\r\n" + seatQueryResult, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
                    return(false);
                }

                foreach (Baggage bg in Booking.Passenger.Baggage)
                {
                    bg.FlightId = SelectedFlight.Id;
                    ActionQueryResult baggageQueryResult = dbAccess.WriteBaggageToDatabase(bg, passengerId);

                    if (baggageQueryResult.HasError)
                    {
                        MessageBox.Show("Fehler beim Schreiben eines Gepäckstücks in die Datenbank.\r\n\r\nDetails:\r\n" + baggageQueryResult, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
                        return(false);
                    }
                }
            }

            ActionQueryResult bookingQueryResult = dbAccess.WriteRawBookingToDatabase(passengerId, SelectedFlight.Id, Booking.IsWaiting, out newBookingId);

            if (bookingQueryResult.HasError)
            {
                MessageBox.Show("Fehler beim Schreiben der Buchungsdaten in die Datenbank.\r\n\r\nDetails:\r\n" + bookingQueryResult, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
                return(false);
            }

            return(true);
        }