asm: update NewYear to nullable value

This commit is contained in:
Lacoi 2023-11-04 12:38:53 +01:00
parent 70ed633bc0
commit a14ee7c108
4 changed files with 32 additions and 33 deletions

View file

@ -1229,19 +1229,19 @@ namespace ServerManagerTool.Lib
set { SetValue(EventColorsChanceOverrideProperty, value); } 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<DateTime>), typeof(ServerProfile), new PropertyMetadata(new NullableValue<DateTime>()));
[DataMember] [DataMember]
public DateTime NewYear1UTC public NullableValue<DateTime> NewYear1UTC
{ {
get { return (DateTime)GetValue(NewYear1UTCProperty); } get { return (NullableValue<DateTime>)GetValue(NewYear1UTCProperty); }
set { SetValue(NewYear1UTCProperty, value); } 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<DateTime>), typeof(ServerProfile), new PropertyMetadata(new NullableValue<DateTime>()));
[DataMember] [DataMember]
public DateTime NewYear2UTC public NullableValue<DateTime> NewYear2UTC
{ {
get { return (DateTime)GetValue(NewYear2UTCProperty); } get { return (NullableValue<DateTime>)GetValue(NewYear2UTCProperty); }
set { SetValue(NewYear2UTCProperty, value); } set { SetValue(NewYear2UTCProperty, value); }
} }
#endregion #endregion
@ -4131,17 +4131,17 @@ namespace ServerManagerTool.Lib
{ {
serverArgs.Append("?EventColorsChanceOverride=").Append(this.EventColorsChanceOverride); 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)) if (!string.IsNullOrWhiteSpace(this.AdditionalArgs))
{ {
var addArgs = this.AdditionalArgs.TrimStart(); var addArgs = this.AdditionalArgs.TrimStart();
@ -4448,12 +4448,12 @@ namespace ServerManagerTool.Lib
{ {
serverArgs.Append(" -MaxNumOfSaveBackups=").Append(this.MaxNumOfSaveBackups); 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"); serverArgs.Append(" -NewYearEvent");
} }
return serverArgs.ToString(); return serverArgs.ToString();
} }
@ -6167,8 +6167,8 @@ namespace ServerManagerTool.Lib
this.ClearValue(EventNameProperty); this.ClearValue(EventNameProperty);
this.ClearValue(EventColorsChanceOverrideProperty); this.ClearValue(EventColorsChanceOverrideProperty);
this.ClearValue(NewYear1UTCProperty); this.ClearNullableValue(NewYear1UTCProperty);
this.ClearValue(NewYear2UTCProperty); this.ClearNullableValue(NewYear2UTCProperty);
} }
public void ResetSOTFSection() public void ResetSOTFSection()
@ -6956,8 +6956,8 @@ namespace ServerManagerTool.Lib
this.SetValue(EventNameProperty, sourceProfile.EventName); this.SetValue(EventNameProperty, sourceProfile.EventName);
this.SetValue(EventColorsChanceOverrideProperty, sourceProfile.EventColorsChanceOverride); this.SetValue(EventColorsChanceOverrideProperty, sourceProfile.EventColorsChanceOverride);
this.SetValue(NewYear1UTCProperty, sourceProfile.NewYear1UTC); this.SetNullableValue(NewYear1UTCProperty, sourceProfile.NewYear1UTC);
this.SetValue(NewYear2UTCProperty, sourceProfile.NewYear2UTC); this.SetNullableValue(NewYear2UTCProperty, sourceProfile.NewYear2UTC);
} }
private void SyncServerFiles(ServerProfile sourceProfile) private void SyncServerFiles(ServerProfile sourceProfile)

View file

@ -1847,7 +1847,7 @@
<TextBox.Text> <TextBox.Text>
<Binding Path="NewYear1UTC"> <Binding Path="NewYear1UTC">
<Binding.Converter> <Binding.Converter>
<cc:DateTimeToStringConverter /> <cc:NullableDateTimeToStringConverter />
</Binding.Converter> </Binding.Converter>
<Binding.ValidationRules> <Binding.ValidationRules>
<cvr:DateTimeValidationRule ValidatesOnTargetUpdated="true" /> <cvr:DateTimeValidationRule ValidatesOnTargetUpdated="true" />
@ -1870,7 +1870,7 @@
<TextBox.Text> <TextBox.Text>
<Binding Path="NewYear2UTC"> <Binding Path="NewYear2UTC">
<Binding.Converter> <Binding.Converter>
<cc:DateTimeToStringConverter /> <cc:NullableDateTimeToStringConverter />
</Binding.Converter> </Binding.Converter>
<Binding.ValidationRules> <Binding.ValidationRules>
<cvr:DateTimeValidationRule ValidatesOnTargetUpdated="true" /> <cvr:DateTimeValidationRule ValidatesOnTargetUpdated="true" />

View file

@ -1,30 +1,30 @@
using System; using ServerManagerTool.Common.Model;
using System;
using System.Globalization; using System.Globalization;
using System.Windows.Data; using System.Windows.Data;
using System.Windows.Markup; using System.Windows.Markup;
namespace ServerManagerTool.Common.Converters 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) public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{ {
DateTime datetime = (DateTime)value; if (value != null && value is NullableValue<DateTime> && ((NullableValue<DateTime>)value).Value != DateTime.MinValue)
if (datetime == DateTime.MinValue) return ((NullableValue<DateTime>)value).Value.ToString("yyyy.MM.dd HH:mm:ss");
return "";
return datetime.ToString("yyyy.MM.dd HH:mm:ss"); return "";
} }
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{ {
if (value is null || value.ToString() == string.Empty) if (value is null || value.ToString() == string.Empty)
return DateTime.MinValue; return (new NullableValue<DateTime>());
if (!DateTime.TryParse(value.ToString(), out DateTime datetime)) if (!DateTime.TryParse(value.ToString(), out DateTime datetime))
return DateTime.MinValue; return (new NullableValue<DateTime>());
return datetime; return (new NullableValue<DateTime>(datetime));
} }
public override object ProvideValue(IServiceProvider serviceProvider) public override object ProvideValue(IServiceProvider serviceProvider)

View file

@ -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"); 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")}"); 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(false, $"Invalid Date. The Date must be before {MaxUnixDate.ToLocalTime().ToString("yyyy.MM.dd HH:mm:ss")}");
} }
return new ValidationResult(true, null); return new ValidationResult(true, null);
} }
} }