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); }
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); }