Files
logofclient/ResultWindow.axaml.cs

157 lines
5.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Layout;
namespace Logof_Client;
public partial class ResultWindow : Window
{
public List<CheckBox> errortypecheckboxes = new();
public KasAddressList ur_addresses = new("Ergebnis_" + DateTime.Now.ToString("ddMMyy_HHmmss"));
public List<KasPerson> ur_result;
public List<CheckBox> warningtypecheckboxes = new();
public ResultWindow(List<KasPerson> result,
int addressSetID)
{
InitializeComponent();
ur_result = result;
ur_addresses = ur_addresses;
Load(result);
//ViewSingle(200552426);
}
private void GenerateView(List<KasPerson> result)
{
// Filter to only show persons with errors
var result_with_errors = result.Where(p => p.PersonError != null).ToList();
LblResultCount.Content = $"{result_with_errors.Count}/{ur_result.Count} Ergebnisse";
DgResult.ItemsSource = result_with_errors;
}
private void ViewSingle(int refsid)
{
foreach (var result in ur_addresses.KasPersons)
if (result.refsid == refsid)
{
var wind = new Window();
var stp = new StackPanel();
stp.Orientation = Orientation.Horizontal;
stp.Margin = new Thickness(10);
var tb = new TextBlock();
var tb2 = new TextBlock();
tb.Text =
"refsid:\nanrede:\ntitel:\nvorname:\nadel:\nname:\nnamezus:\nanredzus:\nstrasse:\nstrasse2:\nplz:\nort:\nland:\npplz:\npostfach:\nname1:\nname2:\nname3:\nname4:\nname5:\nfunktion:\nfunktion2:\nabteilung:\nfunktionad:";
tb2.Text = result.refsid + "\n" + result.anrede + "\n" + result.titel + "\n" + result.vorname + "\n" +
result.adel + "\n" + result.name + "\n" + result.namezus + "\n" + result.anredzus + "\n" +
result.strasse + "\n" + result.strasse2 + "\n" + result.plz + "\n" + result.ort + "\n" +
result.land + "\n" + result.pplz + "\n" + result.postfach + "\n" + result.name1 + "\n" +
result.name2 + "\n" + result.name3 + "\n" + result.name4 + "\n" + result.name5 + "\n" +
result.funktion + "\n" + result.funktion2 + "\n" + result.abteilung + "\n" +
result.funktionad;
stp.Children.Add(tb);
stp.Children.Add(tb2);
wind.Content = stp;
wind.ShowInTaskbar = false;
wind.SizeToContent = SizeToContent.WidthAndHeight;
wind.Show();
return;
}
}
private void Load(List<KasPerson> result)
{
var knownErrors = new List<AddressCheck.ErrorTypes>();
var knownWarnings = new List<AddressCheck.WarningTypes>();
foreach (var person in result)
{
if (person.PersonError == null) continue;
foreach (var errtyp in person.PersonError.errors)
if (!knownErrors.Contains(errtyp))
knownErrors.Add(errtyp);
foreach (var wartyp in person.PersonError.warnings)
if (!knownWarnings.Contains(wartyp))
knownWarnings.Add(wartyp);
}
foreach (var errtype in knownErrors)
{
var cb = new CheckBox();
cb.IsChecked = true;
cb.Content = errtype.ToString();
cb.Click += (sender, e) => UpdateFilter();
errortypecheckboxes.Add(cb);
StpFilterOptions.Children.Add(cb);
}
foreach (var wartype in knownWarnings)
{
var cb = new CheckBox();
cb.IsChecked = true;
cb.Content = wartype.ToString();
cb.Click += (sender, e) => UpdateFilter();
warningtypecheckboxes.Add(cb);
StpFilterOptions.Children.Add(cb);
}
GenerateView(result);
}
private void BtnUpdateFilter_OnClick(object? sender, RoutedEventArgs e)
{
}
private void UpdateFilter()
{
var temp_result = new List<KasPerson>();
var checked_types = new List<AddressCheck.ErrorTypes>();
var checked_types_war = new List<AddressCheck.WarningTypes>();
foreach (var cb in errortypecheckboxes)
if (cb.IsChecked == true)
checked_types.Add(
(AddressCheck.ErrorTypes)Enum.Parse(typeof(AddressCheck.ErrorTypes), cb.Content.ToString()));
foreach (var cb in warningtypecheckboxes)
if (cb.IsChecked == true)
checked_types_war.Add(
(AddressCheck.WarningTypes)Enum.Parse(typeof(AddressCheck.WarningTypes), cb.Content.ToString()));
foreach (var person in ur_result)
{
if (person.PersonError == null) continue;
foreach (var err in person.PersonError.errors)
if (checked_types.Contains(err) && !temp_result.Contains(person))
temp_result.Add(person);
foreach (var war in person.PersonError.warnings)
if (checked_types_war.Contains(war) && !temp_result.Contains(person))
temp_result.Add(person);
}
LblResultCount.Content = $"{temp_result.Count}/{ur_result.Count} Ergebnisse";
DgResult.ItemsSource = temp_result;
}
private void BtnShowSelected_OnClick(object? sender, RoutedEventArgs e)
{
foreach (var selected in DgResult.SelectedItems)
try
{
var _asKas = (KasPerson)selected;
ViewSingle(_asKas.refsid);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}