From a14ee7c108e088e1cfe0abdd8317fd83647f0931 Mon Sep 17 00:00:00 2001 From: Lacoi Date: Sat, 4 Nov 2023 12:38:53 +0100 Subject: [PATCH] asm: update NewYear to nullable value --- src/ARKServerManager/Lib/ServerProfile.cs | 38 +++++++++---------- .../UserControls/ServerSettingsControl.xaml | 4 +- ...s => NullableDateTimeToStringConverter.cs} | 18 ++++----- .../DateTimeValidationRules.cs | 5 +-- 4 files changed, 32 insertions(+), 33 deletions(-) rename src/ServerManager.Common/Converters/{DateTimeToStringConverter.cs => NullableDateTimeToStringConverter.cs} (54%) diff --git a/src/ARKServerManager/Lib/ServerProfile.cs b/src/ARKServerManager/Lib/ServerProfile.cs index f03a05d5..93f76c22 100644 --- a/src/ARKServerManager/Lib/ServerProfile.cs +++ b/src/ARKServerManager/Lib/ServerProfile.cs @@ -1229,19 +1229,19 @@ namespace ServerManagerTool.Lib set { SetValue(EventColorsChanceOverrideProperty, value); } } - public static readonly DependencyProperty NewYear1UTCProperty = DependencyProperty.Register(nameof(NewYear1UTC), typeof(DateTime), typeof(ServerProfile), new PropertyMetadata(DateTime.MinValue)); + public static readonly DependencyProperty NewYear1UTCProperty = DependencyProperty.Register(nameof(NewYear1UTC), typeof(NullableValue), typeof(ServerProfile), new PropertyMetadata(new NullableValue())); [DataMember] - public DateTime NewYear1UTC + public NullableValue NewYear1UTC { - get { return (DateTime)GetValue(NewYear1UTCProperty); } + get { return (NullableValue)GetValue(NewYear1UTCProperty); } set { SetValue(NewYear1UTCProperty, value); } } - public static readonly DependencyProperty NewYear2UTCProperty = DependencyProperty.Register(nameof(NewYear2UTC), typeof(DateTime), typeof(ServerProfile), new PropertyMetadata(DateTime.MinValue)); + public static readonly DependencyProperty NewYear2UTCProperty = DependencyProperty.Register(nameof(NewYear2UTC), typeof(NullableValue), typeof(ServerProfile), new PropertyMetadata(new NullableValue())); [DataMember] - public DateTime NewYear2UTC + public NullableValue NewYear2UTC { - get { return (DateTime)GetValue(NewYear2UTCProperty); } + get { return (NullableValue)GetValue(NewYear2UTCProperty); } set { SetValue(NewYear2UTCProperty, value); } } #endregion @@ -4131,17 +4131,17 @@ namespace ServerManagerTool.Lib { serverArgs.Append("?EventColorsChanceOverride=").Append(this.EventColorsChanceOverride); } - - if (this.NewYear1UTC != DateTime.MinValue) + + if (this.NewYear1UTC.HasValue) { - serverArgs.Append("?NewYear1UTC=").Append((new DateTimeOffset(this.NewYear1UTC.ToUniversalTime())).ToUnixTimeSeconds().ToString()); + serverArgs.Append("?NewYear1UTC=").Append((new DateTimeOffset(this.NewYear1UTC.Value.ToUniversalTime())).ToUnixTimeSeconds().ToString()); } - if (this.NewYear2UTC != DateTime.MinValue) + if (this.NewYear2UTC.HasValue) { - serverArgs.Append("?NewYear2UTC=").Append((new DateTimeOffset(this.NewYear2UTC.ToUniversalTime())).ToUnixTimeSeconds().ToString()); + serverArgs.Append("?NewYear2UTC=").Append((new DateTimeOffset(this.NewYear2UTC.Value.ToUniversalTime())).ToUnixTimeSeconds().ToString()); } - + if (!string.IsNullOrWhiteSpace(this.AdditionalArgs)) { var addArgs = this.AdditionalArgs.TrimStart(); @@ -4448,12 +4448,12 @@ namespace ServerManagerTool.Lib { serverArgs.Append(" -MaxNumOfSaveBackups=").Append(this.MaxNumOfSaveBackups); } - - if (this.NewYear1UTC != DateTime.MinValue || this.NewYear2UTC != DateTime.MinValue) + + if (this.NewYear1UTC.HasValue || this.NewYear2UTC.HasValue) { serverArgs.Append(" -NewYearEvent"); } - + return serverArgs.ToString(); } @@ -6167,8 +6167,8 @@ namespace ServerManagerTool.Lib this.ClearValue(EventNameProperty); this.ClearValue(EventColorsChanceOverrideProperty); - this.ClearValue(NewYear1UTCProperty); - this.ClearValue(NewYear2UTCProperty); + this.ClearNullableValue(NewYear1UTCProperty); + this.ClearNullableValue(NewYear2UTCProperty); } public void ResetSOTFSection() @@ -6956,8 +6956,8 @@ namespace ServerManagerTool.Lib this.SetValue(EventNameProperty, sourceProfile.EventName); this.SetValue(EventColorsChanceOverrideProperty, sourceProfile.EventColorsChanceOverride); - this.SetValue(NewYear1UTCProperty, sourceProfile.NewYear1UTC); - this.SetValue(NewYear2UTCProperty, sourceProfile.NewYear2UTC); + this.SetNullableValue(NewYear1UTCProperty, sourceProfile.NewYear1UTC); + this.SetNullableValue(NewYear2UTCProperty, sourceProfile.NewYear2UTC); } private void SyncServerFiles(ServerProfile sourceProfile) diff --git a/src/ARKServerManager/UserControls/ServerSettingsControl.xaml b/src/ARKServerManager/UserControls/ServerSettingsControl.xaml index 43b6cd31..679b9f6b 100644 --- a/src/ARKServerManager/UserControls/ServerSettingsControl.xaml +++ b/src/ARKServerManager/UserControls/ServerSettingsControl.xaml @@ -1847,7 +1847,7 @@ - + @@ -1870,7 +1870,7 @@ - + diff --git a/src/ServerManager.Common/Converters/DateTimeToStringConverter.cs b/src/ServerManager.Common/Converters/NullableDateTimeToStringConverter.cs similarity index 54% rename from src/ServerManager.Common/Converters/DateTimeToStringConverter.cs rename to src/ServerManager.Common/Converters/NullableDateTimeToStringConverter.cs index cdcfa2aa..294267af 100644 --- a/src/ServerManager.Common/Converters/DateTimeToStringConverter.cs +++ b/src/ServerManager.Common/Converters/NullableDateTimeToStringConverter.cs @@ -1,30 +1,30 @@ -using System; +using ServerManagerTool.Common.Model; +using System; using System.Globalization; using System.Windows.Data; using System.Windows.Markup; namespace ServerManagerTool.Common.Converters { - public class DateTimeToStringConverter : MarkupExtension, IValueConverter + public class NullableDateTimeToStringConverter : MarkupExtension, IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { - DateTime datetime = (DateTime)value; - if (datetime == DateTime.MinValue) - return ""; + if (value != null && value is NullableValue && ((NullableValue)value).Value != DateTime.MinValue) + return ((NullableValue)value).Value.ToString("yyyy.MM.dd HH:mm:ss"); - return datetime.ToString("yyyy.MM.dd HH:mm:ss"); + return ""; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { if (value is null || value.ToString() == string.Empty) - return DateTime.MinValue; + return (new NullableValue()); if (!DateTime.TryParse(value.ToString(), out DateTime datetime)) - return DateTime.MinValue; + return (new NullableValue()); - return datetime; + return (new NullableValue(datetime)); } public override object ProvideValue(IServiceProvider serviceProvider) diff --git a/src/ServerManager.Common/ValidationRules/DateTimeValidationRules.cs b/src/ServerManager.Common/ValidationRules/DateTimeValidationRules.cs index 92ef0446..8e1f6505 100644 --- a/src/ServerManager.Common/ValidationRules/DateTimeValidationRules.cs +++ b/src/ServerManager.Common/ValidationRules/DateTimeValidationRules.cs @@ -23,17 +23,16 @@ namespace ServerManagerTool.Common.ValidationRules return new ValidationResult(false, "Invalid Date. Date must be formatted as yyyy.mm.dd hh:mm:ss"); } - if (datetime.ToUniversalTime() <= MinUnixDate) + if (datetime.ToUniversalTime() < MinUnixDate) { return new ValidationResult(false, $"Invalid Date. The Date must be after {MinUnixDate.ToLocalTime().ToString("yyyy.MM.dd HH:mm:ss")}"); } - if (datetime.ToUniversalTime() >= MaxUnixDate) + if (datetime.ToUniversalTime() > MaxUnixDate) { return new ValidationResult(false, $"Invalid Date. The Date must be before {MaxUnixDate.ToLocalTime().ToString("yyyy.MM.dd HH:mm:ss")}"); } - return new ValidationResult(true, null); } }