Update DeliveryAdminWindow

This commit is contained in:
2023-05-25 20:48:48 +02:00
parent ad47aa2a79
commit 577a3a0a63
4 changed files with 76 additions and 22 deletions

View File

@ -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));
}
}
}

View File

@ -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 = "";

View File

@ -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"

View File

@ -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;
}
}