From ce2653db453fe3875231df90f6b338a0d9ff3a69 Mon Sep 17 00:00:00 2001 From: Bram1903 <70259613+Bram1903@users.noreply.github.com> Date: Thu, 4 May 2023 17:13:07 +0200 Subject: [PATCH 1/6] Added: Npgsql.EntityFrameworkCore.PostgreSQL.NodaTime Added: SimplerSoftware.EntityFrameworkCore.SqlServer.NodaTime Added: Enabled the .UseNodaTime option in the DbContextOptionsBuilder --- .../Extensions/DbContextOptionsBuilderExtensions.cs | 13 ++++++++++--- src/Infrastructure/Infrastructure.csproj | 2 ++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/Infrastructure/Extensions/DbContextOptionsBuilderExtensions.cs b/src/Infrastructure/Extensions/DbContextOptionsBuilderExtensions.cs index 398b72c76..44d9b206d 100644 --- a/src/Infrastructure/Extensions/DbContextOptionsBuilderExtensions.cs +++ b/src/Infrastructure/Extensions/DbContextOptionsBuilderExtensions.cs @@ -10,12 +10,19 @@ internal static DbContextOptionsBuilder UseDatabase(this DbContextOptionsBuilder switch (dbProvider.ToLowerInvariant()) { case DbProviderKeys.Npgsql: - AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true); return builder.UseNpgsql(connectionString, - e => e.MigrationsAssembly("CleanArchitecture.Blazor.Migrators.PostgreSQL")); + e => + { + e.MigrationsAssembly("CleanArchitecture.Blazor.Migrators.PostgreSQL"); + e.UseNodaTime(); + }); case DbProviderKeys.SqlServer: return builder.UseSqlServer(connectionString, - e => e.MigrationsAssembly("CleanArchitecture.Blazor.Migrators.MSSQL")); + e => + { + e.MigrationsAssembly("CleanArchitecture.Blazor.Migrators.MSSQL"); + e.UseNodaTime(); + }); case DbProviderKeys.SqLite: return builder.UseSqlite(connectionString, e => e.MigrationsAssembly("CleanArchitecture.Blazor.Migrators.SqLite")); diff --git a/src/Infrastructure/Infrastructure.csproj b/src/Infrastructure/Infrastructure.csproj index f847beae4..89f904f99 100644 --- a/src/Infrastructure/Infrastructure.csproj +++ b/src/Infrastructure/Infrastructure.csproj @@ -33,6 +33,7 @@ + @@ -43,6 +44,7 @@ + From 506d1f5cd74240371de6401493b20097b197b666 Mon Sep 17 00:00:00 2001 From: Bram1903 <70259613+Bram1903@users.noreply.github.com> Date: Fri, 5 May 2023 10:34:08 +0200 Subject: [PATCH 2/6] Removed: NodaTime for now --- src/Application/Features/Loggers/DTOs/LogDto.cs | 2 +- .../Extensions/DbContextOptionsBuilderExtensions.cs | 13 +++---------- src/Infrastructure/Infrastructure.csproj | 2 -- src/Infrastructure/Services/DateTimeService.cs | 2 +- 4 files changed, 5 insertions(+), 14 deletions(-) diff --git a/src/Application/Features/Loggers/DTOs/LogDto.cs b/src/Application/Features/Loggers/DTOs/LogDto.cs index 975856a52..9bcb44fbe 100644 --- a/src/Application/Features/Loggers/DTOs/LogDto.cs +++ b/src/Application/Features/Loggers/DTOs/LogDto.cs @@ -22,7 +22,7 @@ public class LogDto : IMapFrom public bool ShowDetails { get; set; } [Description("Timestamp")] - public DateTime TimeStamp { get; set; } = DateTime.Now; + public DateTime TimeStamp { get; set; } = DateTime.UtcNow; [Description("Exception")] public string? Exception { get; set; } diff --git a/src/Infrastructure/Extensions/DbContextOptionsBuilderExtensions.cs b/src/Infrastructure/Extensions/DbContextOptionsBuilderExtensions.cs index 44d9b206d..398b72c76 100644 --- a/src/Infrastructure/Extensions/DbContextOptionsBuilderExtensions.cs +++ b/src/Infrastructure/Extensions/DbContextOptionsBuilderExtensions.cs @@ -10,19 +10,12 @@ internal static DbContextOptionsBuilder UseDatabase(this DbContextOptionsBuilder switch (dbProvider.ToLowerInvariant()) { case DbProviderKeys.Npgsql: + AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true); return builder.UseNpgsql(connectionString, - e => - { - e.MigrationsAssembly("CleanArchitecture.Blazor.Migrators.PostgreSQL"); - e.UseNodaTime(); - }); + e => e.MigrationsAssembly("CleanArchitecture.Blazor.Migrators.PostgreSQL")); case DbProviderKeys.SqlServer: return builder.UseSqlServer(connectionString, - e => - { - e.MigrationsAssembly("CleanArchitecture.Blazor.Migrators.MSSQL"); - e.UseNodaTime(); - }); + e => e.MigrationsAssembly("CleanArchitecture.Blazor.Migrators.MSSQL")); case DbProviderKeys.SqLite: return builder.UseSqlite(connectionString, e => e.MigrationsAssembly("CleanArchitecture.Blazor.Migrators.SqLite")); diff --git a/src/Infrastructure/Infrastructure.csproj b/src/Infrastructure/Infrastructure.csproj index 89f904f99..f847beae4 100644 --- a/src/Infrastructure/Infrastructure.csproj +++ b/src/Infrastructure/Infrastructure.csproj @@ -33,7 +33,6 @@ - @@ -44,7 +43,6 @@ - diff --git a/src/Infrastructure/Services/DateTimeService.cs b/src/Infrastructure/Services/DateTimeService.cs index 264eb877f..a3a624393 100644 --- a/src/Infrastructure/Services/DateTimeService.cs +++ b/src/Infrastructure/Services/DateTimeService.cs @@ -5,5 +5,5 @@ namespace CleanArchitecture.Blazor.Infrastructure.Services; public class DateTimeService : IDateTime { - public DateTime Now => DateTime.Now; + public DateTime Now => DateTime.UtcNow; } From bd9cbcddd5af6fd7044744818a1f2f03d9c370db Mon Sep 17 00:00:00 2001 From: Bram1903 <70259613+Bram1903@users.noreply.github.com> Date: Fri, 5 May 2023 13:17:58 +0200 Subject: [PATCH 3/6] Added: BlazorTime Working on ToLocal on the Logs.razor --- .editorconfig | 56 +++++++++---------- src/Blazor.Server.UI/Blazor.Server.UI.csproj | 1 + .../Pages/SystemManagement/Logs.razor | 6 +- src/Blazor.Server.UI/Pages/_Layout.cshtml | 1 + src/Blazor.Server.UI/_Imports.razor | 1 + 5 files changed, 36 insertions(+), 29 deletions(-) diff --git a/.editorconfig b/.editorconfig index e4951ca47..f91d7643c 100644 --- a/.editorconfig +++ b/.editorconfig @@ -104,7 +104,7 @@ csharp_style_conditional_delegate_call = true:suggestion # Modifier preferences csharp_prefer_static_local_function = true:warning -csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:silent +csharp_preferred_modifier_order = public, private, protected, internal, static, extern, new, virtual, abstract, sealed, override, readonly, unsafe, volatile, async:silent # Code-block preferences csharp_prefer_braces = true:silent @@ -255,31 +255,31 @@ dotnet_naming_rule.non_field_members_should_be_pascalcase.style = pascalcase dotnet_naming_symbols.interfaces.applicable_kinds = interface dotnet_naming_symbols.interfaces.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected -dotnet_naming_symbols.interfaces.required_modifiers = +dotnet_naming_symbols.interfaces.required_modifiers = dotnet_naming_symbols.enums.applicable_kinds = enum dotnet_naming_symbols.enums.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected -dotnet_naming_symbols.enums.required_modifiers = +dotnet_naming_symbols.enums.required_modifiers = dotnet_naming_symbols.events.applicable_kinds = event dotnet_naming_symbols.events.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected -dotnet_naming_symbols.events.required_modifiers = +dotnet_naming_symbols.events.required_modifiers = dotnet_naming_symbols.methods.applicable_kinds = method dotnet_naming_symbols.methods.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected -dotnet_naming_symbols.methods.required_modifiers = +dotnet_naming_symbols.methods.required_modifiers = dotnet_naming_symbols.properties.applicable_kinds = property dotnet_naming_symbols.properties.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected -dotnet_naming_symbols.properties.required_modifiers = +dotnet_naming_symbols.properties.required_modifiers = dotnet_naming_symbols.public_fields.applicable_kinds = field dotnet_naming_symbols.public_fields.applicable_accessibilities = public, internal -dotnet_naming_symbols.public_fields.required_modifiers = +dotnet_naming_symbols.public_fields.required_modifiers = dotnet_naming_symbols.private_fields.applicable_kinds = field dotnet_naming_symbols.private_fields.applicable_accessibilities = private, protected, protected_internal, private_protected -dotnet_naming_symbols.private_fields.required_modifiers = +dotnet_naming_symbols.private_fields.required_modifiers = dotnet_naming_symbols.private_static_fields.applicable_kinds = field dotnet_naming_symbols.private_static_fields.applicable_accessibilities = private, protected, protected_internal, private_protected @@ -287,15 +287,15 @@ dotnet_naming_symbols.private_static_fields.required_modifiers = static dotnet_naming_symbols.types_and_namespaces.applicable_kinds = namespace, class, struct, interface, enum dotnet_naming_symbols.types_and_namespaces.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected -dotnet_naming_symbols.types_and_namespaces.required_modifiers = +dotnet_naming_symbols.types_and_namespaces.required_modifiers = dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected -dotnet_naming_symbols.non_field_members.required_modifiers = +dotnet_naming_symbols.non_field_members.required_modifiers = dotnet_naming_symbols.type_parameters.applicable_kinds = namespace dotnet_naming_symbols.type_parameters.applicable_accessibilities = * -dotnet_naming_symbols.type_parameters.required_modifiers = +dotnet_naming_symbols.type_parameters.required_modifiers = dotnet_naming_symbols.private_constant_fields.applicable_kinds = field dotnet_naming_symbols.private_constant_fields.applicable_accessibilities = private, protected, protected_internal, private_protected @@ -303,7 +303,7 @@ dotnet_naming_symbols.private_constant_fields.required_modifiers = const dotnet_naming_symbols.local_variables.applicable_kinds = local dotnet_naming_symbols.local_variables.applicable_accessibilities = local -dotnet_naming_symbols.local_variables.required_modifiers = +dotnet_naming_symbols.local_variables.required_modifiers = dotnet_naming_symbols.local_constants.applicable_kinds = local dotnet_naming_symbols.local_constants.applicable_accessibilities = local @@ -311,7 +311,7 @@ dotnet_naming_symbols.local_constants.required_modifiers = const dotnet_naming_symbols.parameters.applicable_kinds = parameter dotnet_naming_symbols.parameters.applicable_accessibilities = * -dotnet_naming_symbols.parameters.required_modifiers = +dotnet_naming_symbols.parameters.required_modifiers = dotnet_naming_symbols.public_constant_fields.applicable_kinds = field dotnet_naming_symbols.public_constant_fields.applicable_accessibilities = public, internal @@ -327,36 +327,36 @@ dotnet_naming_symbols.private_static_readonly_fields.required_modifiers = readon dotnet_naming_symbols.local_functions.applicable_kinds = local_function dotnet_naming_symbols.local_functions.applicable_accessibilities = * -dotnet_naming_symbols.local_functions.required_modifiers = +dotnet_naming_symbols.local_functions.required_modifiers = # Naming styles -dotnet_naming_style.pascalcase.required_prefix = -dotnet_naming_style.pascalcase.required_suffix = -dotnet_naming_style.pascalcase.word_separator = +dotnet_naming_style.pascalcase.required_prefix = +dotnet_naming_style.pascalcase.required_suffix = +dotnet_naming_style.pascalcase.word_separator = dotnet_naming_style.pascalcase.capitalization = pascal_case dotnet_naming_style.ipascalcase.required_prefix = I -dotnet_naming_style.ipascalcase.required_suffix = -dotnet_naming_style.ipascalcase.word_separator = +dotnet_naming_style.ipascalcase.required_suffix = +dotnet_naming_style.ipascalcase.word_separator = dotnet_naming_style.ipascalcase.capitalization = pascal_case dotnet_naming_style.tpascalcase.required_prefix = T -dotnet_naming_style.tpascalcase.required_suffix = -dotnet_naming_style.tpascalcase.word_separator = +dotnet_naming_style.tpascalcase.required_suffix = +dotnet_naming_style.tpascalcase.word_separator = dotnet_naming_style.tpascalcase.capitalization = pascal_case dotnet_naming_style._camelcase.required_prefix = _ -dotnet_naming_style._camelcase.required_suffix = -dotnet_naming_style._camelcase.word_separator = +dotnet_naming_style._camelcase.required_suffix = +dotnet_naming_style._camelcase.word_separator = dotnet_naming_style._camelcase.capitalization = camel_case -dotnet_naming_style.camelcase.required_prefix = -dotnet_naming_style.camelcase.required_suffix = -dotnet_naming_style.camelcase.word_separator = +dotnet_naming_style.camelcase.required_prefix = +dotnet_naming_style.camelcase.required_suffix = +dotnet_naming_style.camelcase.word_separator = dotnet_naming_style.camelcase.capitalization = camel_case dotnet_naming_style.s_camelcase.required_prefix = s_ -dotnet_naming_style.s_camelcase.required_suffix = -dotnet_naming_style.s_camelcase.word_separator = +dotnet_naming_style.s_camelcase.required_suffix = +dotnet_naming_style.s_camelcase.word_separator = dotnet_naming_style.s_camelcase.capitalization = camel_case diff --git a/src/Blazor.Server.UI/Blazor.Server.UI.csproj b/src/Blazor.Server.UI/Blazor.Server.UI.csproj index 8c0320b1c..bb851e3a1 100644 --- a/src/Blazor.Server.UI/Blazor.Server.UI.csproj +++ b/src/Blazor.Server.UI/Blazor.Server.UI.csproj @@ -13,6 +13,7 @@ + diff --git a/src/Blazor.Server.UI/Pages/SystemManagement/Logs.razor b/src/Blazor.Server.UI/Pages/SystemManagement/Logs.razor index a6cdc59c3..103fd9835 100644 --- a/src/Blazor.Server.UI/Pages/SystemManagement/Logs.razor +++ b/src/Blazor.Server.UI/Pages/SystemManagement/Logs.razor @@ -85,7 +85,11 @@ - + + + + + @switch (context.Item.Level) diff --git a/src/Blazor.Server.UI/Pages/_Layout.cshtml b/src/Blazor.Server.UI/Pages/_Layout.cshtml index b34dbd0f4..e014f8b8c 100644 --- a/src/Blazor.Server.UI/Pages/_Layout.cshtml +++ b/src/Blazor.Server.UI/Pages/_Layout.cshtml @@ -100,6 +100,7 @@ + diff --git a/src/Blazor.Server.UI/_Imports.razor b/src/Blazor.Server.UI/_Imports.razor index 840e307c2..fdf4123ed 100644 --- a/src/Blazor.Server.UI/_Imports.razor +++ b/src/Blazor.Server.UI/_Imports.razor @@ -13,6 +13,7 @@ @using Blazor.Server.UI @using Blazor.Server.UI.Shared @using MudBlazor +@using BlazorTime @using MediatR @using Fluxor @using AutoMapper From 05873741d6060a37ce0a61c2fea02c0616821198 Mon Sep 17 00:00:00 2001 From: Bram1903 <70259613+Bram1903@users.noreply.github.com> Date: Fri, 5 May 2023 13:48:41 +0200 Subject: [PATCH 4/6] Fixed: Date Formatting --- src/Blazor.Server.UI/Pages/SystemManagement/Logs.razor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Blazor.Server.UI/Pages/SystemManagement/Logs.razor b/src/Blazor.Server.UI/Pages/SystemManagement/Logs.razor index 103fd9835..68f6302be 100644 --- a/src/Blazor.Server.UI/Pages/SystemManagement/Logs.razor +++ b/src/Blazor.Server.UI/Pages/SystemManagement/Logs.razor @@ -87,7 +87,7 @@ - + From c557aa4d61c2f491e2bdaaaa9302bb0a12a92e35 Mon Sep 17 00:00:00 2001 From: Bram1903 <70259613+Bram1903@users.noreply.github.com> Date: Fri, 5 May 2023 14:38:08 +0200 Subject: [PATCH 5/6] Fixed: Datetime converting --- src/Blazor.Server.UI/Pages/SystemManagement/Logs.razor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Blazor.Server.UI/Pages/SystemManagement/Logs.razor b/src/Blazor.Server.UI/Pages/SystemManagement/Logs.razor index 68f6302be..b555dcb9b 100644 --- a/src/Blazor.Server.UI/Pages/SystemManagement/Logs.razor +++ b/src/Blazor.Server.UI/Pages/SystemManagement/Logs.razor @@ -87,7 +87,7 @@ - + From 2f1c691fe01063aa820a6db0251b3695511f4009 Mon Sep 17 00:00:00 2001 From: "hualin.zhu" Date: Sat, 6 May 2023 07:18:30 +0800 Subject: [PATCH 6/6] Update Logs.razor --- src/Blazor.Server.UI/Pages/SystemManagement/Logs.razor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Blazor.Server.UI/Pages/SystemManagement/Logs.razor b/src/Blazor.Server.UI/Pages/SystemManagement/Logs.razor index b555dcb9b..c01862aae 100644 --- a/src/Blazor.Server.UI/Pages/SystemManagement/Logs.razor +++ b/src/Blazor.Server.UI/Pages/SystemManagement/Logs.razor @@ -87,7 +87,7 @@ - +