diff --git a/src/BreCalClient/EditShipcallControl.xaml.cs b/src/BreCalClient/EditShipcallControl.xaml.cs index c37e0d5..1fee1a4 100644 --- a/src/BreCalClient/EditShipcallControl.xaml.cs +++ b/src/BreCalClient/EditShipcallControl.xaml.cs @@ -207,26 +207,22 @@ namespace BreCalClient { case ShipcallType.Departure: isEnabled &= this.comboBoxDepartureBerth.SelectedItem != null; - isEnabled &= this.datePickerETD.Value.HasValue; - if(this.datePickerETD.Value.HasValue) - isEnabled &= (this.datePickerETD.Value.Value > DateTime.Now); + isEnabled &= this.datePickerETD.Value.HasValue; + isEnabled &= !(this.datePickerETD.Value.IsTooOld() && this.datePickerETD.Value != this.ShipcallModel.Shipcall?.Etd); 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.HasValue; + isEnabled &= !(this.datePickerETA.Value.IsTooOld() && this.datePickerETA.Value != this.ShipcallModel.Shipcall?.Eta); isEnabled &= !this.datePickerETA.Value.IsTooFar(); break; case ShipcallType.Shifting: isEnabled &= ((this.comboBoxDepartureBerth.SelectedItem != null) && (this.comboBoxArrivalBerth.SelectedItem != null)); isEnabled &= this.datePickerETD.Value.HasValue; - isEnabled &= this.datePickerETA.Value.HasValue; - if (this.datePickerETD.Value.HasValue) - isEnabled &= (this.datePickerETD.Value.Value > DateTime.Now); - if (this.datePickerETA.Value.HasValue) - isEnabled &= (this.datePickerETA.Value.Value > DateTime.Now); + isEnabled &= this.datePickerETA.Value.HasValue; + isEnabled &= !(this.datePickerETD.Value.IsTooOld() && this.datePickerETD.Value != this.ShipcallModel.Shipcall?.Etd); + isEnabled &= !(this.datePickerETA.Value.IsTooOld() && this.datePickerETA.Value != this.ShipcallModel.Shipcall?.Eta); if (this.datePickerETA.Value.HasValue && this.datePickerETD.Value.HasValue) isEnabled &= (this.datePickerETA.Value.Value > this.datePickerETD.Value.Value); isEnabled &= !this.datePickerETD.Value.IsTooFar(); diff --git a/src/BreCalClient/EditTimesAgencyIncomingControl.xaml.cs b/src/BreCalClient/EditTimesAgencyIncomingControl.xaml.cs index be6a848..8fd93cc 100644 --- a/src/BreCalClient/EditTimesAgencyIncomingControl.xaml.cs +++ b/src/BreCalClient/EditTimesAgencyIncomingControl.xaml.cs @@ -104,13 +104,13 @@ namespace BreCalClient { message = ""; - if (this.datePickerETA.Value.HasValue && (this.datePickerETA.Value.Value < DateTime.Now) && (this.datePickerETA_End.Value == null)) + if (this.datePickerETA.Value.IsTooOld() && (this.datePickerETA_End.Value == null) && (this.datePickerETA.Value != this.Times.EtaBerth)) { message = BreCalClient.Resources.Resources.textETAInThePast; return false; } - if(this.datePickerETA_End.Value.HasValue && this.datePickerETA_End.Value < DateTime.Now) + if(this.datePickerETA_End.Value.IsTooOld() && (this.datePickerETA_End.Value != this.Times.EtaIntervalEnd)) { message = BreCalClient.Resources.Resources.textETAInThePast; return false; @@ -122,13 +122,13 @@ namespace BreCalClient return false; } - if (this.datePickerTidalWindowFrom.Value.HasValue && (this.datePickerTidalWindowFrom.Value.Value < DateTime.Now) && (this.datePickerTidalWindowTo.Value == null)) + if (this.datePickerTidalWindowFrom.Value.IsTooOld() && (this.datePickerTidalWindowTo.Value == null) && (this.datePickerTidalWindowFrom.Value != this.ShipcallModel.Shipcall?.TidalWindowFrom)) { message = BreCalClient.Resources.Resources.textTideTimesInThePast; return false; } - if (this.datePickerTidalWindowTo.Value.HasValue && this.datePickerTidalWindowTo.Value < DateTime.Now) + if (this.datePickerTidalWindowTo.Value.IsTooOld() && (this.datePickerTidalWindowTo.Value != this.ShipcallModel.Shipcall?.TidalWindowTo)) { message = BreCalClient.Resources.Resources.textTideTimesInThePast; return false; diff --git a/src/BreCalClient/EditTimesAgencyOutgoingControl.xaml.cs b/src/BreCalClient/EditTimesAgencyOutgoingControl.xaml.cs index b9ab4b3..9205f5b 100644 --- a/src/BreCalClient/EditTimesAgencyOutgoingControl.xaml.cs +++ b/src/BreCalClient/EditTimesAgencyOutgoingControl.xaml.cs @@ -114,13 +114,13 @@ namespace BreCalClient { message = ""; - if (this.datePickerETD.Value.HasValue && (this.datePickerETD.Value.Value < DateTime.Now) && (this.datePickerETD_End.Value == null)) + if (this.datePickerETD.Value.IsTooOld() && (this.datePickerETD_End.Value == null) && (this.datePickerETD.Value != this.Times.EtdBerth)) { message = BreCalClient.Resources.Resources.textETDInThePast; return false; } - if (this.datePickerETD_End.Value.HasValue && this.datePickerETD_End.Value < DateTime.Now) + if (this.datePickerETD_End.Value.IsTooOld() && (this.datePickerETD_End.Value != this.Times.EtdIntervalEnd)) { message = BreCalClient.Resources.Resources.textETDInThePast; return false; @@ -132,13 +132,13 @@ namespace BreCalClient return false; } - if (this.datePickerTidalWindowFrom.Value.HasValue && (this.datePickerTidalWindowFrom.Value.Value < DateTime.Now) && (this.datePickerTidalWindowTo.Value == null)) + if (this.datePickerTidalWindowFrom.Value.IsTooOld() && (this.datePickerTidalWindowTo.Value == null) && (this.datePickerTidalWindowFrom.Value != this.ShipcallModel.Shipcall?.TidalWindowFrom)) { message = BreCalClient.Resources.Resources.textTideTimesInThePast; return false; } - if (this.datePickerTidalWindowTo.Value.HasValue && this.datePickerTidalWindowTo.Value < DateTime.Now) + if (this.datePickerTidalWindowTo.Value.IsTooOld() && (this.datePickerTidalWindowTo.Value != this.ShipcallModel.Shipcall?.TidalWindowTo)) { message = BreCalClient.Resources.Resources.textTideTimesInThePast; return false; diff --git a/src/BreCalClient/EditTimesAgencyShiftingControl.xaml.cs b/src/BreCalClient/EditTimesAgencyShiftingControl.xaml.cs index dce2613..2323450 100644 --- a/src/BreCalClient/EditTimesAgencyShiftingControl.xaml.cs +++ b/src/BreCalClient/EditTimesAgencyShiftingControl.xaml.cs @@ -108,13 +108,13 @@ namespace BreCalClient { message = ""; - if (this.datePickerETA.Value.HasValue && (this.datePickerETA.Value.Value < DateTime.Now) && (this.datePickerETA_End.Value == null)) + if (this.datePickerETA.Value.IsTooOld() && (this.datePickerETA_End.Value == null) && (this.datePickerETA.Value != this.Times.EtaBerth)) { message = BreCalClient.Resources.Resources.textETAInThePast; return false; } - if (this.datePickerETA_End.Value.HasValue && this.datePickerETA_End.Value < DateTime.Now) + if (this.datePickerETA_End.Value.IsTooOld() && (this.datePickerETA_End.Value != this.Times.EtaIntervalEnd)) { message = BreCalClient.Resources.Resources.textETAInThePast; return false; @@ -126,13 +126,13 @@ namespace BreCalClient return false; } - if (this.datePickerETD.Value.HasValue && (this.datePickerETD.Value.Value < DateTime.Now) && (this.datePickerETD_End.Value == null)) + if (this.datePickerETD.Value.IsTooOld() && (this.datePickerETD_End.Value == null) && (this.datePickerETD.Value != this.Times.EtdBerth)) { message = BreCalClient.Resources.Resources.textETDInThePast; return false; } - if (this.datePickerETD_End.Value.HasValue && this.datePickerETD_End.Value < DateTime.Now) + if (this.datePickerETD_End.Value.IsTooOld() && (this.datePickerETD_End.Value != this.Times.EtdIntervalEnd)) { message = BreCalClient.Resources.Resources.textETDInThePast; return false; @@ -144,13 +144,13 @@ namespace BreCalClient return false; } - if (this.datePickerTidalWindowFrom.Value.HasValue && (this.datePickerTidalWindowFrom.Value.Value < DateTime.Now) && (this.datePickerTidalWindowTo.Value == null)) + if (this.datePickerTidalWindowFrom.Value.IsTooOld() && (this.datePickerTidalWindowTo.Value == null) && (this.datePickerTidalWindowFrom.Value != this.ShipcallModel.Shipcall?.TidalWindowFrom)) { message = BreCalClient.Resources.Resources.textTideTimesInThePast; return false; } - if (this.datePickerTidalWindowTo.Value.HasValue && this.datePickerTidalWindowTo.Value < DateTime.Now) + if (this.datePickerTidalWindowTo.Value.IsTooOld() && (this.datePickerTidalWindowTo.Value != this.ShipcallModel.Shipcall?.TidalWindowTo)) { message = BreCalClient.Resources.Resources.textTideTimesInThePast; return false; diff --git a/src/BreCalClient/EditTimesControl.xaml.cs b/src/BreCalClient/EditTimesControl.xaml.cs index 7d5e118..20859d7 100644 --- a/src/BreCalClient/EditTimesControl.xaml.cs +++ b/src/BreCalClient/EditTimesControl.xaml.cs @@ -49,7 +49,8 @@ namespace BreCalClient { if (!CheckValues(out string message)) { - System.Windows.MessageBox.Show(message, "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); + System.Windows.MessageBox.Show(message, BreCalClient.Resources.Resources.textWarning, + MessageBoxButton.OK, MessageBoxImage.Warning); } else { @@ -98,13 +99,13 @@ namespace BreCalClient message = ""; - if (this.datePickerETABerth.Value.HasValue && (this.datePickerETABerth.Value.Value < DateTime.Now) && (this.datePickerETABerth_End.Value == null) && (this.datePickerETABerth.Value != this.Times.EtaBerth)) + if (this.datePickerETABerth.Value.IsTooOld() && (this.datePickerETABerth_End.Value == null) && (this.datePickerETABerth.Value != this.Times.EtaBerth)) { message = BreCalClient.Resources.Resources.textETAInThePast; return false; } - if (this.datePickerETABerth_End.Value.HasValue && this.datePickerETABerth_End.Value < DateTime.Now && this.datePickerETABerth_End.Value != this.Times.EtaIntervalEnd) + if (this.datePickerETABerth_End.Value.IsTooOld() && this.datePickerETABerth_End.Value != this.Times.EtaIntervalEnd) { message = BreCalClient.Resources.Resources.textETAInThePast; return false; @@ -116,13 +117,13 @@ namespace BreCalClient return false; } - if (this.datePickerETDBerth.Value.HasValue && (this.datePickerETDBerth.Value.Value < DateTime.Now) && (this.datePickerETABerth_End.Value == null) && (this.datePickerETDBerth.Value != this.Times.EtdBerth)) + if (this.datePickerETDBerth.Value.IsTooOld() && (this.datePickerETDBerth_End.Value == null) && (this.datePickerETDBerth.Value != this.Times.EtdBerth)) { message = BreCalClient.Resources.Resources.textETDInThePast; return false; } - if (this.datePickerETDBerth_End.Value.HasValue && this.datePickerETDBerth_End.Value < DateTime.Now && this.datePickerETDBerth_End.Value != this.Times.EtdIntervalEnd) + if (this.datePickerETDBerth_End.Value.IsTooOld() && this.datePickerETDBerth_End.Value != this.Times.EtdIntervalEnd) { message = BreCalClient.Resources.Resources.textETDInThePast; return false; @@ -134,13 +135,13 @@ namespace BreCalClient return false; } - if (this.datePickerLockTime.Value.HasValue && (this.datePickerLockTime.Value.Value < DateTime.Now) && (this.datePickerLockTime.Value != this.Times.LockTime)) + if (this.datePickerLockTime.Value.IsTooOld() && (this.datePickerLockTime.Value != this.Times.LockTime)) { message = BreCalClient.Resources.Resources.textLockTimeInThePast; return false; } - if (this.datePickerZoneEntry.Value.HasValue && this.datePickerZoneEntry.Value < DateTime.Now && this.datePickerZoneEntry.Value != this.Times.ZoneEntry) + if (this.datePickerZoneEntry.Value.IsTooOld() && (this.datePickerZoneEntry.Value != this.Times.ZoneEntry)) { message = BreCalClient.Resources.Resources.textZoneEntryInThePast; return false; diff --git a/src/BreCalClient/EditTimesTerminalControl.xaml.cs b/src/BreCalClient/EditTimesTerminalControl.xaml.cs index eb9fd85..20cae75 100644 --- a/src/BreCalClient/EditTimesTerminalControl.xaml.cs +++ b/src/BreCalClient/EditTimesTerminalControl.xaml.cs @@ -111,13 +111,13 @@ namespace BreCalClient message = ""; - if (this.datePickerOperationStart.Value.HasValue && (this.datePickerOperationStart.Value.Value < DateTime.Now) && (this.datePickerOperationStart_End.Value == null)) + if (this.datePickerOperationStart.Value.IsTooOld() && (this.datePickerOperationStart_End.Value == null) && (this.datePickerOperationStart.Value != this.Times.OperationsStart)) { message = BreCalClient.Resources.Resources.textOperationStartInThePast; return false; } - if (this.datePickerOperationStart_End.Value.HasValue && this.datePickerOperationStart_End.Value < DateTime.Now) + if (this.datePickerOperationStart_End.Value.IsTooOld() && (this.datePickerOperationStart_End.Value != this.Times.EtaIntervalEnd)) { message = BreCalClient.Resources.Resources.textOperationStartInThePast; return false; @@ -129,13 +129,13 @@ namespace BreCalClient return false; } - if (this.datePickerOperationEnd.Value.HasValue && (this.datePickerOperationEnd.Value.Value < DateTime.Now) && (this.datePickerOperationEnd_End.Value == null)) + if (this.datePickerOperationEnd.Value.IsTooOld() && (this.datePickerOperationEnd_End.Value == null) && (this.datePickerOperationEnd.Value != this.Times.OperationsEnd)) { message = BreCalClient.Resources.Resources.textOperationEndInThePast; return false; } - if (this.datePickerOperationEnd_End.Value.HasValue && this.datePickerOperationEnd_End.Value < DateTime.Now) + if (this.datePickerOperationEnd_End.Value.IsTooOld() && (this.datePickerOperationEnd_End.Value != this.Times.EtdIntervalEnd)) { message = BreCalClient.Resources.Resources.textOperationEndInThePast; return false; diff --git a/src/BreCalClient/Extensions.cs b/src/BreCalClient/Extensions.cs index 54fedb3..f4ba524 100644 --- a/src/BreCalClient/Extensions.cs +++ b/src/BreCalClient/Extensions.cs @@ -69,6 +69,14 @@ namespace BreCalClient return datetime > DateTime.Now.AddYears(1); } + public static bool IsTooOld(this DateTime? datetime) + { + if (datetime == null) return false; + { + return datetime < DateTime.Now.AddDays(-1); + } + } + public static bool IsTypeFlagSet(this Participant participant, ParticipantType flag) { return (participant.Type & (uint)flag) != 0;