Update DeliveryAdminWindow
This commit is contained in:
@ -1,10 +1,13 @@
|
||||
using Elwig.Helpers;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Configuration;
|
||||
using System.Security.Cryptography.Pkcs;
|
||||
|
||||
namespace Elwig.Models {
|
||||
[Table("wine_quality_level"), PrimaryKey("QualId")]
|
||||
public class WineQualLevel {
|
||||
public class WineQualLevel : IEquatable<WineQualLevel> {
|
||||
[Column("qualid")]
|
||||
public string QualId { get; private set; }
|
||||
|
||||
@ -24,5 +27,21 @@ namespace Elwig.Models {
|
||||
public string Name { get; private set; }
|
||||
|
||||
public string MinKmwStr => (MinKmw == null) ? "" : $"(mind. {MinKmw:#.0}°)";
|
||||
|
||||
public override bool Equals(object? obj) {
|
||||
return Equals(obj as WineQualLevel);
|
||||
}
|
||||
|
||||
public bool Equals(WineQualLevel? obj) {
|
||||
return QualId == obj?.QualId;
|
||||
}
|
||||
|
||||
public static bool operator ==(WineQualLevel? q1, WineQualLevel? q2) {
|
||||
return q1?.Equals(q2) ?? Equals(q1, q2);
|
||||
}
|
||||
|
||||
public static bool operator !=(WineQualLevel? q1, WineQualLevel? q2) {
|
||||
return !(q1?.Equals(q2) ?? Equals(q1, q2));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -153,6 +153,14 @@ namespace Elwig.Windows {
|
||||
OriginalValues[rb] = (rb.IsChecked ?? false) ? bool.TrueString : null;
|
||||
}
|
||||
|
||||
protected void SetOriginalValue(Control input, object? value) {
|
||||
OriginalValues[input] = value;
|
||||
}
|
||||
|
||||
protected void UnsetOriginalValue(Control input) {
|
||||
OriginalValues.Remove(input);
|
||||
}
|
||||
|
||||
protected void ClearInputs() {
|
||||
foreach (var tb in TextBoxInputs)
|
||||
tb.Text = "";
|
||||
|
@ -84,7 +84,8 @@
|
||||
SelectionChanged="MemberInput_SelectionChanged"/>
|
||||
|
||||
<Label Content="Wohnort:" Margin="10,38,0,0" Grid.Column="0"/>
|
||||
<TextBox x:Name="MemberAddressField" Grid.Row="1" Grid.Column="1" Margin="0,40,10,10" FontSize="12" Height="22" IsReadOnly="True"/>
|
||||
<TextBox x:Name="MemberAddressField" Grid.Row="1" Grid.Column="1" Margin="0,40,10,10" FontSize="12" Height="22"
|
||||
IsReadOnly="True" IsTabStop="False"/>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
|
||||
@ -97,14 +98,14 @@
|
||||
|
||||
<Label Content="LieferscheinNr.:" Margin="10,10,0,0" Grid.Column="0"/>
|
||||
<TextBox x:Name="LsNrInput" Width="126" Grid.Column="1" HorizontalAlignment="Left" Margin="0,10,0,0"
|
||||
IsReadOnly="True"/>
|
||||
IsReadOnly="True" IsTabStop="False"/>
|
||||
|
||||
<Label Content="Datum/Uhrzeit:" Margin="10,40,0,0" Grid.Column="0"/>
|
||||
<TextBox x:Name="DateInput" Width="77" Grid.Column="1" HorizontalAlignment="Left" Margin="0,40,0,0"
|
||||
IsReadOnly="True"
|
||||
IsReadOnly="True" IsTabStop="False"
|
||||
TextChanged="DateInput_TextChanged"/>
|
||||
<TextBox x:Name="TimeInput" Width="44" Grid.Column="1" HorizontalAlignment="Left" Margin="82,40,0,0"
|
||||
IsReadOnly="True"/>
|
||||
IsReadOnly="True" IsTabStop="False"/>
|
||||
|
||||
<Label Content="Zweigstelle:" Margin="10,70,0,0" Grid.Column="0"/>
|
||||
<ComboBox x:Name="BranchInput" Width="126" Margin="0,70,10,0" Grid.Column="1" HorizontalAlignment="Left"
|
||||
|
@ -14,8 +14,7 @@ namespace Elwig.Windows {
|
||||
public partial class DeliveryAdminWindow : AdministrationWindow {
|
||||
|
||||
private bool IsUpdatingGradation = false;
|
||||
|
||||
private DispatcherTimer dispatcherTimer;
|
||||
private readonly DispatcherTimer Timer;
|
||||
|
||||
public DeliveryAdminWindow() {
|
||||
InitializeComponent();
|
||||
@ -31,10 +30,10 @@ namespace Elwig.Windows {
|
||||
MemberAddressField
|
||||
};
|
||||
|
||||
dispatcherTimer = new DispatcherTimer();
|
||||
dispatcherTimer.Tick += new EventHandler(OnSecondPassed);
|
||||
dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
|
||||
dispatcherTimer.Start();
|
||||
Timer = new DispatcherTimer();
|
||||
Timer.Tick += new EventHandler(OnSecondPassed);
|
||||
Timer.Interval = new TimeSpan(0, 0, 1);
|
||||
Timer.Start();
|
||||
}
|
||||
|
||||
private void Window_Loaded(object sender, RoutedEventArgs evt) {
|
||||
@ -61,7 +60,10 @@ namespace Elwig.Windows {
|
||||
Utils.RenewItemsSource(WineQualityLevelInput, await Context.WineQualityLevels.ToListAsync(), i => (i as WineQualLevel)?.QualId);
|
||||
Utils.RenewItemsSource(ModifiersInput, await Context.Modifiers.Where(m => m.Season.Year == 2022).OrderBy(m => m.Name).ToListAsync(), i => (i as Modifier)?.ModId);
|
||||
Utils.RenewItemsSource(WineOriginInput, (await Context.WineOrigins.ToListAsync()).OrderByDescending(o => o.SortKey).ThenBy(o => o.HkId), i => (i as WineOrigin)?.HkId);
|
||||
Utils.RenewItemsSource(WineKgInput, await Context.WbKgs.Select(k => k.AtKg).OrderBy(k => k.Name).ToListAsync(), i => (i as AT_Kg)?.KgNr);
|
||||
var kgList = await Context.WbKgs.Select(k => k.AtKg).OrderBy(k => k.Name).Cast<object>().ToListAsync();
|
||||
kgList.Insert(0, new NullItem());
|
||||
Utils.RenewItemsSource(WineKgInput, kgList, i => (i as AT_Kg)?.KgNr);
|
||||
if (WineKgInput.SelectedItem == null) WineKgInput.SelectedIndex = 0;
|
||||
UpdateWineQualityLevels();
|
||||
UpdateRdInput();
|
||||
}
|
||||
@ -80,14 +82,20 @@ namespace Elwig.Windows {
|
||||
var m = MemberInput.SelectedItem as Member;
|
||||
if (m != null) MgNrInput.Text = m.MgNr.ToString();
|
||||
MemberAddressField.Text = m?.FullAddress;
|
||||
WineKgInput.SelectedItem = m?.DefaultKg;
|
||||
if (m == null) {
|
||||
UnsetOriginalValue(WineKgInput);
|
||||
WineKgInput.SelectedIndex = 0;
|
||||
} else {
|
||||
SetOriginalValue(WineKgInput, m.DefaultKg);
|
||||
WineKgInput.SelectedItem = m.DefaultKg;
|
||||
}
|
||||
}
|
||||
|
||||
private void DateInput_TextChanged(object sender, TextChangedEventArgs evt) {
|
||||
var branch = (Branch)BranchInput.SelectedItem;
|
||||
var date = DateOnly.ParseExact(DateInput.Text, "dd.MM.yyyy");
|
||||
var lnr = Context.NextLNr(date).GetAwaiter().GetResult();
|
||||
LsNrInput.Text = $"{date.ToString("yyyyMMdd")}{branch.ZwstId}{lnr:000}";
|
||||
LsNrInput.Text = $"{date:yyyyMMdd}{branch.ZwstId}{lnr:000}";
|
||||
}
|
||||
|
||||
private void UpdateWineVariety(bool valid) {
|
||||
@ -119,10 +127,16 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
private void UpdateWineQualityLevels() {
|
||||
if (!GetInputValid(GradationKmwInput)) {
|
||||
UnsetOriginalValue(WineQualityLevelInput);
|
||||
WineQualityLevelInput.ItemsSource = null;
|
||||
return;
|
||||
}
|
||||
var kmw = double.Parse(GradationKmwInput.Text);
|
||||
WineQualityLevelInput.ItemsSource = Context.WineQualityLevels.Where(q => q.MinKmw == null || q.MinKmw <= kmw).ToList();
|
||||
var qual = Context.WineQualityLevels.Where(q => !q.IsPredicate && (q.MinKmw == null || q.MinKmw <= kmw)).OrderBy(q => q.MinKmw).LastOrDefault();
|
||||
SetOriginalValue(WineQualityLevelInput, qual);
|
||||
if (WineQualityLevelInput.SelectedItem == null || (WineQualityLevelInput.SelectedItem is WineQualLevel selected && !selected.IsPredicate)) {
|
||||
var qual = Context.WineQualityLevels.Where(q => !q.IsPredicate && (q.MinKmw == null || q.MinKmw <= kmw)).OrderBy(q => q.MinKmw).LastOrDefault();
|
||||
WineQualityLevelInput.SelectedItem = qual;
|
||||
}
|
||||
}
|
||||
@ -133,7 +147,6 @@ namespace Elwig.Windows {
|
||||
GradationKmwInput.Text = $"{Utils.OeToKmw(double.Parse(GradationOeInput.Text)):#.0}";
|
||||
GradationKmwInput.CaretIndex = caret;
|
||||
IsUpdatingGradation = false;
|
||||
UpdateWineQualityLevels();
|
||||
}
|
||||
|
||||
private void UpdateGradationOe() {
|
||||
@ -142,12 +155,15 @@ namespace Elwig.Windows {
|
||||
GradationOeInput.Text = $"{Utils.KmwToOe(double.Parse(GradationKmwInput.Text)):#}";
|
||||
GradationOeInput.CaretIndex = caret;
|
||||
IsUpdatingGradation = false;
|
||||
UpdateWineQualityLevels();
|
||||
}
|
||||
|
||||
private void GradationOeInput_TextChanged(object sender, TextChangedEventArgs evt) {
|
||||
var valid = InputTextChanged((TextBox)sender, Validator.CheckGradatoinOe);
|
||||
if (valid && !IsUpdatingGradation) UpdateGradationKmw();
|
||||
if (!IsUpdatingGradation) {
|
||||
if (valid) UpdateGradationKmw();
|
||||
else if (GradationOeInput.Text.Length == 0) GradationKmwInput.Text = "";
|
||||
UpdateWineQualityLevels();
|
||||
}
|
||||
}
|
||||
|
||||
private void GradationOeInput_LostFocus(object sender, RoutedEventArgs evt) {
|
||||
@ -156,7 +172,11 @@ namespace Elwig.Windows {
|
||||
|
||||
private void GradationKmwInput_TextChanged(object sender, TextChangedEventArgs evt) {
|
||||
var valid = InputTextChanged((TextBox)sender, Validator.CheckGradationKmw);
|
||||
if (valid && !IsUpdatingGradation) UpdateGradationOe();
|
||||
if (!IsUpdatingGradation) {
|
||||
if (valid) UpdateGradationOe();
|
||||
else if (GradationKmwInput.Text.Length == 0) GradationOeInput.Text = "";
|
||||
UpdateWineQualityLevels();
|
||||
}
|
||||
}
|
||||
|
||||
private void GradationKmwInput_LostFocus(object sender, RoutedEventArgs evt) {
|
||||
@ -173,9 +193,13 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
private void UpdateWineOrigin() {
|
||||
var qual = (WineQualLevel)WineQualityLevelInput.SelectedItem;
|
||||
var kg = ((AT_Kg)WineKgInput.SelectedItem)?.WbKg;
|
||||
if (qual == null || kg == null) return;
|
||||
var qual = WineQualityLevelInput.SelectedItem as WineQualLevel;
|
||||
var kg = (WineKgInput.SelectedItem as AT_Kg)?.WbKg;
|
||||
if (qual == null || kg == null) {
|
||||
WineOriginInput.IsEnabled = true;
|
||||
return;
|
||||
}
|
||||
WineOriginInput.IsEnabled = false;
|
||||
var o = kg.Origin;
|
||||
while (o != null && o.Level > qual.OriginLevel) o = o.Parent;
|
||||
WineOriginInput.SelectedItem = o;
|
||||
@ -191,8 +215,10 @@ namespace Elwig.Windows {
|
||||
list.Insert(0, new NullItem());
|
||||
Utils.RenewItemsSource(WineRdInput, list, i => ((i as WbRd)?.KgNr, (i as WbRd)?.RdNr));
|
||||
if (WineRdInput.SelectedItem == null) WineRdInput.SelectedIndex = 0;
|
||||
WineRdInput.IsEnabled = list.Count > 1;
|
||||
} else {
|
||||
WineRdInput.ItemsSource = null;
|
||||
WineRdInput.IsEnabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user