student vor 1 Woche
Ursprung
Commit
7f2b38ee42

+ 0 - 1
Kitty_Fall/Kitty_Fall/Common/Common.csproj

@@ -23,7 +23,6 @@
 		<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="7.0.20" />
 	</ItemGroup>
 	<ItemGroup>
-	  <Folder Include="Connected Services\" />
 	  <Folder Include="Http\Apis\Response\" />
 	</ItemGroup>
 	<ItemGroup>

+ 72 - 0
Kitty_Fall/Kitty_Fall/Common/Connected Services/Kitty_FallVasWs/ConnectedService.json

@@ -10,6 +10,78 @@
     "namespaceMappings": [
       "*, Kitty_FallVasWs"
     ],
+    "references": [
+      "D:\\Code\\MyTel\\Kitty_Fall_Mytel\\Kitty_Fall\\Kitty_Fall\\Common\\bin\\Debug\\net7.0\\Database.dll",
+      "log4net, {log4net, 2.0.15}",
+      "Microsoft.AspNetCore.Authentication.JwtBearer, {Microsoft.AspNetCore.Authentication.JwtBearer, 7.0.20}",
+      "Microsoft.AspNetCore.Authorization, {Microsoft.AspNetCore.Authorization, 7.0.20}",
+      "Microsoft.AspNetCore.Metadata, {Microsoft.AspNetCore.Metadata, 7.0.20}",
+      "Microsoft.EntityFrameworkCore, {Microsoft.EntityFrameworkCore, 7.0.20}",
+      "Microsoft.EntityFrameworkCore.Abstractions, {Microsoft.EntityFrameworkCore.Abstractions, 7.0.20}",
+      "Microsoft.EntityFrameworkCore.Relational, {Microsoft.EntityFrameworkCore.Relational, 7.0.20}",
+      "Microsoft.Extensions.Caching.Abstractions, {Microsoft.Extensions.Caching.Abstractions, 7.0.0}",
+      "Microsoft.Extensions.Caching.Memory, {Microsoft.Extensions.Caching.Memory, 7.0.0}",
+      "Microsoft.Extensions.Configuration, {Microsoft.Extensions.Configuration, 5.0.0}",
+      "Microsoft.Extensions.Configuration.Abstractions, {Microsoft.Extensions.Configuration.Abstractions, 7.0.0}",
+      "Microsoft.Extensions.Configuration.FileExtensions, {Microsoft.Extensions.Configuration.FileExtensions, 5.0.0}",
+      "Microsoft.Extensions.Configuration.Json, {Microsoft.Extensions.Configuration.Json, 5.0.0}",
+      "Microsoft.Extensions.Configuration.UserSecrets, {Microsoft.Extensions.Configuration.UserSecrets, 5.0.0}",
+      "Microsoft.Extensions.DependencyInjection, {Microsoft.Extensions.DependencyInjection, 7.0.0}",
+      "Microsoft.Extensions.DependencyInjection.Abstractions, {Microsoft.Extensions.DependencyInjection.Abstractions, 7.0.0}",
+      "Microsoft.Extensions.FileProviders.Abstractions, {Microsoft.Extensions.FileProviders.Abstractions, 6.0.0}",
+      "Microsoft.Extensions.FileProviders.Physical, {Microsoft.Extensions.FileProviders.Physical, 5.0.0}",
+      "Microsoft.Extensions.FileSystemGlobbing, {Microsoft.Extensions.FileSystemGlobbing, 5.0.0}",
+      "Microsoft.Extensions.Hosting.Abstractions, {Microsoft.Extensions.Hosting.Abstractions, 6.0.0}",
+      "Microsoft.Extensions.Logging, {Microsoft.Extensions.Logging, 7.0.0}",
+      "Microsoft.Extensions.Logging.Abstractions, {Microsoft.Extensions.Logging.Abstractions, 7.0.1}",
+      "Microsoft.Extensions.ObjectPool, {Microsoft.Extensions.ObjectPool, 6.0.16}",
+      "Microsoft.Extensions.Options, {Microsoft.Extensions.Options, 7.0.1}",
+      "Microsoft.Extensions.Primitives, {Microsoft.Extensions.Primitives, 7.0.0}",
+      "Microsoft.IdentityModel.Abstractions, {Microsoft.IdentityModel.Abstractions, 7.5.1}",
+      "Microsoft.IdentityModel.JsonWebTokens, {Microsoft.IdentityModel.JsonWebTokens, 7.5.1}",
+      "Microsoft.IdentityModel.Logging, {Microsoft.IdentityModel.Logging, 7.5.1}",
+      "Microsoft.IdentityModel.Protocols, {Microsoft.IdentityModel.Protocols, 6.35.0}",
+      "Microsoft.IdentityModel.Protocols.OpenIdConnect, {Microsoft.IdentityModel.Protocols.OpenIdConnect, 6.35.0}",
+      "Microsoft.IdentityModel.Protocols.WsTrust, {Microsoft.IdentityModel.Protocols.WsTrust, 6.8.0}",
+      "Microsoft.IdentityModel.Tokens, {Microsoft.IdentityModel.Tokens, 7.5.1}",
+      "Microsoft.IdentityModel.Tokens.Saml, {Microsoft.IdentityModel.Tokens.Saml, 6.8.0}",
+      "Microsoft.IdentityModel.Xml, {Microsoft.IdentityModel.Xml, 6.8.0}",
+      "Microsoft.Win32.SystemEvents, {Microsoft.Win32.SystemEvents, 6.0.0}",
+      "Newtonsoft.Json, {Newtonsoft.Json, 13.0.3}",
+      "Oracle.EntityFrameworkCore, {Oracle.EntityFrameworkCore, 7.21.13}",
+      "Oracle.ManagedDataAccess, {Oracle.ManagedDataAccess.Core, 3.21.130}",
+      "Quartz, {Quartz, 3.11.0}",
+      "Quartz.Extensions.DependencyInjection, {Quartz.Extensions.DependencyInjection, 3.11.0}",
+      "Quartz.Extensions.Hosting, {Quartz.Extensions.Hosting, 3.11.0}",
+      "System.Configuration.ConfigurationManager, {System.Configuration.ConfigurationManager, 6.0.1}",
+      "System.Diagnostics.PerformanceCounter, {System.Diagnostics.PerformanceCounter, 6.0.1}",
+      "System.DirectoryServices, {System.DirectoryServices, 6.0.1}",
+      "System.DirectoryServices.Protocols, {System.DirectoryServices.Protocols, 6.0.2}",
+      "System.Drawing.Common, {System.Drawing.Common, 6.0.0}",
+      "System.Formats.Asn1, {System.Formats.Asn1, 6.0.0}",
+      "System.IdentityModel.Tokens.Jwt, {System.IdentityModel.Tokens.Jwt, 7.5.1}",
+      "System.IO, {System.IO, 4.3.0}",
+      "System.Reflection.DispatchProxy, {System.Reflection.DispatchProxy, 4.7.1}",
+      "System.Runtime, {System.Runtime, 4.3.0}",
+      "System.Security.AccessControl, {System.Security.AccessControl, 6.0.0}",
+      "System.Security.Cryptography.Pkcs, {System.Security.Cryptography.Pkcs, 6.0.1}",
+      "System.Security.Cryptography.ProtectedData, {System.Security.Cryptography.ProtectedData, 6.0.0}",
+      "System.Security.Cryptography.Xml, {System.Security.Cryptography.Xml, 6.0.1}",
+      "System.Security.Permissions, {System.Security.Permissions, 6.0.0}",
+      "System.Security.Principal.Windows, {System.Security.Principal.Windows, 5.0.0}",
+      "System.ServiceModel.Duplex, {System.ServiceModel.Duplex, 6.0.0}",
+      "System.ServiceModel.Federation, {System.ServiceModel.Federation, 6.0.0}",
+      "System.ServiceModel.Http, {System.ServiceModel.Http, 6.0.0}",
+      "System.ServiceModel.NetFramingBase, {System.ServiceModel.NetFramingBase, 6.0.0}",
+      "System.ServiceModel.NetTcp, {System.ServiceModel.NetTcp, 6.0.0}",
+      "System.ServiceModel.Primitives, {System.ServiceModel.Primitives, 6.0.0}",
+      "System.ServiceModel.Security, {System.ServiceModel.Security, 6.0.0}",
+      "System.Text.Encoding, {System.Text.Encoding, 4.3.0}",
+      "System.Threading.Tasks, {System.Threading.Tasks, 4.3.0}",
+      "System.Windows.Extensions, {System.Windows.Extensions, 6.0.0}",
+      "System.Xml.ReaderWriter, {System.Xml.ReaderWriter, 4.3.0}",
+      "System.Xml.XmlDocument, {System.Xml.XmlDocument, 4.3.0}"
+    ],
     "targetFramework": "net7.0",
     "typeReuseMode": "All"
   }

