Files
WIR-MACHEN-ALLE-ARM/Casino/EditUserView.xaml.cs
T
2026-09-14 22:31:22 +02:00

149 lines
4.1 KiB
C#

using System;
using System.Security.Cryptography;
using System.Text;
using System.Windows;
using System.Windows.Controls;
namespace Casino
{
public partial class EditUserView : Window
{
private readonly Database db = new Database();
private readonly User selectedUser;
public EditUserView(User user)
{
InitializeComponent();
selectedUser = user;
// Bestehende Werte anzeigen
TxtName.Text = selectedUser.Name;
TxtAge.Text = selectedUser.Alter.ToString();
TxtGeld.Text = selectedUser.Geld.ToString();
// Rolle auswählen
foreach (ComboBoxItem item in CmbRolle.Items)
{
if (item.Content?.ToString() == selectedUser.Rolle)
{
CmbRolle.SelectedItem = item;
break;
}
}
}
private void BtnSpeichern_Click(object sender, RoutedEventArgs e)
{
if (string.IsNullOrWhiteSpace(TxtName.Text))
{
MessageBox.Show(
"Bitte gib einen Namen ein.",
"Fehler",
MessageBoxButton.OK,
MessageBoxImage.Warning);
return;
}
// Alter prüfen
if (!int.TryParse(TxtAge.Text, out int age) ||
age < 0 ||
age > 150)
{
MessageBox.Show(
"Bitte gib ein gültiges Alter ein.",
"Fehler",
MessageBoxButton.OK,
MessageBoxImage.Warning);
return;
}
// Geld prüfen
if (!decimal.TryParse(TxtGeld.Text, out decimal geld))
{
MessageBox.Show(
"Bitte gib einen gültigen Geldbetrag ein.",
"Fehler",
MessageBoxButton.OK,
MessageBoxImage.Warning);
return;
}
if (CmbRolle.SelectedItem is not ComboBoxItem selectedRoleItem)
{
MessageBox.Show(
"Bitte wähle eine Rolle aus.",
"Fehler",
MessageBoxButton.OK,
MessageBoxImage.Warning);
return;
}
string rolle = selectedRoleItem.Content?.ToString() ?? "User";
// Passwort:
// leer = altes Passwort behalten
string passwort = selectedUser.Passwort;
if (!string.IsNullOrWhiteSpace(TxtPasswort.Password))
{
passwort = HashPassword(TxtPasswort.Password);
}
// Datenbank aktualisieren
bool success = db.UpdateUser(
selectedUser.ID,
TxtName.Text.Trim(),
age,
passwort,
geld,
rolle);
if (success)
{
MessageBox.Show(
"Benutzer wurde erfolgreich aktualisiert.",
"Erfolgreich",
MessageBoxButton.OK,
MessageBoxImage.Information);
Close();
}
else
{
MessageBox.Show(
"Die Änderungen konnten nicht gespeichert werden.",
"Fehler",
MessageBoxButton.OK,
MessageBoxImage.Error);
}
}
private void BtnAbbrechen_Click(object sender, RoutedEventArgs e)
{
Close();
}
private static string HashPassword(string password)
{
using SHA256 sha256 = SHA256.Create();
byte[] bytes = Encoding.UTF8.GetBytes(password);
byte[] hash = sha256.ComputeHash(bytes);
StringBuilder builder = new StringBuilder();
foreach (byte b in hash)
{
builder.Append(b.ToString("X2"));
}
return builder.ToString();
}
}
}