diff --git a/CatalogLite/CatalogLite.csproj b/CatalogLite/CatalogLite.csproj
index 2573c3d..97280a9 100644
--- a/CatalogLite/CatalogLite.csproj
+++ b/CatalogLite/CatalogLite.csproj
@@ -15,10 +15,7 @@
-
- <_Parameter1>CatalogLiteExpirationDate
- <_Parameter2>$(CatalogLiteExpirationDate)
-
+
@@ -41,4 +38,11 @@
+
+
+
+
\ No newline at end of file
diff --git a/CatalogLite/ExpirationGuard.cs b/CatalogLite/ExpirationGuard.cs
index 46cbbd2..b800cf2 100644
--- a/CatalogLite/ExpirationGuard.cs
+++ b/CatalogLite/ExpirationGuard.cs
@@ -5,23 +5,35 @@ namespace CatalogLite;
internal static class ExpirationGuard
{
+ private const string GeneratedMetadataKey = "CatalogLiteGeneratedExpirationDate";
private const string MetadataKey = "CatalogLiteExpirationDate";
public static bool IsExpired(out DateOnly? expirationDate)
{
expirationDate = TryReadExpirationDate();
- return expirationDate is null || DateOnly.FromDateTime(DateTime.Today) > expirationDate.Value;
+ return expirationDate is null || DateOnly.FromDateTime(DateTime.Now) > expirationDate.Value;
}
private static DateOnly? TryReadExpirationDate()
{
- var value = typeof(Program).Assembly
- .GetCustomAttributes()
- .FirstOrDefault(attribute => string.Equals(attribute.Key, MetadataKey, StringComparison.Ordinal))
- ?.Value;
+ if (TryParseDate(BuildExpiration.ExpirationDate, out var generatedDate))
+ {
+ return generatedDate;
+ }
- return DateOnly.TryParseExact(value, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out var date)
- ? date
+ var metadata = typeof(Program).Assembly.GetCustomAttributes();
+ var metadataValue = metadata.FirstOrDefault(attribute => string.Equals(attribute.Key, GeneratedMetadataKey, StringComparison.Ordinal))?.Value
+ ?? metadata.FirstOrDefault(attribute => string.Equals(attribute.Key, MetadataKey, StringComparison.Ordinal))?.Value;
+
+ return TryParseDate(metadataValue, out var metadataDate)
+ ? metadataDate
: null;
}
+
+ private static bool TryParseDate(string? value, out DateOnly date)
+ {
+ var trimmedValue = value?.Trim();
+ return DateOnly.TryParseExact(trimmedValue, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out date)
+ || DateOnly.TryParse(trimmedValue, CultureInfo.CurrentCulture, DateTimeStyles.None, out date);
+ }
}
\ No newline at end of file
diff --git a/CatalogLite/ExpiredWindow.cs b/CatalogLite/ExpiredWindow.cs
index e3bd88f..c5b84f1 100644
--- a/CatalogLite/ExpiredWindow.cs
+++ b/CatalogLite/ExpiredWindow.cs
@@ -14,8 +14,8 @@ internal sealed class ExpiredWindow : Window
WindowStartupLocation = WindowStartupLocation.CenterScreen;
var message = expirationDate is null
- ? "L'applicazione e scaduta e non puo essere utilizzata."
- : $"L'applicazione e scaduta il {expirationDate:dd/MM/yyyy} e non puo essere utilizzata.";
+ ? "L'applicazione è scaduta e non può essere utilizzata."
+ : $"L'applicazione è scaduta il {expirationDate:dd/MM/yyyy} e non può essere utilizzata.";
var closeButton = new Button
{
diff --git a/CatalogLite/ImageProcessingCoordinator.cs b/CatalogLite/ImageProcessingCoordinator.cs
index 9ad61b2..dcf78d7 100644
--- a/CatalogLite/ImageProcessingCoordinator.cs
+++ b/CatalogLite/ImageProcessingCoordinator.cs
@@ -70,7 +70,7 @@ public sealed class ImageProcessingCoordinator
}
catch (Exception ex)
{
- _logger.LogDebug(ex, "Errore durante l'aggiornamento della velocita");
+ _logger.LogDebug(ex, "Errore durante l'aggiornamento della velocità");
}
}, null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1));