126 lines
5.1 KiB
C#
126 lines
5.1 KiB
C#
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) {
|
|
|
|
}
|
|
}
|
|
}
|