From b264567dfdab756427a083d2d4e0e3064360cc5e Mon Sep 17 00:00:00 2001 From: Jerry Phillips Date: Sat, 23 May 2026 18:12:14 -0400 Subject: [PATCH 1/3] fix(api): fall back to email when admin user has no display name in audit log --- JobFlow.Infrastructure/Security/AuditLogService.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/JobFlow.Infrastructure/Security/AuditLogService.cs b/JobFlow.Infrastructure/Security/AuditLogService.cs index 6c09259..85be4be 100644 --- a/JobFlow.Infrastructure/Security/AuditLogService.cs +++ b/JobFlow.Infrastructure/Security/AuditLogService.cs @@ -95,7 +95,11 @@ orderby a.CreatedAt descending OrganizationName = o != null ? o.OrganizationName : null, OrganizationEmail = o != null ? o.EmailAddress : null, UserId = a.UserId, - UserDisplayName = u != null ? (u.FirstName + " " + u.LastName).Trim() : null, + UserDisplayName = u != null + ? (u.FirstName != null || u.LastName != null + ? (u.FirstName ?? "") + " " + (u.LastName ?? "") + : u.Email) + : null, Category = a.Category, Action = a.Action, ResourceType = a.ResourceType, From a1696ebf277c2270302f6f90c2bd19ef0376b760 Mon Sep 17 00:00:00 2001 From: Jerry Phillips Date: Sat, 23 May 2026 22:51:52 -0400 Subject: [PATCH 2/3] fix(api): [AB#266] guard null InvoiceId in Stripe payment intent metadata --- .../PaymentGateways/Stripe/StripePaymentProcessor.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/JobFlow.Infrastructure/PaymentGateways/Stripe/StripePaymentProcessor.cs b/JobFlow.Infrastructure/PaymentGateways/Stripe/StripePaymentProcessor.cs index 49719e2..a0750e3 100644 --- a/JobFlow.Infrastructure/PaymentGateways/Stripe/StripePaymentProcessor.cs +++ b/JobFlow.Infrastructure/PaymentGateways/Stripe/StripePaymentProcessor.cs @@ -103,10 +103,9 @@ public async Task CreatePaymentIntentAsync( Destination = request.ConnectedAccountId }, - Metadata = new Dictionary - { - { "invoiceId", request.InvoiceId!.Value.ToString() } - } + Metadata = request.InvoiceId.HasValue + ? new Dictionary { { "invoiceId", request.InvoiceId.Value.ToString() } } + : null }; var service = new PaymentIntentService(); From b929dc83cf3e5d33b752822c7e376cd459ef639d Mon Sep 17 00:00:00 2001 From: Jerry Phillips Date: Sat, 23 May 2026 22:51:56 -0400 Subject: [PATCH 3/3] feat(api): [AB#151] add QuickBooksSettings section to appsettings.Development.json --- JobFlow.API/appsettings.Development.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/JobFlow.API/appsettings.Development.json b/JobFlow.API/appsettings.Development.json index a747f8f..ac4a56e 100644 --- a/JobFlow.API/appsettings.Development.json +++ b/JobFlow.API/appsettings.Development.json @@ -18,5 +18,11 @@ }, "Backend": { "BaseUrl": "http://localhost:5131" + }, + "QuickBooksSettings": { + "ClientId": "YOUR_QB_CLIENT_ID", + "ClientSecret": "YOUR_QB_CLIENT_SECRET", + "RedirectUrl": "http://localhost:5131/api/quickbooks/callback", + "UseSandbox": true } }