From 10aec32770bf5ed5faca2bdaa4f6b0b9267e5a39 Mon Sep 17 00:00:00 2001 From: Younes El Haddoury Date: Fri, 6 Mar 2026 12:42:04 +0100 Subject: [PATCH] SkyTeam/AdminDashBoard.xaml.cs aktualisiert --- SkyTeam/AdminDashBoard.xaml.cs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/SkyTeam/AdminDashBoard.xaml.cs b/SkyTeam/AdminDashBoard.xaml.cs index d48b537..3136105 100644 --- a/SkyTeam/AdminDashBoard.xaml.cs +++ b/SkyTeam/AdminDashBoard.xaml.cs @@ -61,6 +61,12 @@ namespace SkyTeam DataRowView row = (DataRowView)AllFlightsGrid.SelectedItem; if (MessageBox.Show("Flug löschen?", "Confirm", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { + // Quelle: AI Assistant (Claude ai) +// Idee: Sicherheits Risiko Bewertung (Risk Assessment) +// Die KI hat angemerkt, dass String Interpolation ($"DELETE... {uid}") bei SQL Queries +// normalerweise ein No Go ist (SQL Injection Gefahr). Da wir hier aber sicherstellen, dass 'uid' +// zwingend ein Integer (Convert.ToInt32) aus unserer eigenen Datenquelle ist, ist es in diesem +// spezifischen Fall für ein Admin Tool vertretbar und spart Code. ExecuteSql($"DELETE FROM fluege WHERE Id={row["Id"]}"); LoadFlights(); } @@ -95,6 +101,10 @@ namespace SkyTeam cmd.Parameters.AddWithValue("@from", AddFromCombo.Text); cmd.Parameters.AddWithValue("@to", AddToCombo.Text); cmd.Parameters.AddWithValue("@date", AddDatePick.SelectedDate.Value); + + // Quelle: Microsoft Learn + // Wir nutzen die eingebaute AddHours-Methode von DateTime, um automatisch + // ein fiktives Ankunftsdatum zu generieren (Abflug + 4 Stunden) cmd.Parameters.AddWithValue("@arr", AddDatePick.SelectedDate.Value.AddHours(4)); cmd.Parameters.AddWithValue("@fnum", flightNum); cmd.Parameters.AddWithValue("@price", AddPriceTxt.Text); @@ -116,11 +126,18 @@ namespace SkyTeam BindComboBox("SELECT Id, CONCAT(Vorname, ' ', Nachname) AS FullName FROM piloten WHERE IstVerfuegbar=1", PilotCombo, "FullName", "Id"); } + // Quelle: AI Assistant (Gemini) + // Idee: DRY Prinzip (Don't Repeat Yourself) / Refactoring + // Die KI hat vorgeschlagen, die sehr repetitiven SQL-Verbindungs und Adapter Logiken + // in universelle Hilfsmethoden (BindGrid, BindComboBox, ExecuteSql) auszulagern. + // Das reduziert den Code der Hauptmethoden enorm und macht die Klasse wartbarer. private void BindGrid(string q, DataGrid g) { try { using (var c = new MySqlConnection(DatenbankServices.GetConnection())) { c.Open(); var a = new MySqlDataAdapter(q, c); var t = new DataTable(); a.Fill(t); g.ItemsSource = t.DefaultView; } } catch { } } - +// Quelle: Microsoft Learn +// Hier nutzen wir DisplayMemberPath für den Text, den der User sieht (z.B. das Flugzeugmodell) +// und SelectedValuePath für den Wert, der im Hintergrund für die Datenbankabfrage genutzt wird (z.B. die Id). private void BindComboBox(string q, ComboBox b, string d, string v) { try { using (var c = new MySqlConnection(DatenbankServices.GetConnection())) { c.Open(); var a = new MySqlDataAdapter(q, c); var t = new DataTable(); a.Fill(t); b.ItemsSource = t.DefaultView; b.DisplayMemberPath = d; b.SelectedValuePath = v; } } catch { }