From cec25660d80bafcdf0ce432702c9460334ec0dae Mon Sep 17 00:00:00 2001 From: "Joanne.Chuang" Date: Tue, 13 Jan 2026 18:58:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=ABSeq?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Altob.NtuInvoiceGateway.csproj | 15 ++++--- Altob.NtuInvoiceGateway/Pages/Invoice.cshtml.cs | 20 ++++++++++ Altob.NtuInvoiceGateway/Program.cs | 43 ++++++++++++++------- Altob.NtuInvoiceGateway/appsettings.json | 20 ++++++++++ Altob.NtuInvoiceGateway/wwwroot/favicon.ico | Bin 5430 -> 5686 bytes 5 files changed, 80 insertions(+), 18 deletions(-) diff --git a/Altob.NtuInvoiceGateway/Altob.NtuInvoiceGateway.csproj b/Altob.NtuInvoiceGateway/Altob.NtuInvoiceGateway.csproj index 5a25aeb..66267b6 100644 --- a/Altob.NtuInvoiceGateway/Altob.NtuInvoiceGateway.csproj +++ b/Altob.NtuInvoiceGateway/Altob.NtuInvoiceGateway.csproj @@ -1,9 +1,14 @@ - - net9.0 - enable - enable - + + net9.0 + enable + enable + + + + + + diff --git a/Altob.NtuInvoiceGateway/Pages/Invoice.cshtml.cs b/Altob.NtuInvoiceGateway/Pages/Invoice.cshtml.cs index 83dcf2a..c761ccf 100644 --- a/Altob.NtuInvoiceGateway/Pages/Invoice.cshtml.cs +++ b/Altob.NtuInvoiceGateway/Pages/Invoice.cshtml.cs @@ -33,6 +33,7 @@ public class InvoiceModel : PageModel public InvoiceRequest InvoiceData { get; set; } = new(); public string? ErrorMessage { get; set; } + [TempData] public string? SuccessMessage { get; set; } public string CompanyName => _companyInfo.Name; public string CompanyTaxId => _companyInfo.TaxId; @@ -43,6 +44,7 @@ public class InvoiceModel : PageModel public void OnGet() { + RestoreDisplayValuesFromTempData(); // GET 方法保留為空,主要接收方式改為 POST JSON } @@ -196,8 +198,11 @@ public class InvoiceModel : PageModel if (apiResponse?.msgCode == "0000") { SuccessMessage = "發票資訊提交成功!"; + TempData[nameof(DisplayTransDateTime)] = DisplayTransDateTime; + TempData[nameof(DisplayTransAmount)] = DisplayTransAmount; _logger.LogInformation("{ServiceName} - {ActionName} submitted successfully for OrderID: {OrderID}", ServiceName, actionName, InvoiceData.OrderID); + return RedirectToPage(); } else { @@ -236,4 +241,19 @@ public class InvoiceModel : PageModel InvoiceData.LoveCode = InvoiceData.LoveCode ?? string.Empty; InvoiceData.TaxType = InvoiceData.TaxType ?? string.Empty; } + + private void RestoreDisplayValuesFromTempData() + { + if (TempData.TryGetValue(nameof(DisplayTransDateTime), out var transDateObj) && + transDateObj is string transDate) + { + DisplayTransDateTime = transDate; + } + + if (TempData.TryGetValue(nameof(DisplayTransAmount), out var amountObj) && + amountObj is string amount) + { + DisplayTransAmount = amount; + } + } } diff --git a/Altob.NtuInvoiceGateway/Program.cs b/Altob.NtuInvoiceGateway/Program.cs index efa201d..9a24c4c 100644 --- a/Altob.NtuInvoiceGateway/Program.cs +++ b/Altob.NtuInvoiceGateway/Program.cs @@ -1,5 +1,15 @@ +using Serilog; + var builder = WebApplication.CreateBuilder(args); +builder.Host.UseSerilog((context, services, configuration) => +{ + configuration + .ReadFrom.Configuration(context.Configuration) + .Enrich.FromLogContext() + .Enrich.WithProperty("ServiceName", "NtuInvoiceGateway"); +}); + // Add services to the container. builder.Services.AddRazorPages(); builder.Services.AddHttpClient(); @@ -12,22 +22,29 @@ builder.Services.Configure( var app = builder.Build(); -// Configure the HTTP request pipeline. -if (!app.Environment.IsDevelopment()) +try { - app.UseExceptionHandler("/Error"); - // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. - app.UseHsts(); -} + // Configure the HTTP request pipeline. + if (!app.Environment.IsDevelopment()) + { + app.UseExceptionHandler("/Error"); + // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. + app.UseHsts(); + } -app.UseHttpsRedirection(); + app.UseHttpsRedirection(); -app.UseRouting(); + app.UseRouting(); -app.UseAuthorization(); + app.UseAuthorization(); -app.MapStaticAssets(); -app.MapRazorPages() - .WithStaticAssets(); + app.MapStaticAssets(); + app.MapRazorPages() + .WithStaticAssets(); -app.Run(); + app.Run(); +} +finally +{ + Log.CloseAndFlush(); +} diff --git a/Altob.NtuInvoiceGateway/appsettings.json b/Altob.NtuInvoiceGateway/appsettings.json index 532d850..730ffa3 100644 --- a/Altob.NtuInvoiceGateway/appsettings.json +++ b/Altob.NtuInvoiceGateway/appsettings.json @@ -5,6 +5,26 @@ "Microsoft.AspNetCore": "Information" } }, + "Serilog": { + "Using": [ "Serilog.Sinks.Seq" ], + "MinimumLevel": { + "Default": "Information", + "Override": { + "Microsoft": "Warning", + "System": "Warning" + } + }, + "WriteTo": [ + { + "Name": "Seq", + "Args": { + "serverUrl": "http://localhost:5341", + "apiKey": "" + } + } + ], + "Enrich": [ "FromLogContext" ] + }, "AllowedHosts": "*", "CompanyInfo": { "Name": "國立台灣大學臨時停車場", diff --git a/Altob.NtuInvoiceGateway/wwwroot/favicon.ico b/Altob.NtuInvoiceGateway/wwwroot/favicon.ico index 63e859b476eff5055e0e557aaa151ca8223fbeef..ef9890fbc9b1bafc3c68d99a7cec673f4bb897a5 100644 GIT binary patch literal 5686 zcmeHL30Txc6dx_ivV-itQ4}%FGqo(k67BG|%*@QxFtoD6%t%W)1QEGJMW7Hw5U&)F zRN|0;xX+dQ*o8f~kA;QhSoZnepW|acSma#$`ke0@W_JGX&F{^7GrxHQW5d{RrlrNO z9m$MFFs92G)7GZn+RO*XZE;Kw$FPedt#a5*5nbkKQ7W0eIFyqk*(r&Z z%(U=Ihc1m#U6<*>(&~y-^h2w&+3e&)9lGtZom;(lb7mpD#u96VtVSVM(a)$WW{1UL z%$V=T=GmF}uy!-RM<75nv5?O8C&H7XS<`o0yZoZjRFiw^xo zyraxU6wFd&BDN*xG~1echQ-wusOWXxJ5pRzs!YrbQP!;RDl2c6v15{Owep>H)%7ie zfn97>C)?e42*$;|B)Z==C~-d-<@m60XJLP}k0pw3` zFNuMCdAY_{lwDs6i_@F{?*Z76e-V)THC7U83t?K~0hp0w1^yL0#MT@-`FeVy6&Uc2 zKtV&L#@0+g&B_*7neGbusSbd7g+{Rn409O3yBv6R5{+Y1gqNl{1LiIo$0k6E^~3~o zD7g)OCwxEL=j*dhQg_G-=1zb)7@R1M2FxX)zNM)H%SjRrHlmP@--FSim`WO@AZVz7 zhL&d7kmbqo32_S5S;^KAPz~Puz;5I9;+kQkoBT;!wcc5~6GPpit6i-^%v9^Ih=T*WS6+MH_bUePM4w00B^VcPG9Ww1UfNG#)j4Y2AyYI0zGXO{Qhdj> z?Ze)#^;U8;-)@1wT6}yL!OWzC170WDfp1PQ%<%?efgj-870*i|;QNxhuhbfVANaUm zx1kRvCF~!N9ppcnCs`)y2~O=d;<+T5utz(H`zhb($?rOGCLBk{)(ZNZk&q3`(_Olq zpYHt3`eN?hrG3?t4fKu9D!zY#_`ENLIG8wYb%qZ Z2rhFxGE{hX=Dp*A!SF!azX5Jra})i-sv7_R literal 5430 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