Datei-Diff unterdrückt, da er zu groß ist
+ 428 - 434
Kitty_Fall/Kitty_Fall/Common/Connected Services/Kitty_FallVasWs/Reference.cs


+ 32 - 0
Kitty_Fall/Kitty_Fall/Kitty_Fall.Apis/Common/OracleTimeZoneInterceptor.cs

@@ -0,0 +1,32 @@
+using System.Data.Common;
+using Microsoft.EntityFrameworkCore.Diagnostics;
+using Oracle.ManagedDataAccess.Client;
+
+namespace Kitty_Fall.Apis.Common;
+
+// Older Oracle time zone files may not recognize the server's local zone.
+public sealed class OracleTimeZoneInterceptor : DbConnectionInterceptor
+{
+    public override InterceptionResult ConnectionOpening(
+        DbConnection connection, ConnectionEventData eventData, InterceptionResult result)
+    {
+        Configure(connection);
+        return result;
+    }
+
+    public override ValueTask<InterceptionResult> ConnectionOpeningAsync(
+        DbConnection connection, ConnectionEventData eventData, InterceptionResult result,
+        CancellationToken cancellationToken = default)
+    {
+        Configure(connection);
+        return ValueTask.FromResult(result);
+    }
+
+    private static void Configure(DbConnection connection)
+    {
+        if (connection is OracleConnection oracleConnection)
+        {
+            oracleConnection.UseHourOffsetForUnsupportedTimezone = true;
+        }
+    }
+}

