VPR-Projekt-Frontend-2/PenPaperMain/CharakterListe.xaml.cs

50 lines
1.9 KiB
C#

using System.Collections.Generic;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
using System.Windows;
namespace Pen_Paper_Main
{
public partial class CharakterListe : Window
{
public CharakterListe() { InitializeComponent(); }
private class CharVm { public string name{get;set;}=""; public string username{get;set;}=""; }
private async void Window_Loaded(object s,RoutedEventArgs e) => await LoadAsync();
private async Task LoadAsync() {
using var http=new HttpClient();
var json=await http.GetStringAsync("http://localhost/api/characters.php?action=list");
using var doc=JsonDocument.Parse(json);
var items=new List<CharVm>();
foreach(var el in doc.RootElement.GetProperty("items").EnumerateArray()) {
items.Add(new CharVm {
name=el.GetProperty("name").GetString()??"",
username=el.GetProperty("username").GetString()??""
});
}
LstChars.ItemsSource=items;
}
private void Close_Click(object s,RoutedEventArgs e)=>Close();
private async void New_Click(object s,RoutedEventArgs e) {
var dlg=new CharakterNeu(); dlg.Owner=this; dlg.ShowDialog();
await LoadAsync();
}
private async void Delete_Click(object s,RoutedEventArgs e) {
if(LstChars.SelectedItem is CharVm vm) {
using var http=new HttpClient();
var url=$"http://localhost/api/characters.php?action=delete&username={vm.username}&name={vm.name}";
var resp=await http.DeleteAsync(url);
var body=await resp.Content.ReadAsStringAsync();
MessageBox.Show(body);
await LoadAsync();
}
}
}
}