CineBook Projekt hinzugefügt
This commit is contained in:
92
Views/AdminPanelView.xaml.cs
Normal file
92
Views/AdminPanelView.xaml.cs
Normal file
@@ -0,0 +1,92 @@
|
||||
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); }
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user