From 8c23df8cdaebc96b1b0d800de8c91588753d0820 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Tue, 17 Sep 2024 09:40:36 +0200 Subject: [PATCH] Added extra too far in the future validation on the client-side --- src/BreCalClient/EditShipcallControl.xaml.cs | 4 ++++ .../EditTimesAgencyIncomingControl.xaml.cs | 6 ++++++ .../EditTimesAgencyOutgoingControl.xaml.cs | 6 ++++++ .../EditTimesAgencyShiftingControl.xaml.cs | 7 +++++++ src/BreCalClient/EditTimesControl.xaml.cs | 10 +++++++++- src/BreCalClient/EditTimesTerminalControl.xaml.cs | 6 ++++++ src/BreCalClient/Extensions.cs | 13 +++++++++++-- src/BreCalClient/Resources/Resources.Designer.cs | 9 +++++++++ src/BreCalClient/Resources/Resources.de.resx | 3 +++ src/BreCalClient/Resources/Resources.resx | 3 +++ 10 files changed, 64 insertions(+), 3 deletions(-) diff --git a/src/BreCalClient/EditShipcallControl.xaml.cs b/src/BreCalClient/EditShipcallControl.xaml.cs index 745151b..fd42086 100644 --- a/src/BreCalClient/EditShipcallControl.xaml.cs +++ b/src/BreCalClient/EditShipcallControl.xaml.cs @@ -207,12 +207,14 @@ namespace BreCalClient isEnabled &= this.datePickerETD.Value.HasValue; if(this.datePickerETD.Value.HasValue) isEnabled &= (this.datePickerETD.Value.Value > DateTime.Now); + isEnabled &= !this.datePickerETD.Value.IsTooFar(); break; case ShipcallType.Arrival: isEnabled &= this.comboBoxArrivalBerth.SelectedItem != null; isEnabled &= this.datePickerETA.Value.HasValue; if(this.datePickerETA.Value.HasValue) isEnabled &= (this.datePickerETA.Value.Value > DateTime.Now); + isEnabled &= !this.datePickerETA.Value.IsTooFar(); break; case ShipcallType.Shifting: isEnabled &= ((this.comboBoxDepartureBerth.SelectedItem != null) && (this.comboBoxArrivalBerth.SelectedItem != null)); @@ -224,6 +226,8 @@ namespace BreCalClient isEnabled &= (this.datePickerETA.Value.Value > DateTime.Now); if (this.datePickerETA.Value.HasValue && this.datePickerETD.Value.HasValue) isEnabled &= (this.datePickerETA.Value.Value > this.datePickerETD.Value.Value); + isEnabled &= !this.datePickerETD.Value.IsTooFar(); + isEnabled &= !this.datePickerETA.Value.IsTooFar(); break; } } diff --git a/src/BreCalClient/EditTimesAgencyIncomingControl.xaml.cs b/src/BreCalClient/EditTimesAgencyIncomingControl.xaml.cs index e259adf..db03b11 100644 --- a/src/BreCalClient/EditTimesAgencyIncomingControl.xaml.cs +++ b/src/BreCalClient/EditTimesAgencyIncomingControl.xaml.cs @@ -139,6 +139,12 @@ namespace BreCalClient return false; } + if(this.datePickerETA.Value.IsTooFar() || this.datePickerETA_End.Value.IsTooFar() || this.datePickerTidalWindowFrom.Value.IsTooFar() || this.datePickerTidalWindowTo.Value.IsTooFar()) + { + message = BreCalClient.Resources.Resources.textTooFarInTheFuture; + return false; + } + return true; } diff --git a/src/BreCalClient/EditTimesAgencyOutgoingControl.xaml.cs b/src/BreCalClient/EditTimesAgencyOutgoingControl.xaml.cs index 615236a..b05ec49 100644 --- a/src/BreCalClient/EditTimesAgencyOutgoingControl.xaml.cs +++ b/src/BreCalClient/EditTimesAgencyOutgoingControl.xaml.cs @@ -149,6 +149,12 @@ namespace BreCalClient return false; } + if (this.datePickerETD.Value.IsTooFar() || this.datePickerETD_End.Value.IsTooFar() || this.datePickerTidalWindowFrom.Value.IsTooFar() || this.datePickerTidalWindowTo.Value.IsTooFar()) + { + message = BreCalClient.Resources.Resources.textTooFarInTheFuture; + return false; + } + return true; } diff --git a/src/BreCalClient/EditTimesAgencyShiftingControl.xaml.cs b/src/BreCalClient/EditTimesAgencyShiftingControl.xaml.cs index aa34817..fdf8619 100644 --- a/src/BreCalClient/EditTimesAgencyShiftingControl.xaml.cs +++ b/src/BreCalClient/EditTimesAgencyShiftingControl.xaml.cs @@ -157,6 +157,13 @@ namespace BreCalClient return false; } + if (this.datePickerETA.Value.IsTooFar() || this.datePickerETA_End.Value.IsTooFar() || this.datePickerTidalWindowFrom.Value.IsTooFar() || this.datePickerTidalWindowTo.Value.IsTooFar() || + this.datePickerETD.Value.IsTooFar() || this.datePickerETD_End.Value.IsTooFar()) + { + message = BreCalClient.Resources.Resources.textTooFarInTheFuture; + return false; + } + return true; } diff --git a/src/BreCalClient/EditTimesControl.xaml.cs b/src/BreCalClient/EditTimesControl.xaml.cs index 8deaae6..3ce8417 100644 --- a/src/BreCalClient/EditTimesControl.xaml.cs +++ b/src/BreCalClient/EditTimesControl.xaml.cs @@ -5,6 +5,7 @@ using BreCalClient.misc.Model; using System; +using System.Runtime.Serialization; using System.Windows; using System.Windows.Media.Imaging; using Xceed.Wpf.Toolkit; @@ -125,7 +126,14 @@ namespace BreCalClient { message = BreCalClient.Resources.Resources.textZoneEntryInThePast; return false; - } + } + + if(this.datePickerATA.Value.IsTooFar() || this.datePickerATD.Value.IsTooFar() || this.datePickerETABerth.Value.IsTooFar() || this.datePickerETABerth_End.Value.IsTooFar() || + this.datePickerETDBerth.Value.IsTooFar() || this.datePickerETDBerth_End.Value.IsTooFar() || this.datePickerLockTime.Value.IsTooFar() || this.datePickerZoneEntry.Value.IsTooFar()) + { + message = BreCalClient.Resources.Resources.textTooFarInTheFuture; + return false; + } return true; } diff --git a/src/BreCalClient/EditTimesTerminalControl.xaml.cs b/src/BreCalClient/EditTimesTerminalControl.xaml.cs index 92732f4..1b43b18 100644 --- a/src/BreCalClient/EditTimesTerminalControl.xaml.cs +++ b/src/BreCalClient/EditTimesTerminalControl.xaml.cs @@ -144,6 +144,12 @@ namespace BreCalClient return false; } + if(this.datePickerOperationEnd.Value.IsTooFar() || this.datePickerOperationEnd_End.Value.IsTooFar() || this.datePickerOperationStart.Value.IsTooFar() || this.datePickerOperationStart_End.Value.IsTooFar()) + { + message = BreCalClient.Resources.Resources.textTooFarInTheFuture; + return false; + } + return true; } diff --git a/src/BreCalClient/Extensions.cs b/src/BreCalClient/Extensions.cs index f341598..54fedb3 100644 --- a/src/BreCalClient/Extensions.cs +++ b/src/BreCalClient/Extensions.cs @@ -3,10 +3,8 @@ // using BreCalClient.misc.Model; -using Newtonsoft.Json.Linq; using System; using System.ComponentModel; -using System.Runtime.CompilerServices; namespace BreCalClient { @@ -60,6 +58,17 @@ namespace BreCalClient #region public helper + public static bool IsTooFar(this DateTime datetime) + { + return datetime > DateTime.Now.AddYears(1); + } + + public static bool IsTooFar(this DateTime? datetime) + { + if (datetime == null) return false; + return datetime > DateTime.Now.AddYears(1); + } + public static bool IsTypeFlagSet(this Participant participant, ParticipantType flag) { return (participant.Type & (uint)flag) != 0; diff --git a/src/BreCalClient/Resources/Resources.Designer.cs b/src/BreCalClient/Resources/Resources.Designer.cs index 2cc1e8c..3537740 100644 --- a/src/BreCalClient/Resources/Resources.Designer.cs +++ b/src/BreCalClient/Resources/Resources.Designer.cs @@ -1253,6 +1253,15 @@ namespace BreCalClient.Resources { } } + /// + /// Looks up a localized string similar to A time value is too far in the future. + /// + public static string textTooFarInTheFuture { + get { + return ResourceManager.GetString("textTooFarInTheFuture", resourceCulture); + } + } + /// /// Looks up a localized string similar to Set as a fixed order. /// diff --git a/src/BreCalClient/Resources/Resources.de.resx b/src/BreCalClient/Resources/Resources.de.resx index cdd4e08..5cf59e7 100644 --- a/src/BreCalClient/Resources/Resources.de.resx +++ b/src/BreCalClient/Resources/Resources.de.resx @@ -544,4 +544,7 @@ Für das Tidenfenster müssen beide Zeiten angegeben werden + + Eine Zeiteingabe ist zu weit in der Zukunft + \ No newline at end of file diff --git a/src/BreCalClient/Resources/Resources.resx b/src/BreCalClient/Resources/Resources.resx index 28af8fe..0b1de64 100644 --- a/src/BreCalClient/Resources/Resources.resx +++ b/src/BreCalClient/Resources/Resources.resx @@ -502,6 +502,9 @@ to + + A time value is too far in the future + Set as a fixed order