Add DeliveryAdminWindow

This commit is contained in:
2023-05-22 21:32:06 +02:00
parent 3bf7d65dea
commit dc236bab62
13 changed files with 534 additions and 35 deletions

View File

@ -0,0 +1,125 @@
using Elwig.Helpers;
using Elwig.Models;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using Xceed.Wpf.Toolkit.Primitives;
namespace Elwig.Windows {
public partial class DeliveryAdminWindow : AdministrationWindow {
private bool IsUpdatingGradation = false;
public DeliveryAdminWindow() {
InitializeComponent();
RequiredInputs = new Control[] {
MgNrInput, MemberInput,
SortIdInput, WineVarietyInput,
GradationOeInput, GradationKmwInput,
WineOriginInput
};
ExemptInputs = new Control[] {
MgNrInput, MemberInput,
MemberAddressField
};
}
private void Window_Loaded(object sender, RoutedEventArgs evt) {
MemberInput.ItemsSource = Context.Members.OrderBy(m => m.FamilyName).ThenBy(m => m.GivenName).ToList();
WineVarietyInput.ItemsSource = Context.WineVarieties.OrderBy(v => v.Name).ToList();
AttributesInput.ItemsSource = Context.WineAttributes.OrderBy(a => a.Name).ToList();
ModifiersInput.ItemsSource = Context.Modifiers.Where(m => m.Season.Year == 2022).OrderBy(m => m.Name).ToList();
WineOriginInput.ItemsSource = Context.WineOrigins.ToList().OrderByDescending(o => o.SortKey).ThenBy(o => o.HkId);
}
protected override void UpdateButtons() {
}
private void MgNrInput_TextChanged(object sender, TextChangedEventArgs evt) {
var valid = InputTextChanged((TextBox)sender, Validator.CheckMgNr);
MemberInput.SelectedItem = valid ? Context.Members.Find(int.Parse(MgNrInput.Text)) : null;
}
private void MgNrInput_LostFocus(object sender, RoutedEventArgs evt) {
var valid = InputLostFocus((TextBox)sender, Validator.CheckMgNr);
MemberInput.SelectedItem = valid ? Context.Members.Find(int.Parse(MgNrInput.Text)) : null;
}
private void MemberInput_SelectionChanged(object sender, SelectionChangedEventArgs evt) {
var m = MemberInput.SelectedItem as Member;
if (m != null) MgNrInput.Text = m.MgNr.ToString();
MemberAddressField.Text = m?.FullAddress;
}
private void UpdateWineVariety(bool valid) {
if (valid) {
var text = SortIdInput.Text;
WineVarietyInput.SelectedItem = Context.WineVarieties.Find(text[0..2]);
if (text.Length >= 3) {
AttributesInput.UnSelectAll();
AttributesInput.SelectedItems.Add(Context.WineAttributes.Find(text[2..]));
SortIdInput.Text = text[0..2];
}
} else {
WineVarietyInput.SelectedItem = null;
AttributesInput.UnSelectAll();
}
}
private void SortIdInput_TextChanged(object sender, TextChangedEventArgs evt) {
UpdateWineVariety(InputTextChanged((TextBox)sender, Validator.CheckSortId));
}
private void SortIdInput_LostFocus(object sender, RoutedEventArgs evt) {
UpdateWineVariety(InputLostFocus((TextBox)sender, Validator.CheckSortId));
}
private void WineVarietyInput_SelectionChanged(object sender, SelectionChangedEventArgs evt) {
var s = WineVarietyInput.SelectedItem as WineVar;
if (s != null) SortIdInput.Text = s.SortId;
}
private void UpdateGradationKmw() {
IsUpdatingGradation = true;
var caret = GradationKmwInput.CaretIndex;
GradationKmwInput.Text = $"{Utils.OeToKmw(double.Parse(GradationOeInput.Text)):#.0}";
GradationKmwInput.CaretIndex = caret;
IsUpdatingGradation = false;
}
private void UpdateGradationOe() {
IsUpdatingGradation = true;
var caret = GradationOeInput.CaretIndex;
GradationOeInput.Text = $"{Utils.KmwToOe(double.Parse(GradationKmwInput.Text)):#}";
GradationOeInput.CaretIndex = caret;
IsUpdatingGradation = false;
}
private void GradationOeInput_TextChanged(object sender, TextChangedEventArgs evt) {
var valid = InputTextChanged((TextBox)sender, Validator.CheckGradatoinOe);
if (valid && !IsUpdatingGradation) UpdateGradationKmw();
}
private void GradationOeInput_LostFocus(object sender, RoutedEventArgs evt) {
InputLostFocus((TextBox)sender, Validator.CheckGradatoinOe);
}
private void GradationKmwInput_TextChanged(object sender, TextChangedEventArgs evt) {
var valid = InputTextChanged((TextBox)sender, Validator.CheckGradationKmw);
if (valid && !IsUpdatingGradation) UpdateGradationOe();
}
private void GradationKmwInput_LostFocus(object sender, RoutedEventArgs evt) {
InputLostFocus((TextBox)sender, Validator.CheckGradationKmw);
}
private void AttributesInput_SelectionChanged(object sender, ItemSelectionChangedEventArgs evt) {
}
private void ModifiersInput_SelectionChanged(object sender, ItemSelectionChangedEventArgs evt) {
}
}
}