comments und quellen hinzufugt

This commit is contained in:
younes elhaddoury
2026-03-05 12:32:01 +01:00
parent 04a18d3c50
commit 4a0f5dc0bd
15 changed files with 182 additions and 21 deletions

View File

@@ -15,6 +15,9 @@ namespace SkyTeam
{
InitializeComponent();
// Quelle: Stack Overflow "How to compare SolidColorBrush in WPF"
// Wir lesen die globale Ressource aus und prüfen die Farbe, um sicherzustellen,
// dass der Toggle Switch beim Wechseln der Seite den richtigen Zustand (An/Aus) anzeigt
var bgBrush = Application.Current.Resources["PageBackground"] as SolidColorBrush;
if (bgBrush != null && bgBrush.Color == Color.FromRgb(30, 30, 30))
{
@@ -49,6 +52,10 @@ namespace SkyTeam
DarkModeToggle.Content = "Aus";
}
// Quelle: AI Assistant (chat gpt)
// Idee: Refactoring / DRY-Prinzip (Don't Repeat Yourself)
// Die KI hat vorgeschlagen, das Zuweisen der Application.Current.Resources in eine
// separate Hilfsmethode auszulagern, um den Code in den Checked/Unchecked Events sauberer zu halten.
private void SetRes(string key, Color color)
{
Application.Current.Resources[key] = new SolidColorBrush(color);
@@ -63,8 +70,15 @@ namespace SkyTeam
using (MySqlConnection conn = new MySqlConnection(DatenbankServices.GetConnection()))
{
conn.Open();
// Quelle: Reddit - r/csharp "Best way to delete user with related data?"
// Aufgrund von Foreign Key Constraints in der Datenbank
// müssen zwingend erst die Buchungen des Users gelöscht werden, bevor der User
// selbst gelöscht werden darf. Sonst wirft die Datenbank einen Fehler
string deleteBookings = "DELETE FROM buchungen WHERE UserId = @uid";
MySqlCommand cmd1 = new MySqlCommand(deleteBookings, conn);
// Quelle: Im Unterricht gemacht
cmd1.Parameters.AddWithValue("@uid", SessionManager.CurrentUserId);
cmd1.ExecuteNonQuery();
@@ -85,12 +99,15 @@ namespace SkyTeam
}
}
// Quelle: Im Unterricht gemacht
// Lambda-Ausdrücke (=>) für simple Seitenwechsel über den NavigationService
private void HomeButton_Click(object sender, RoutedEventArgs e) => NavigationService.Navigate(new NavigationPage());
private void BookingsButton_Click(object sender, RoutedEventArgs e) => NavigationService.Navigate(new BuchungenPage());
private void SettingsButton_Click(object sender, RoutedEventArgs e) => NavigationService.Navigate(new SettingsPage());
private void SettingsButton_Click(object sender, RoutedEventArgs e) => NavigationService.Navigate(new SettingsPage());
private void LogoutButton_Click(object sender, RoutedEventArgs e)
{
SessionManager.CurrentUserId = 0;
SessionManager.CurrentUserId = 0;
NavigationService.Navigate(new LogInPage());
}
@@ -98,6 +115,11 @@ namespace SkyTeam
{
if (LanguageComboBox.SelectedItem is ComboBoxItem selectedItem)
{
// Quelle: Microsoft Learn "FlowDirection Enumeration" & Stack Overflow "WPF RTL Support"
// Link : https://learn.microsoft.com/en-us/dotnet/api/system.windows.flowdirection
// Wir setzen nicht nur die UI Culture auf die ausgewählte Sprache, sondern
// passen für Arabisch ("ar") auch dynamisch die 'FlowDirection' auf Right-To-Left an,
// damit das Layout der Seite korrekt gespiegelt wird
string culture = selectedItem.Tag.ToString();
Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture);
@@ -106,6 +128,9 @@ namespace SkyTeam
else
this.FlowDirection = FlowDirection.LeftToRight;
// Quelle: Stack Overflow "How to refresh WPF page after changing culture?"
// Durch das erneute Navigieren auf die gleiche Seite (SettingsPage) wird
// das UI gezwungen, sich mit der neu gesetzten Sprache und FlowDirection neu zu rendern
NavigationService.Navigate(new SettingsPage());
}
}