using CineBook.Data; using CineBook.Helpers; using CineBook.Models; using System.Windows; using System.Windows.Controls; namespace CineBook.Views; public partial class AdminPanelView : UserControl { private readonly Repository _repo; private User? _selected; public AdminPanelView(Repository repo) { InitializeComponent(); _repo = repo; if (!Session.IsAdmin) { StatusText.Text = "⚠ Kein Zugriff. Nur für Administratoren."; return; } LoadUsers(); } private void LoadUsers() { try { UsersGrid.ItemsSource = _repo.GetAllUsers(); StatusText.Text = $"● {_repo.GetAllUsers().Count} Benutzer geladen."; } catch (System.Exception ex) { StatusText.Text = "⚠ Fehler: " + ex.Message; } } private void GridSelectionChanged(object sender, SelectionChangedEventArgs e) { _selected = UsersGrid.SelectedItem as User; BtnEditUser.IsEnabled = _selected != null; BtnDeleteUser.IsEnabled = _selected != null; } private void RefreshClick(object sender, RoutedEventArgs e) => LoadUsers(); private void AddUserClick(object sender, RoutedEventArgs e) { var dlg = new UserEditDialog(null); if (dlg.ShowDialog() == true) { try { if (_repo.CreateUser(dlg.Username, dlg.Password, dlg.Role, dlg.Email)) LoadUsers(); else MessageBox.Show("Fehler beim Anlegen. Benutzername bereits vergeben?", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); } catch (System.Exception ex) { MessageBox.Show("DB-Fehler: " + ex.Message); } } } private void EditUserClick(object sender, RoutedEventArgs e) { if (_selected == null) return; var dlg = new UserEditDialog(_selected); if (dlg.ShowDialog() == true) { try { _repo.UpdateUser(_selected.UserID, dlg.Username, dlg.Role, dlg.Email); LoadUsers(); } catch (System.Exception ex) { MessageBox.Show("DB-Fehler: " + ex.Message); } } } private void DeleteUserClick(object sender, RoutedEventArgs e) { if (_selected == null) return; if (_selected.UserID == Session.CurrentUser?.UserID) { MessageBox.Show("Sie können sich nicht selbst löschen!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Warning); return; } var r = MessageBox.Show($"Benutzer \"{_selected.Username}\" wirklich löschen?", "Bestätigung", MessageBoxButton.YesNo, MessageBoxImage.Warning); if (r == MessageBoxResult.Yes) { try { _repo.DeleteUser(_selected.UserID); LoadUsers(); } catch (System.Exception ex) { MessageBox.Show("DB-Fehler: " + ex.Message); } } } }