+ 10 - 2
Kitty_Fall/Kitty_Fall/Kitty_Fall.Apis/Program.cs

@@ -7,7 +7,12 @@ using Kitty_Fall.Apis.Business;
 using System.Reflection;
 using System.Xml;
 
-// Myanmar Standard Time. Dung offset de Oracle cu khong phai resolve timezone region.
+// Use the server OS time zone, ignoring a process-level TZ override.
+// On Linux this uses /etc/localtime; configure the same zone inside a container.
+Environment.SetEnvironmentVariable("TZ", null);
+TimeZoneInfo.ClearCachedData();
+
+// Oracle session time is configured separately from the process/logging time zone.
 Environment.SetEnvironmentVariable("ORA_SDTZ", "+06:30");
 
 XmlDocument log4netConfig = new XmlDocument();
@@ -17,6 +22,8 @@ var repo = log4net.LogManager.CreateRepository(
     typeof(log4net.Repository.Hierarchy.Hierarchy)
 );
 log4net.Config.XmlConfigurator.Configure(repo, log4netConfig["log4net"]);
+LogManager.GetLogger(typeof(Program)).Info(
+    $"API clock: local={DateTimeOffset.Now:O}, utc={DateTimeOffset.UtcNow:O}, timezone={TimeZoneInfo.Local.Id}");
 
 var builder = WebApplication.CreateBuilder(args);
 
@@ -28,7 +35,8 @@ if (!string.IsNullOrWhiteSpace(oracleSessionTimeZone))
 
 // Add services to the container.
 builder.Services.AddDbContext<ModelContext>(options =>
-    options.UseOracle(builder.Configuration["Connection"]));
+    options.UseOracle(builder.Configuration["Connection"])
+        .AddInterceptors(new Kitty_Fall.Apis.Common.OracleTimeZoneInterceptor()));
 
 builder.Services.AddScoped<IUserBusiness, UserBusinessImpl>();
 builder.Services.AddScoped<IGameBusiness, GameBusinessImpl>();

+ 6 - 6
Kitty_Fall/Kitty_Fall/Kitty_Fall.Website/Language/Lang.vi.resx

@@ -142,19 +142,19 @@
     <value>နေ့စဉ်ပက်ကေ့ဂျ်</value>
   </data>
   <data name="GetFiveTurnsEveryDay" xml:space="preserve">
-    <value>နေ့စဉ် ၅ လှည့် ရယူလိုက်ပါ။</value>
+    <value>အလှည့် ပက်ကေ့ဂျ် တစ်ခု ရွေးချယ်ပါ</value>
   </data>
   <data name="SubscriptionAutoRenewDaily" xml:space="preserve">
     <value>စာရင်းသွင်းမှုကို နေ့စဉ် အလိုအလျောက် သက်တမ်းတိုးပါ</value>
   </data>
   <data name="SubscribeNow" xml:space="preserve">
-    <value>ယခုပဲ စာရင်းသွင်းလိုက်ပါ</value>
+    <value>အလှည့်ဝယ်ရန်</value>
   </data>
   <data name="BuyTurn" xml:space="preserve">
-    <value>ဝယ်လှည့်</value>
+    <value>အလှည့်ဝယ်ရန်</value>
   </data>
   <data name="SelectTurnPackage" xml:space="preserve">
-    <value>အလှည့်အထုပ်တစ်ခု ရွေးချယ်ပါ</value>
+    <value>အလှည့် ပက်ကေ့ဂျ် တစ်ခု ရွေးချယ်ပါ</value>
   </data>
   <data name="ConfirmBuyTurn" xml:space="preserve">
     <value>ဝယ်ယူမှုအလှည့်ကို အတည်ပြုပါ</value>
@@ -229,7 +229,7 @@
     <value>မုဒ်</value>
   </data>
   <data name="ConfirmSubscription" xml:space="preserve">
-    <value>စာရင်းသွင်းမှုကို အတည်ပြုပါ</value>
+    <value>စာရင်းသွင်းမှုကိုအတည်ပြုပါ</value>
   </data>
   <data name="SubscriptionIntro" xml:space="preserve">
     <value>package ကို Subscribe လုပ်ပြီး ဆုလာဘ်တွေကို ပိုမိုခံစားလိုက်ပါ။</value>
@@ -304,7 +304,7 @@
     <value>ဦးဆောင်သူစာရင်း မတွေ့ပါ</value>
   </data>
   <data name="DailyWinnerList" xml:space="preserve">
-    <value>နေ့စဉ်ဆုရှင်စာရင်း</value>
+    <value>နေ့စဉ် ဆုရှင်စာရင်း</value>
   </data>
   <data name="DailyWinners" xml:space="preserve">
     <value>နေ့စဉ်အနိုင်ရရှိသူများ</value>

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.